WordPress迁移更换域名 固定链接404 修改SSH端口

前言

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;
修改 conf/vhost/domain.conf     虚拟机nginx配置文件,在root 那行下面添加一行:
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
阅读剩余
THE END