WordPress迁移更换域名+固定链接404

前言

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://smile1008.com

站点地址(URL)            http://smile1008.com

也可以进入数据库后台修改:在网页中输入你的ip/phpmyadmin,找到wordpress的数据库中的wp-options修改home和siteurl中的域名为

1-5 添加HTTPS

如果要添加https,和正常新域名添加是一样的,可以看添加HTTPS的文章

仅更改服务器

下面操作的前提是新VPS已经布置好wordpress所需要的环境LNMP,

关于安装lnmp这篇文章已经说的很清楚了

或者可以参考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</pre进行安装。

安装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备份迁移

尝试过这两种方式:

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

网上找了很多,都是在nginx.conf中添加,都不适用,这篇可以,折腾一圈发现是自己乱删东西导致的。。。

官方给出了新的开启wordpress固定链接的方法,也简单的多。这里假设,在nginx的conf文件夹下创建个wordpress.conf ,将下面的代码粘贴进去:
[kbd]location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;[/kbd]

修改 conf/vhost/domain.conf     虚拟机nginx配置文件,在root 那行下面添加一行:

[kbd]include wordpress.conf;[/kbd]

接着重启nginx就可以正常访问了

[kbd]$ service nginx restart[/kbd]

参考

留下评论