戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

OpenWRT/LEDE路由器搭建OpenVPN服务器

日期:2017年10月16日 作者: 分类:运维 阅读:528

硬件:NETGEAR WNDR3800 v1

系统:LEDE 17.01.3

关于OpenWRT和LEDE的关系,此处不多啰嗦,可自行Google之。至于路由器如何刷LEDE,网上有大把优秀的教程,此处也不赘述。

一、安装搭建openvpn所需要的软件

首先,ssh登录路由器并更新软件源:

# 登录路由器
ssh root@192.168.1.1

# 更新软件源
opkg update

更新完成后安装需要的软件:

opkg install openvpn-easy-rsa openvpn-mbedtls

阅读全文…

ffmpeg将DVD视频合并转换为mp4格式

日期:2017年08月28日 作者: 分类:运维 阅读:293

以前有保存一个演唱会的DVD原盘文件,格式为.ISO格式,如今DVD已经完全淘汰,画质体积也完全跟不上现在的视频,现在准备将其转制为mp4格式,方便播放。

一、挂载光盘文件

我的两张光盘文件存放在/var/storage/Music/chou下面,文件名为001.ISO002.ISO,此处只写出001.ISO的操作步骤。

首先创建/mnt/cd1目录,然后用如下命令挂载光盘:

# 以只读模式挂载
sudo mount -o ro /mnt/cd1 /var/storage/Music/chou/001.ISO

查看/mnt/cd1/VIDEO_TS下视频文件:

通过文件大小可以看出,真正的视频文件为VTS_02_*.VOB这些文件。

阅读全文…

免费SSL证书Let’s Encrypt安装使用教程

日期:2017年07月31日 作者: 分类:运维 阅读:429

Let’s Encrypt有什么样的背景有多牛逼,请自行Google

本文内容参考官网教程,需要的可以直接浏览官网教程,上面有各种环境下配置使用的教程。

本人博客使用Nginx + CentOS 7组合,要查看官方教程,请浏览https://certbot.eff.org/#centosrhel7-nginx

安装

Let’s Encrypt官方提供了certbot这个工具供我们管理证书使用,certbot软件包已经收录在epel源中,epel源安装可以直接参考使用中科大epel镜像源,国内使用速度更快。已经安装的可以跳过此步骤。

完成epel源安装后,执行如下命令:

$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

执行安装完成后,就可以安装certbot了,命令如下

$ sudo yum install certbot-nginx

阅读全文…

[转载] 多言与寡言

日期:2017年04月26日 作者: 分类:随笔 阅读:326

母亲的话近年来越发多了。有时我们大半天共处一室,她的话似乎从没停过,像拧开的水流漫卷过整间房,一不留神,我便卷入旋涡中。一旦说起来,瘦弱的母亲总像是变成了另一个人,一个有着好体力的人。婆婆在世时亦是个爱说的人。她的人生经历并不复杂,所到之处也不多,可她说了一辈子,与亲朋,与邻里,包括住院时结交的护士。一根针,一缕纱,都有着广阔的说道。

两位老人每每碰上,真是一相逢便胜却无数——说者不倦,听者不厌。这样的辰光对她俩都是愉悦的,如果手边再剥着豆子或择着菜,那画面真近乎完满了。聊天,对于她们来说,是种比保健品更有效的滋养,在回旋往复的“说”中,她们的人生得到梳理、交流与认同。

她们又让我想起在公园或菜场遇见的那些老妇。即便年纪大了,她们凑在一起交谈的样子依然让人想到闺中姐妹,总有说不完的体己话。再糟糕的人生,在这些体己话中大概也能获得一些安慰。

不爱说的人,当他们老了,又该从哪里得到慰藉呢?他的“说”要落在语言之外的什么地方?影视、书、植物,又或其他什么,甚至一只养出情分的猫狗——不说什么,但有一种超越类属的彼此关照和相知,有时也胜过千言。

阅读全文…

Python之利用PIL批量给图片添加文字

日期:2017年04月11日 作者: 分类:编程 阅读:626

因为略懂Photoshop,所以接到一个任务:将公司所有的产品图片整理出来,并在图片中写明产品的品牌和型号,然后分类放在iPad中方便给客户展示。

WTF,几千张图片,用PS一个个打开添加文字,这会把人弄疯的,作为一个懒人,做这种大量机械性的重复工作显然不是我的追求,于是就想到用程序自动实现。

一、使用Python和PIL图片处理库

思路:所有图片的文件名都是以品牌+型号的方式命名,所以先用python读取当前目录下所有文件,得到文件名后我们就可以得到当前图片的品牌型号字符串,然后根据图片像素大小自动判断合适的字体大小,再利用PIL库给原图片加上文字水印(品牌型号),然后将处理后的图片保存在当前目录下的new子文件夹。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import os
import sys

import PIL
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

