服务器搬迁过程

腾讯云的轻量服务器好便宜

迁移vps是个大活,一直拖了很久,主要受众在亚洲,而且每个月扣35很心疼,想办法从Vultr迁移到了良心云,只要九块八

对我来说迁移主要有四个部分:

  • Python 包
  • let's encrypt 签发的 SSL 证书
  • wwwroot/目录
  • mysql内数据库
  • nginx配置文件

准备一下

喜欢在/home/目录下做事,比如这次在/home/takeout/

首先需要在新主机里配置lnmp,当然是用一句话的安装脚本,脚本的网页

wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && ./install.sh lnmp

调整Python相关内容

旧主机

通过以下指令分别导出Python3和python2的模块文件

python3 -m pip freeze > Python_3_requirements.txt
python2.7 -m pip freeze > Python_2.7_requirements.txt

使用scp传输两个文件到新主机

scp Python_3_requirements.txt username@host:/home/takeout
scp Python_2.7_requirements.txt username@host:/home/takeout

新主机

首先要装下面这些东西,txt里的包才能正常全部装完,否则会出现mysql_config not found等问题。

sudo yum -y install python-devel mysql-devel pip

其次安装并配置Python3,让Python可以切换默认版本,在这篇文章里有介绍具体方法

然后就可以愉快的开跑


python -m pip install -r Vultr_3_requirements.txt 
python2 -m pip install -r Vultr_2.7_requirements.txt

SSL证书

被迁移的一方

首先需要手动更新一下证书,仪式感要有

/bin/certbot renew --force-renew --disable-hook-validation --renew-hook "/etc/init.d/nginx reload"

打包/etc/letsencrypt/目录,复制到新主机


tar -chvzf /home/takeout/letsencrypt.tar.gz /etc/letsencrypt
scp letsencrypt.tar.gz username@target.host:/home/takeout

新主机

大的来了!首先需要把打包的文件解压

tar -xvf letsencrypt.tar.gz

放到它应该在的地方

cp -r /home/takeout/etc/letsencrypt /etc/

cp不能复制链接文件,因此需要自己创建软连接。
通过cd /etc/letsencrypt/live进入相关目录,直接全选复制回车

    
for j in `ls -d  /etc/letsencrypt/live/*/ `;
do
j=(${j///// })
let count=0
for filename in `find /etc/letsencrypt/archive/${j[4]} -name 'cert*.pem' $1`; do
let count=count+=1
done
cd ${j[4]%?}
for i in cert chain fullchain privkey ;
do
rm -rf ${i}.pem
ln -s ../../archive/${j[4]}${i}${count}.pem ${i}.pem
done
cd ..
done

wwwroot/目录

被迁移的一方

和上面一样,打包/home/wwwroot/目录,复制到新主机

tar -chvzf wwwrootFile.tar.gz /home/wwwroot/
scp wwwrootFile.tar.gz username@target.host:/home/takeout

新主机

解包复制到目录

tar -xvf wwwrootFile.tar.gz
cp -r /home/takeout/home/wwwroot/ /home/

数据库

被迁移的一方

需要进到控制台查看需要的数据库名,lnmp环境,是mysql

mysql -u root -p
SHOW DATABASES;

和新主机对比一下,发现需要复制tbsign库和typecho库,先导出

mysqldump -u root -p tbsign >tbsign.sql
mysqldump -u root -p typecho >typecho.sql

再复制到新主机


scp tbsign.sql username@target.host:/home/takeout
scp typecho.sql username@target.host:/home/takeout

新主机

当然是去mysql控制台操作辣:

mysql -u root -p

创建数据库

CREATE DATABASE tbsign;

设置编码


use tbsign;
set names utf8;

导入表

source /home/takeout/tbsign.sql;

第二个同理:


CREATE DATABASE typecho;
use typecho;
set names utf8;
source /home/takeout/typecho.sql;

nginx配置文件

被迁移的一方

和上面一样,打包/home/wwwroot/目录,复制到新主机


tar -chvzf nginxFile.tar.gz /usr/local/nginx/
scp nginxFile.tar.gz username@target.host:/home/takeout

新主机

解包复制到目录

tar -xvf nginxFile.tar.gz
cp -r /home/takeout/usr/local/nginx /usr/local/

最后跑跑看?

重启nginx

service nginx restart

使用了uwsgi的工程是否能正常打开

uwsgi --ini /home/wwwroot/fofu.dispnt.com/uwsgi_config.ini

dryrun一下试试

certbot renew www.dispnt.com --dry-run
Edit with Markdown