- 1、对文件进行备份
- 2、对数据库进行备份
- 3、将 WordPress 迁移到其它主机
- 4、参考资料
本身觉得迁移主机这个事情距离自己应该是很远的事情,结果没想到自己建站才 10 多天就要迁移了。在参考了别的大佬的文章之后自己也成功的将自己的站点从 Vultr 迁移到了 Linode 的主机上面去了,固写下这篇文章。
在参考本文章进行备份时,请注意替换自己的站点域名和自己设置的数据库的名字。
1、对文件进行备份
为了方便备份,我们可以建立一个文件夹存放备份的数据,在哪里都可以。
mkdir /home/backup
先将整个站点压缩到我们新建的文件夹下(以本博客crowsong.xyz
为例,同时为了方便管理,笔者添加了备份日期)。
cd /home/wwwroot
tar -zcf crowsong.xyz-20180811.tar.gz crowsong.xyz
mv crowsong.xyz-20180811.tar.gz /home/backup/
至此文件备份结束。
2、对数据库进行备份
首先进入到我们专门用来备份的文件夹中。
cd /home/backup
之后我们可以通过使用lnmp database list
这条命令来查看数据库列表,同时需要输入数据库 root 账号的密码。
lnmp database list
当我们查看好之后我们可以将相应的数据库备份出来,以crowdata
为例。
mysqldump -uroot -p crowdata > crowdata-20180811.sql
请务必注意这里导出时使用的符号>
与导入时使用的符号与之相反,不要搞错了。
至此数据库备份完毕,你可以通过 ftp 的方式将备份的内容下载下来,进行保存。
3、将 WordPress 迁移到其它主机
这里主要讲的是转移到不同服务商的 VPS 上,因为相同服务商的 VPS 大多都有快照备份的方式,迁移起来非常的方便。
首先我们要做一下准备工作,如果你仅仅像笔者一样只是想换个主机而已的话,其实迁移起来非常的简单。
首先你需要搭建一个与之前主机相同的环境,可以使用 lnmp 直接搭建,这里笔者直接使用 lnmp1.5 直接再次搭建了一个相同的环境。
紧接着使用lnmp vhost add
命令添加一个与之前主机相同的站点,需要注意的是域名需要与之前的相同,数据库的名称密码等也需要与之前的相同。如果你的上一个站点使用了免费 SSL 证书提供商 Letsencrypt 的证书,这里你也需要添加上去。
添加完之后我们开始将之前备份的文件与数据库文件全部上传上去,你可以选择使用 ftp 的方式上传,你也可以使用 ssh 的方式在两个 VPS 之间传送,这样速度会更快一些。
还是以笔者的站点crowsong.xyz
和数据库crowdata
为例,假设我们新的 VPS 的 IP 是8.8.8.8
,SSH 的端口是2333
,则我们需要在原主机上这个输入命令:
cd /home/backup
scp -P 2333 crowsong.xyz-20180811.tar.gz [email protected]:/home/backup
scp -P 2333 crowdata-20180811.sql [email protected]:/home/backup
之后需要输入新的 VPS 的密码。
需要注意的是-P
是大写的。
如果你在传输的时候收到了WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
这样的提示,你需要输入vi ~/.ssh/known_hosts
将与你新的 VPS IP 相关的内容删掉即可。
传输成功后我们回到新的 VPS 上面,将传输过来的文件内容解压并替换掉之前我们使用 lnmp 创建的那个。
cp /home/backup/crowsong.xyz-20180811.tar.gz /home/wwwroot
cd /home/wwwroot
tar -zxf crowsong.xyz-20180811.tar.gz
rm -rf crowsong.xyz-20180811.tar.gz
同时迁移之后我们需要重新赋予网站根目录文件的可写权限。
chmod -R 755 /home/wwwroot/crowsong.xyz
chown -R www /home/wwwroot/crowsong.xyz
有可能会出现以下提示
chmod: 更改"/home/wwwroot/crowsong.xyz/.user.ini" 的权限: 不允许的操作
这个时候我们需要先使用chattr -i
命令将该文件解锁后,再次赋予权限。
chattr -i /home/wwwroot/crowsong.xyz/.user.ini
之后,我们导入数据库,仍以crowdata
为例:
cd /home/backup
mysql -uroot -p crowdata < crowdata-20180811.sql
请务必注意这里导入时使用的符号<
导出时使用的符号与之相反,不要搞错了。
如果忘记了数据库的名字可以先尝试使用 mysql 命令来查看一下所有的数据库。
首先登入到 mysql 当中。
mysql -h localhost -u 用戶名 -p 密码
登入成功时会提示欢迎语且输入前缀变为mysql>
之后使用命令显示所有的数据库,注意结尾必须有分号。
show databases;
如果环境相同,则至此导入工作结束。
但是如果你使用 HTTPS 的话,你还需要重新设定 301 强制跳转,因为这个不在备份的文件之内。
笔者这里使用的是 Nginx,若你使用的是 Apache 的话,请自行谷歌或者百度。
进入/usr/local/nginx/conf/vhost
中,里面有一个以自己域名命名的配置文件,笔者的为crowsong.xyz.conf
,编辑该文件。
vim /usr/local/nginx/conf/vhost/crowsong.xyz.conf
在 80 端口 server 处添加,如下图
if ($scheme = http ) {
return 301 https://$host$request_uri;
}
之后重启 Nginx 即可。
参考资料:
本文章笔记版本地址:http://ccdd6ec5.wiz03.com/share/s/3cTmX51TMQ-b2QTact03UPg82VjkPe1KkkjJ2U_Zzz00z9-z