# 设置文字水印
def set_water_text(imagefile, text):

    img = Image.open(imagefile)
    (img_x, img_y) = img.size
    
    # 文字字体像素高度为图片高度的 1/20
    ttfont = ImageFont.truetype('/usr/share/fonts/noto/NotoSansCJK-Regular.ttc', int(img_y/20))

    draw = ImageDraw.Draw(img)
    draw.text((int(img_x/20), img_y - int((img_y*1.3)/20)), text, (0,0,0), font=ttfont)

    newdir = "new"
    if not os.path.exists(newdir):
        os.mkdir(newdir)

    img.save(newdir + '/' + text + '.jpg', 'jpeg')

if __name__ == '__main__':
    files = os.listdir(os.getcwd())
    for filename in files:
        if 'jpg' == filename.split('.')[-1].lower() or 'png' == filename.split('.')[-1].lower():
            set_water_text(filename, filename.split('.')[0])
            print(filename)

阅读全文…

Linux中su与sudo、su – root的区别

日期:2017年01月11日 作者: 分类:运维 阅读:1,357

一、su 和 sudo 的区别

共同点:都是root用户的权限;

不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。

二、su – root 和 su root(su)的区别

su – root:表示人以root身份登录

just like login as root, then the shell is login shell,which mean it will expericene a login process,usually .bash_profile and .bashrc will be sourced

su root:表示与root建立一个链接,通过root执行命令

like you open an interactive shell in root name,then only .bashrc will be sourced.

阅读全文…

windows下安装64位mysql 5.7

日期:2016年11月04日 作者: 分类:数据库 阅读:1,280

操作系统:windows 7 64bit

数据库:mysql-5.7.16-winx64

数据库软件包:mysql-5.7.16-winx64.zip

一、准备相关文件

1. 解压mysql-5.7.16-winx64.zip,我这里直接解压到D盘,解压后得到mysql-5.7.16-winx64目录

2. 为了方便,我将mysql-5.7.16-winx64改名为mysql57,这样,我的mysql数据库的路径就为 D:\mysql57

3. 进入 D:\mysql57目录,将 my-default.ini 改名为my.ini

4. 用文本编辑器打开 my.ini 文件,修改相关配置

[mysqld]
# 数据库的根目录
basedir = D:\\mysql57
# 数据存放目录
datadir = D:\\mysql57\\data
# 端口
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

阅读全文…

Docker实战(六)搭建自己的Docker Registry

日期:2016年05月04日 作者: 分类:运维 阅读:3,247

Docker Registry 是一个用来管理Docker镜像的服务,本身也是一个Docker容器。大部分情况下都可以使用Docker Hub,私有的Docker Registry使用场景主要在当需要对容器镜像存储进行完全控制或需要把镜像管理进行集成的情况。

一、Docker Registry 部署

由于 Docker Registry 已经被制作成一个Docker镜像,所以安装部署非常简单,只需要按照我们通常的docker run就可以,如果本地没有 registry 的镜像,则会自动从 Docker Hub 上获取。

需要注意的是 Registry 默认的对外服务端口是 5000,如果我们宿主机上运行的 Registry 需要对外提供服务,可以通过映射端口的方式提供。

本节实验中我们使用 registry:2 镜像,这个镜像为2.0版本的Registry。

部署 Docker Registry的命令:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

停止和删除 Registry 只需要用容器管理中学到的 docker stopdocker rm命令。

阅读全文…

Docker实战(五)编写Dockerfile

日期:2016年05月03日 作者: 分类:运维 阅读:1,963

目标:编写Dockerfile搭建LAMP环境,并能通过ssh连接到容器。

一、创建Dockerfile文件

首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件:

编写Dockerfile

二、Dockerfile 基本框架

Dockerfile一般包含下面几个部分:

  1. 基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称
  2. 维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱
  3. 镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令
  4. 容器启动命令:当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD 命令ENTRYPOINT

在本节实验中,我们依次先把这四项信息填入文档。Dockerfile中的#标志后面为注释,可以不用写。

打开Dockerfile,依次输入下面的基本框架内容:

阅读全文…

Docker实战(四)网络管理

日期:2016年04月29日 作者: 分类:运维 阅读:1,255

一、Docker网络基本配置

1)默认配置

Docker服务启动时会自动创建一个 docker0 的虚拟网桥,后续新创建的容器都会有个虚拟接口连接到这个网桥:

Docker网络管理

Docker网桥会设置为NAT模式,自动分配一个网段,本机环境中docker0的地址是172.17.0.1,每个容器都会自动分配的到一个IP地址。

可以通过docker inspect redis查看名为redis容器的网络配置信息。

我们可以为 Docker 服务指定不同的网桥以及网段,这些配置都可以写在 /etc/default/docker 文件中,作为服务启动的参数。

2)配置文件 /etc/default/docker

该文件为LMDE2 操作系统中 Docker 服务启动时使用的配置文件,不同的操作系统位置会有不同。这个文件本身是个 Shell 脚本。

首先查看文件内容:

阅读全文…