我们的目标是,不更换域名的情况下,无缝迁移wordpress网站,或者叫尽快完成服务器切换,减少down机时间。
本文原创发布于atrandys.com,任何转发不注明原文链接者都是小偷,转发/借鉴带原文链接是最基本的道德,本文固定链接:https://www.atrandys.com/2020/2599.html。
wordpress迁移服务器步骤总结
- 在新服务器上搭建wordpress运行环境,主要包括PHP/MYSQL/NGINX等软件的安装。
- DNS服务商尽量使用cloudflare等解析生效快的服务商,这样基本上数秒内就能将域名解析到新的IP地址
- 备份mysql数据库,scp传输到服务器
- scp将wordpress的文件全部传输到新的服务器
- scp将nginx证书及配置传输到新的服务器
- 恢复mysql数据库
- 重启nginx,网站正常访问
wordpress迁移服务器教程
使用脚本搭建wordpress环境
这个脚本是专门改了一下,用来手动迁移环境时,自动安装nginx、mysql、php的。
curl -O https://raw.githubusercontent.com/atrandys/wordpress/master/wp_manual.sh && bash wp_manual.sh
安装完成之后会显示数据库密码,一定要保存下来,后面步骤要用到。
备份mysql数据库并传输到新服务器中并恢复数据库
使用以下命令将数据库备份,注意密码是旧服务器上的数据库密码,如果忘记了可以在/usr/share/nginx/html/wp-config.php文件中查看(本站脚本配置的nginx web目录是/usr/share/nginx/html/,如果你的不是,请自己去web目录下找)
mysqldump -uroot -p --all-databases > all.sql
然后传输到新服务器的/usr/share/nginx/目录,命令中-P是ssh的端口,1.1.1.1是新服务器的IP地址,自行替换一下
scp -P 22 ./all.sql [email protected]:/usr/share/nginx/
然后输入新服务器的root密码,完成传输,然后进入新服务器,登录mysql
mysql -uroot -p
输入新服务器的数据库root用户的密码,登录进mysql,然后执行恢复数据库命令
source /usr/share/nginx/all.sql
等待执行完成即可,然后重启mysql
systemctl restart mysql
将wordpress文件全部传输新服务器中
本站一键脚本设置的nginx的web目录是/usr/share/nginx/html/,我们将html目录直接打包传输到新服务器(如果你的nginx web目录是其他路径,请自行替换)
cd /usr/share/nginx/
将html目录及下级文件全部打包
tar -zcvf ./html/
将打包好的文件传输到新服务器的/usr/share/nginx/目录下,命令中-P是ssh的端口,1.1.1.1是新服务器的IP地址,自行替换一下
scp -P 22 ./html.tar.gz [email protected]:/usr/share/nginx/
以上命令需要你输入新服务器的root密码,然后等待完成传输即可。传输完成之后,进入新服务器的/usr/share/nginx/目录,然后解压
cd /usr/share/nginx/ && rm -rf ./html/ && tar -zxvf html.tar.gz
将nginx证书及配置传输到新服务器中
将证书上传到新服务器中,需要输入新服务器的密码
scp -P 22 /etc/nginx/ssl/* [email protected]:/etc/nginx/ssl/*
将nginx配置文件上传到新服务器中,需要输入新服务器的密码
scp -P 22 /etc/nginx/conf.d/* [email protected]:/etc/nginx/conf.d/*
解析域名到新的服务器IP地址
去你的域名服务商或者DNS服务商,修改域名指向新服务器的IP地址,注意生效时间不同服务商可能不同,从几秒到几个小时不等。
个人使用cloudflare的dns解析体验,更换IP后解析生效非常快。
重启nginx,网站恢复访问
systemctl restart nginx
手动安装acme.sh,申请证书并启动自动续签
重新申请一下证书,注意www.your_domain.com是你的域名,如果是多域名,例如your_domian.com和www.your_domian.com,那么你的命令中多加一个-d your_domian.com
~/.acme.sh/acme.sh --issue --force -d www.your_domain.com --nginx
重新安装新证书,证书会自动续签,注意www.your_domain.com是你的域名
~/.acme.sh/acme.sh --installcert -d www.your_domain.com \--key-file /etc/nginx/ssl/www.your_domain.com.key \--fullchain-file /etc/nginx/ssl/fullchain.cer \--reloadcmd "systemctl restart nginx"