前言
WordPress迁移可以分为以下几种情况:
- 仅更改域名
- 仅更改服务器
- 变更域名+服务器
下面就以这三种情况,可以实现的方式有很多,选取了一种适合自己的,把需要进行的操作记录下来,方便整理回顾。下面出现$的统一为命令,请注意本文所有操作是基于基础环境为centos7+nginx+mysql+php+wordpress,其它环境可能不适合。
仅更改域名
1-1、新域名添加解析
把新申请的域名new.com在域名解析中添加A记录,填写需要指向的服务器IP地址
A IP 3603
www A IP 3603 //修改域名后,域名解析成功需要几分钟到几小时不等
1-2、vps中添加vhost
$ lnmp vhost del //登入vps,删除旧vhost
$ lnmp vhost add //添加新vhost #LNMP添加、删除虚拟主机及伪静态使用教程
◆注意:新的vhost目录还是对应原来网站的路径
1-3、修改文章页面中的旧域名
在wordpress中搜索Velvet Blues Update URLs插件,用新域名替换旧的域名。
1-4、修改wordpress域名
进入后台在常规设置中,修改新域名
WordPress地址(URL) http://domain.com
站点地址(URL) http://domain.com
也可以进入数据库后台修改:在网页中输入你的ip/phpmyadmin,找到wordpress的数据库中的wp-options修改home和siteurl中的域名为
1-5 添加HTTPS
如果要添加https,和正常新域名添加是一样的,可以看添加HTTPS的文章。
仅更改服务器
下面操作的前提是新VPS已经布置好wordpress所需要的环境LNMP,
这里节选一些用到的,完整的可以参考上面的。
安装好LNMP环境后,不需要安装worpress,因为备份文件里面有网站的数据,php加速最新的LNMP中可以选择。
建议修改phpmyadmin目录(数据库后台管理),删除LNMP测试页,开启BBR加速,修改默认SSH端口22
①为了安全,建议将 phpmyadmin 目录重命名为不容易猜到的目录(比如
# cd /home/wwwroot/default # mv phpmyadmin hereispma
②此安装成功页面是IP访问时的默认页面(非域名),建议删除或改名:
# rm -rf index.html 或者 # mv index.html random-name.html
③ 开启BBR加速
BBR是Google提出的一个开源的TCP拥塞控制算法,应用于Linux4.9+内核上,对提升网速效果显著。
因此,对于KVM架构的VPS,博主倾向于在正式部署生产环境之前,首先开启BBR。
但这并不意味着你一定要这么做。倘若你的VPS线路已经很不错,完全可以跳过这一步。
切换到root目录:
# cd ~
下载安装脚本:
# wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
如提示wget: command not found,可执行命令
# yum install wget 进行安装。 安装BBR:
# chmod +x bbr.sh && ./bbr.sh
按要求输入y后,自动重启VPS。
重新登入后,查看结果:
# sysctl net.ipv4.tcp_available_congestion_control
出现形如以下字样时,说明BBR开启成功。
net.ipv4.tcp_available_congestion_control = bbr cubic reno
④修改SSH端口
首先,编辑配置文件:
$ vi /etc/ssh/sshd_config
找到
Port 22
这行(默认端口22),把前面的 # 去掉,然后再添加一个新的端口(不超过65535),比如 Port 56789:
保存,重启SSH
# service sshd restart
使用新的端口登入和上面一样打开修改sshd_config,删除掉22端口这一栏,就可以了。
2-1、备份网站文件
//为了方便管理,先建立一个文件夹专门存放备份数据,比如/home/backup/
$ mkdir /home/backup
//压缩整站并移动到 /home/backup/ 文件夹下,文件命后加了日期,方便管理
$ cd /home/wwwroot //进去wordpress网站根目录
$ tar -czf smile.com-20180101.tar.gz smile.com //压缩全站文件
$ mv smile.com-20180101.tar.gz /home/backup/ //移动到刚才建立的备份文件夹
2-2、备份网站数据库
//打开 /home/backup/ 文件夹,将数据库备份在这里, $ cd /home/backup //输入root 数据库密码,即可查看当前数据库列表 $ lnmp database list //选择需要备份网站的对应数据库,sjksmile为例: $ mysqldump -uroot -p sjk_smile > sjk_smile-20180101.sql
输入数据库密码,即可完成数据库备份。
可键入命令$ ls查看当前目录下已经存在了备份好的文件。
2-3、wordpress备份迁移
首先,创建screen会话:
screen -S lawnmower
如提示 screen: command not found ,可执行命令 # yum -y install screen 安装。
如果安装过程中出现异常中断,重新登入VPS后,输入 # screen -r lnmp 恢复安装界面。
由于LNMP1.5/1.4版本可一键设置SSL,所以推荐优先安装1.5版本:
wget -c http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz && tar -zxf lnmp1.5-full.tar.gz && cd lnmp1.5-full && ./install.sh
尝试过这两种方式:
1、使用FileZilla进行可视化操作,先登入旧VPS,下载备份目录/home/backup中备份到本地电脑,然后登入新VPS新建个同样目录/home/backup,上传备份到此目录,可能速度会慢一点,如果网站比较小的话300M以内,需要10分钟上传。
2、使用命令行从就VPS推送备份到新VPS
#假设新VPS的IP为 8.8.8.8,SSH端口为 22,则打开备份目录,选择需要的文件备份和数据库备份上传: #进入备份文件夹 $ cd /home/backup #显示所有文件 $ ls #推送网站文件备份到新VPS,回车后,按要求输入新的VPS登陆密码。 $ scp -P 22 smile.com-20180101.tar.gz root@8.8.8.8:/home/ #推送数据库备份到新VPS $ scp -P 22 sjksmile-20180101.sql root@8.8.8.8:/home/
接下来,SSH登入新的VPS,然后解压或替换网站域名目录
2-4、恢复网站文件
#移动网站备份到/home/wwwroot $ cp /home/smile.com-20180101.tar.gz /home/wwwroot #进入/home/wwwroot目录 $ cd /home/wwwroot #解压网站备份文件 $ tar -zxf smile.com-20180101.tar.gz #删除网站备份压缩包 $ rm -rf smile.com-20180101.tar.gz #搬家后解压的文件可能存在权限的问题,建议赋予根目录文件的可写权限。 $ chmod -R 755 /home/wwwroot $ chown -R www /home/wwwroot 假设提示某个.ini文件没有权限,无法赋予权限,可以先执行下面命令,去除不可修改属性, $chattr -i /提示无权限文件的路径
重新授权后,导入数据库。
如果导入数据库出现error字样,或者显示数据库不存在,可以在网页上登phpmyadmin数据库后台,新建数据库(需要和备份WordPress的数据库名字一致),然后在尝试导入。
2-5、恢复数据库文件
#恢复数据库到新的VPS $ cd /home $ ls $ mysql -uroot -p sjksmile<sjksmile-20180101.sql
2-6、vps中添加vhost
和仅更改域名一样,也需要在新VPS重新添加,可看1-2步
2-7、新IP添加解析
把新IP在域名解析中添加A记录,填写需要指向的服务器IP地址 A IP 3603 www A IP 3603 #修改域名后,域名解析成功需要几分钟到几小时不等 在域名没有变化的情况下,不需要其它设置,迁移就完成了。
2-8、https设置
如果原网站有设置https的,需要重新安装证书,修改网站conf,具体可以看另一篇HTTPS设置
变更域名+服务器
合成1+2步骤
主题显示问题
LNMP安装包默认禁用了scandir函数,这会导致WordPress后台看不到安装的主题,以及当前主题总显示 “有新的翻译可用” 的提醒。所以,需要开启此函数。
$ vi /usr/local/php/etc/php.ini 回车,然后查找scandir函数。 $ ?scandir 回车,然后按delete键删除,接下来需要保存并退出vi命令。 $ :wq 回车。然后重启一下LNMP: $ lnmp restart
固定链接404
官方给出了新的开启wordpress固定链接的方法,也简单的多。这里假设,在nginx的conf文件夹下创建个wordpress.conf ,将下面的代码粘贴进去:
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
include wordpress.conf;
接着重启nginx就可以正常访问了
service nginx restart
修改SSH端口
首先,编辑配置文件:
vi /etc/ssh/sshd_config
找到 #Port 22
这行(默认端口22),把前面的 # 去掉,然后再添加一个新的端口(不超过65535),比如 Port 56789:
保存,重启SSH即可:
service sshd restart
接下来,在防火墙 /etc/sysconfig/iptables 里开启此端口:
iptables -A INPUT -p tcp -m tcp --dport 56789 -j ACCEPT
保存并重启防火墙:
service iptables save
service iptables restart
或者,也可以编辑 /etc/sysconfig/iptables 文件,复制端口 22 的规则,粘贴在其下另起一行。
按 :wq 保存退出后,重启防火墙。
查看防火墙状态,看看端口是否开启成功:
service iptables status
现在,使用新的端口连接SSH。
若成功登录,则再次编辑 /etc/ssh/sshd_config,将里面的 Port 22
前加 # 保存后,重启SSH即可。
CentOS7防火墙中开启相关端口:
CentOS7.X中默认的防火墙 firewalld 而非CentOS6.X中的 iptables 。如果你也像博主一样感觉用着很不爽,需要换回 iptables 的,可以参考如下设置。
1、关闭firewall并禁止开启启动:
service firewalld stop
systemctl disable firewalld.service
2、安装iptables:
yum -y install iptables-services
3、修改iptables配置:
vi /etc/sysconfig/iptables
粘贴如下内容(可按需要自行增删;如已更改SSH端口,22端口对应行可删除):
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 56789 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11211 -j DROP
-A INPUT -p udp -m udp --dport 11211 -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
按 :wq 保存退出后,重启iptables,并设置为开机启动:
service iptables restart
systemctl enable iptables.service