腾讯云的轻量服务器好便宜
迁移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