记一次博客搬家

因为host1plus的套餐变动,强行修改了老用户的套餐,一下子把我的2刀的套餐改成了12.5刀...然后他们家服务器到大陆的速度巨慢,所以决定换个其他厂的,过程呢也搞了几天,也遇到了一些坑,方便自己日后快速迁移还是把相关的操作记录下来,不然忘记了又要花大量重复时间来找一堆blog翻来翻去巨烦

新的vps用了谷歌家的,原因无他,快,稳定,最爽的是还新用户赠送300刀,足够新用户最低配运行一年了。其中也看了一些其他厂的,例如什么vultr这种,看着他们家有东京机房我试了一下,结果发现连ssh都登不上,翻墙后是可以的,其他机房也是巨慢,悉尼的好像也有被墙了,果断放弃,其中还有人推荐搬瓦工,这种水表大户就算了,保不定哪天起床发现vps就失联了,还有个朋友推荐Amazon EC2的似乎也很不错,我没细看。虽然谷歌的是贵,但是完全不想再为那些厂商各种问题浪费生命了

这次过程包括了shadowsocks server配置,Wordpress搬迁,证书配置和frp配置

搭建ss服务器,把我ss服务的费用也省了。然后之前用的虽然有几十个节点但是时不时就这个连不上那个连不上,大概是这种大规模的服务很容易被gfw识别出来吧,干脆自己搭个自己用,也不容易被盯上,用了几天谷歌除了速度不太稳定以外没有出现过连不上的情况

# 安装相关包
$ sudo yum install python-gevent python-pip
$ sudo pip install shadowsocks
$ sudo yum install python-m2crypto
# 编辑配置文件
$ sudo vi /etc/shadowsocks_multi_user.json

配置文件内容

{
    "server":"0.0.0.0",
    "local_port":1080,
    "port_password":{
        "38288":"password1",
        "38289":"paasswod2",
        "38290":"password3"
    },
    "timeout":600,
    "method":"aes-256-cfb"
}

这个时候你可以使用下面的启动命令

# 启动命令
$ ssserver -c /etc/shadowsocks_multi_user.json -d start

看到下面信息,配置好客户端就可以愉快的网上冲浪

INFO: loading config from /etc/shadowsocks_multi_user.json
2018-11-19 07:39:06 INFO     loading libcrypto from libcrypto.so.10
started

关闭ss命令

$ ssserver -c /etc/shadowsocks_multi_user.json -d stop

当然我要做的更多些,例如加入个开机自启动什么的, centos从7开始使用systemctl来管理开机任务了,每个任务都要为之编写一个service文件放在/etc/systemd/system目录下,关于systemctl的更多介绍自行补习吧。我不多讲了,直接编写shadowsocks的开机任务文件,内容如下

$ vi /etc/systemd/system/shadowsocks.service 

shadowsocks.service
文件内容

[Unit] 
Description=shadowsocks server 
After=network.target 

[Service] 
Type=forking 
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks_multi_user.json -d start 
ExecReload=/usr/bin/ssserver -c /etc/shadowsocks_multi_user.json -d restart 
ExecStop=/usr/bin/ssserver -d stop 
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target

保存完成后

# 加入开机任务
$ sudo systemctl enable shadowsocks 

重启就OK了,你还可以用sudo systemctl status shadowsocks查看他的运行状态,如果是runing就是正常了

搬迁Wordpress没啥好说的,我是直接复制整个目录过去/var/www/html/目录就可以了,这里有个坑,就是最好关掉centos的SELinux功能,这个破东西坑了我好几次,出现一些莫名奇妙的问题,修改配置文件关闭SELinux

$ sudo vi /etc/sysconfig/selinux

将其中的

SELINUX=enforcing

改成

SELINUX=permissive

重启一下继续下面步骤

安装apache server和数据库和php环境,因为好像centos已经将mysql踢出去了,所有对mysql的安装请求都会重定向到mariadb,没关系,就wp的应用来说,mariadb完全适配你之前对mysql的配置的,安装相关程序命令如下

$ sudo yum install httpd mariadb-server mariadb php php-mysql -y

将apache和mariadb加入开机自启动

sudo systemctl enable httpd
sudo systemctl enable mariadb
sudo systemctl start httpd
sudo systemctl start mariadb

至此,把wp的数据库备份过来,博客可以正常运行了

接下来就要搞证书,毕竟现在这网络环境不走https几乎过不下去了,之前因为没有加https,我的博客居然被劫持了,放上了运营商的广告,而且还不是一家运营商这么做,当时测试了长城和移动都出现了...这是导致我全网改走https的直接原因

安装证书步骤如下

# 安装相关包
$ sudo yum install epel-release
$ sudo yum install mod_ssl python-certbot-apache
# 设置防火墙
$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https
$ sudo firewall-cmd --runtime-to-permanent

确定apache服务器处于正常运行状态

# 分别用http和httpss测试博客是不是可以正常访问到,正常就是返回主页的html
$ curl example.com
$ curl -k https://example.com

正常的话继续执行
$ sudo certbot --apache -d example.com -d www.example.com

按照提示一步一步选择和填入信息,最后出现Congratulations!j就是成功了,le的证书三个月就要renew一下不然就会过期,所以我们要写个定时任务让他自动renew

$ sudo crontab -e

加入

30 2 * * * /usr/bin/certbot renew >> /var/log/le-renew.log

保存,至此证书配置完毕

因为用着gcp的最低配,结果发现跑了wordpress之后已经没没有足够内存跑mariadb了,然后为了让在墙角吸灰的树莓派继续发光发热,我就决定用frp将树莓派转出去,用来挂数据库

分别在vps和树莓派上安装frp服务器端程序和frp客户端程序,然后编写frps的service文件,树莓派上数据库授权vps的网络访问权限,并且修改配置文件允许外网访问,然后就OK了

服务器端service文件

$ cat /etc/systemd/system/frp.service
[Unit]
Description=frp transport
After=network.target syslog.target

[Service]
Type=simple
ExecStart=/opt/frp_0.20.0_linux_amd64/frps -c /opt/frp_0.20.0_linux_amd64/frps.ini
PrivateTmp=true

[Install]
WantedBy=multi-user.target

服务器端frps.ini文件

$ cat /opt/frp_0.20.0_linux_amd64/frps.ini
[common]
bind_port = 33306

#连接池
max_pool_count = 5

#token验证
privilege_token = denghj

#自定义二级域名
subdomain_host = frp.dam.moe

#控制面板
dashboard_port = 31415
#管理面板用户名
dashboard_user = uussrr
#管理面板密码
dashboard_pwd = password123

#日志
log_file = ./frps.log
log_level = info
log_max_days = 3

客户端配置文件frpc.ini

数据库授权vps连接

# 例如IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION; 
mysql> flush privileges

数据库修改配置文件

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉改行保存,重启数据库
bind-address          = 127.0.0.1

服务器端启动命令

$ frps -c frps.ini

客户端启动命令

$ frpc -c frpc.ini