WordPress迁移可以分为以下几种情况:仅更改域名,仅更改服务器,变更域名和服务器。下面就以这三种情况,可以实现的方式有很多,选取了一种适合自己的,把需要进行的操作记录下来,方便整理回顾。下面出现$的统一为命令,请注意本文所有操作是基于基础环境为CentOS7+Nginx+Mysql+PHP+Wordpress,其它环境需要酌情修改。文章末尾也包含了如何备份网站,备份文件导出,修改常用SSH登录端口以及防火墙端口设置的更改,以及iptables防火墙命令示例。
更改域名 新域名添加解析,把新申请的域名new.com在域名解析中添加A记录,填写需要指向的服务器IP地址:
1 2 A IP 3603 www A IP 3603 //修改域名后,域名解析成功需要几分钟到几小时不等
vps中添加vhost:
1 2 $ lnmp vhost del //登入vps,删除旧vhost $ lnmp vhost add //添加新vhost
修改文章页面中的旧域名,在wordpress中搜索Velvet Blues Update URLs插件,用新域名替换旧的域名。
修改wordpress域名,进入后台在常规设置中,修改新域名,也可以进入数据库后台修改:在网页中输入你的ip/phpmyadmin,找到wordpress的数据库中的wp-options修改home和siteurl中的域名为新域名。
添加HTTPS,如果要添加https,和正常新域名添加是一样的,可以看添加HTTPS的文章。
更改服务器 下面操作的前提是新VPS已经布置好wordpress所需要的环境LNMP,关于安装lnmp这篇文章已经说的很清楚了,或者可以参考LNMP的指导文档。安装好LNMP环境后,不需要安装worpress,因为备份文件里面有网站的数据,php加速最新的LNMP中可以选择。 建议修改phpmyadmin目录(数据库后台管理),删除LNMP测试页,开启BBR加速,修改默认SSH端口22
为了安全,建议将phpmyadmin目录重命名为不容易猜到的目录。
1 2 # cd /home/wwwroot/default # mv phpmyadmin hereispma
此安装成功页面是IP访问时的默认页面(非域名),建议删除或改名:
1 2 # rm -rf index.html 或者 # mv index.html random-name.html
开启BBR加速
BBR是Google提出的一个开源的TCP拥塞控制算法,应用于Linux4.9+内核上,对提升网速效果显著。因此,对于KVM架构的VPS,博主倾向于在正式部署生产环境之前,首先开启BBR。但这并不意味着你一定要这么做。倘若你的VPS线路已经很不错,完全可以跳过这一步。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 切换到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端口:
1 2 3 4 5 6 7 8 # 首先,编辑配置文件: vi /etc/ssh/sshd_config # 找到 Port 22 这行(默认端口22),把前面的 # 去掉,然后再添加一个新的端口(不超过65535),比如 Port 56789: # 保存,重启SSH service sshd restart # 使用新的端口登入和上面一样打开修改sshd_config,删除掉22端口这一栏,就可以了。
备份网站文件:
1 2 3 4 5 6 //为了方便管理,先建立一个文件夹专门存放备份数据,比如/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/ //移动到刚才建立的备份文件夹
备份网站数据库:
1 2 3 4 5 6 //打开 /home/backup/ 文件夹,将数据库备份在这里, $ cd /home/backup //输入root 数据库密码,即可查看当前数据库列表 $ lnmp database list //选择需要备份网站的对应数据库,sjksmile为例: $ mysqldump -uroot -p sjk_smile > sjk_smile-20180101.sql
输入数据库密码,即可完成数据库备份。 可键入命令$ ls查看当前目录下已经存在了备份好的文件。
wordpress备份迁移:
1 2 3 4 5 6 7 8 9 # 首先,创建screen会话: screen -S lawnmower # 如提示 screen: command not found ,可执行命令 yum -y install screen 安装。 # 如果安装过程中出现异常中断,重新登入VPS后,输入 # 由于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。
1 2 3 4 5 6 7 8 9 # 假设新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,然后解压或替换网站域名目录。
恢复网站文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 移动网站备份到/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的数据库名字一致),然后在尝试导入。
恢复数据库文件:
1 2 3 4 # 恢复数据库到新的VPS $ cd /home $ ls $ mysql -uroot -p sjksmile<sjksmile-20180101.sql
vps中添加vhost:该步骤和仅更改域名一样,也需要在新VPS重新添加,可看1-2步。
新IP添加解析:
1 2 3 4 5 把新IP在域名解析中添加A记录,填写需要指向的服务器IP地址 A IP 3603 www A IP 3603 # 修改域名后,域名解析成功需要几分钟到几小时不等 # 在域名没有变化的情况下,不需要其它设置,迁移就完成了。
主题显示问题:LNMP安装包默认禁用了scandir函数,这会导致WordPress后台看不到安装的主题,以及当前主题总显示 “有新的翻译可用” 的提醒。所以,需要开启此函数。
1 2 3 4 5 6 7 $ vi /usr/local /php/etc/php.ini 回车,然后查找scandir函数。 $ ?scandir 回车,然后按delete键删除,接下来需要保存并退出vi命令。 $ :wq 回车。然后重启一下LNMP: $ lnmp restart
固定链接404,官方给出了新的开启wordpress固定链接的方法,也简单的多。这里假设,在nginx的conf文件夹下创建个wordpress.conf ,将下面的代码粘贴进去:
1 2 3 4 5 6 7 8 9 10 location / { try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; # 修改 conf/vhost/domain.conf 虚拟机nginx配置文件,在root 那行下面添加一行: include wordpress.conf; # 接着重启nginx就可以正常访问了 service nginx restart
修改SSH端口:
1 2 3 4 5 6 7 8 9 10 11 12 13 # 首先,编辑配置文件: vi /etc/ssh/sshd_config # 找到 # 保存,重启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 保存退出后,重启防火墙。 查看防火墙状态,看看端口是否开启成功:
现在,使用新的端口连接SSH。
若成功登录,则再次编辑 /etc/ssh/sshd_config,将里面的 Port 22 前加 # 保存后,重启SSH即可。
CentOS7防火墙中开启相关端口:
CentOS7.X中默认的防火墙 firewalld 而非CentOS6.X中的 iptables 。如果你也像博主一样感觉用着很不爽,需要换回 iptables 的,可以参考如下设置。
1 2 3 4 5 6 7 8 9 # 关闭firewall并禁止开启启动: service firewalld stop systemctl disable firewalld.service # 安装iptables: yum -y install iptables-services # 修改iptables配置: vi /etc/sysconfig/iptables
粘贴如下内容(可按需要自行增删;如已更改SSH端口,22端口对应行可删除):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 *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,并设置为开机启动:
1 2 service iptables restart systemctl enable iptables.service