背景
最近aliyun 200M的香港轻量云要到期了,考虑到其限速比较频繁,打算整体迁移到 tencentcloud 的竞品上,后者目前为止没碰见过限速问题。
考虑到可预见的未来里,可能还会经历几次迁移,所以记录下迁移步骤。
目前来看整体可分为 4 部分:
- php环境安装及wordpress项目源码部署
- mysql数据库的部署及数据迁移
- nginx环境安装及配置迁移
- certbot部署
php环境安装及wordpress项目源码部署
备份项目源码为backup.zip
zip -r backup.zip /data/app/*
还原备份,注意需要把源码权限与 nginx 的执行账户对齐,默认www-data,否则 wordpress 的更新操作会提示需要ftp登录权限。
cd /data/app/
unzip backup.zip
chmod -R 777 /data/app/*
chown -R www-data:www-data /data/app/*
环境部署,安装一些常见扩展,后续可通过检查fpm错误日志/var/log/php8.2-fpm.log
判断是否有其他扩展缺失。
apt install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml
mysql数据库的部署及数据迁移
使用mysqldump
备份数据库,假设对a_wordpress
与b_wordpress
两个数据库进行备份,并保存为backup.sql
文件。
mysqldump -uroot -hlocalhost -p -B a_wordpress b_wordpress > backup.sql
还原数据库,登录数据库并使用 source 命令还原
source backup.sql
数据库部署,参考了官方文档。如果仅做迁移,建议新老数据库密码保持一致,省了更改 wordpress 配置。
apt install lsb-release
wget https://repo.mysql.com/mysql-apt-config_0.8.34-1_all.deb
dpkg -i mysql-apt-config_0.8.34-1_all.deb
apt update
apt install mysql-server
nginx环境安装及配置迁移
备份
zip -r nginx_conf.zip /etc/nginx/sites-enabled/*
还原,先删除默认配置,通常只有 default 文件,再恢复。
rm -r /etc/nginx/sites-enabled/*
unzip nginx_conf.zip
安装 nginx,debian 默认运行 apache,可以先停掉,否则端口冲突nginx无法启动。
service apache2 stop
apt install nginx
service nginx start
启动nginx的时候可能会报错,因为我们尚未申请证书,老配置文件中与证书相关的部分可以先删掉,先让 nginx 启动起来。
certbot部署
部署certbot,申请证书并加入 crontab 定时续期,参考了官方文档。
apt install python3.11-venv
python3 -m venv /opt/certbot/
/opt/certbot/bin/pip install --upgrade pip
/opt/certbot/bin/pip install certbot certbot-nginx
ln -s /opt/certbot/bin/certbot /usr/bin/certbot
certbot --nginx
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | tee -a /etc/crontab > /dev/null