因为AWS的学生机快要到期了,又本着尽量不搞备案的想法(备案这个东西,规定写得云里雾里,完全看不懂QAQ),只好把把博客迁移到其他服务器提供商。思来想去,虽然腾讯阿里的服务器便宜,但是要备案;虽然digital ocean还有学生机可以用,但是要信用卡;所以最后选择了vultr。
那么,注册账号、开服务器、安装wordpress等等就不赘述了,和AWS大同小异。哦,但有两点可以吹一下,注册vultr账号只需要邮箱,和可以用支付宝支付。这两点可谓给我了极大地方便。那么现在,我们现在有了两台正在运行wordpress 的服务器,接下来就是按照wordpress网站的指引将AWS上的数据转移到vultr上。
考虑到迁移服务器前后url和域名都没有发生改变,因此可以直接先导出AWS服务器上的数据;之后,再导入到vultr的服务器,并改写wp-config文件,从而完成迁移。
导出数据时,由于在部署AWS服务器时犯下的一个失误——没有配置phpmyadmin——导致我只能通过直接操作mySQL来导出数据(虽然页不是什么困难的事,但毕竟有phpmyadmin会方便很多)。那么,连接至远程服务器,然后在你想要存放导出数据库的位置使用mkdir命令建好文件夹,然后输入以下指令:
mysqldump -u root -p wordpress > blog.sql
这句指令的意思是,“mySQL啊,我以root用户的身份命令你,把wordpress这个数据库导出为blog.sql文件”。当然,数据库名称要根据当时创建wordpress所使用的数据库的名称修改,导出文件的名称也可以按照自己喜好进行设置。之后,不出意外的话,mysql会要求你输入密码,输入当时设置的密码就能成功完成导出了……吗?
事实上笔者在这里遇到一个问题,当他提示输入密码时:
Enter password:
我发现没法使用键盘输入、或者说键盘输入没有反应了——这是什么鬼啊?既然如此,就只能采用下面的指令了:
mysqldump -u root -p wordpress > blog.sql -ppassword
即在刚才那条指令的后面加上-p并紧接着输入密码。注意密码和-p之间没有空格。这样就能成功导出了。
%笔者注:当我写到这里时,我又突然意识到,应该并不是无法使用键盘,而只是输入的密码不显示在屏幕中——据我所知有些软件是这么搞的。但现在也懒得验证了,这样不也挺好的嘛。
那么此时,就能在刚才创建的文件夹中看到如下的文件:

然后,将他用ftp下载下来。
还有一个文件需要导出。此时登录AWS的wordpress后台,“工具”→“导出”,接下来的步骤有手就行,就不再赘述了。此时不妨设这个文件为wordpress.xml。
之后就到了vultr这边。这次,可以直接使用phpmyadmin将blog.sql导入到服务器中并修改wordpress的权限使之能正常地使用这个数据库;连接vultr服务器,找到wordpress的根目录并修改wp-config文件:

主要是要修改database的名字,即上图中第一个涂黑的部分,其他的一般在安装时都设置好了。这个database的名字改为刚才上传的blog.sql中database的名字,也就是原来AWS服务器上wordpress使用的database的名字。
在这之后登录vultr服务器的wordpress后台,在相似的位置导入wordpress.xml(事实上,根据导入时的提示来看,我严重怀疑wordpress.xml和blog.sql内容是一样的),就大体完成了数据的迁移。最后就是将dns修改到新服务器的ip地址上,并关闭原来的服务器就可以了。
可以了吗?事实上应该并没有那么简单。在我干完上述这些事后,发现了一个极其严重的问题:媒体库中绝大多数的图片都丢失了,而少数幸存的图片也丢失了缩略图。为什么呢?我的猜想是,wordpress将媒体库中所有的文件都保存在wp-content文件夹中(而且是按照年月分文件夹存储),而无论是上面的blog.sql还是wordpress.xml都只存储了文件的路径而没有存储文件本身。但这无法解释为什么有的文件幸存的下来——这种事绝对很奇怪啊?为什么有的图片丢了有的图片还在啊?太离谱了吧?而关于缩略图的问题,我猜想是,当每次上传图片时,wordpress都会给图片生成一套缩略图,和图片放在同一目录中,当需要调用某缩略图时,就调用某张。到目前为止还挺美好的,直到——如果缩略图丢失,wordpress并不会自动重新生成缺失的缩略图,而是就那么放着了。因此,当wp-content中的图片随着AWS的服务器消失后,缩略图也全没了。
上面的可能有点语无伦次,总之一句话,下次迁移服务器时,一定要把wordpress根目录中的文件全部备份下来,而不是仅仅那两个导出的数据库——这次是wp-content,谁知道下次又是什么幺蛾子呢。
注:关于这次事件,好在图片都有存档,再上传一份,同时手动生成缩略图上传上去——一定要注意图片的url和上传图片到的文件夹是匹配的,就完事了。
Comments NOTHING