一般转阿里云无非是以下几个原因:价格便宜,服务好,口碑好,国内速度快等。然而我却是因为域名备案。强扭的瓜不甜,于是各种惊喜。

下面有请大家看看喜从何来?!

三重惊喜

不要用CentOS

由于在购买时页面显示推荐系统是CentOS(本人是Ubuntu的中毒用户),推荐东西总是好的,所以装装装。一分钟后服务器准备就绪。一登录各种命令不兼容,已知问题,所以我就忍了。来,装个Docker全家桶,version 1.7?难道是现版本号17在CentOS上显示不一样?运行起来各种报错。

首先,默认安装CentOS是6.9,并非7.3。

其次,yum无法连接海外镜像,很难进行个性化升级维护。

最后,老老实实换回Ubuntu,Docker版本17轻松apt-get到。推荐使用DaoCloud的脚本:

curl -sSL https://get.daocloud.io/docker | sh

评:既然推荐,那就不要腹剑折磨用户。抑或,我理解错了推荐的含义,其推荐是:推荐给不需要装Docker且不会装不上就到处BB的用户。

对于有人认为CentOS不是坑,这里要说明下。 并没说CentOS系统不好,是说阿里云对于CentOS的支持有限,相关配套的服务没有跟上,远不如Ubuntu简单。如果第一次使用阿里云,还是以Ubuntu为主,搜索解决方案也方便。

Docker容器的迁移

满心欢喜从以前OVH服务器上把Docker images复制(scp)过来。速度我就不吐槽了,那简直是个小水管,只有10KB/s

文件准备妥当,那就docker-compose up吧。可怎么都up不起来,说Command not specified。网上查了一圈,原来是由于在保存容器时,是使用的docker export而不是docker save。虽然export命令输出文件体积更小,但也丧失了METADATA。对于Docker新手的我,METADATA是啥既然不懂,那就用save命令呗。

docker commit [container id] [output repo name] # Commit all changes into the repository
docker save [output repo name] > archive.tar # Save the repo image
scp archive.tar user@xxx.xxx.xxx.xxx:~/folder # Copy to new machine/host

文件复制到新环境后,再运行load命令即可将镜像加载。

docker load -i archive.tar # Load the saved repo
docker images # List all images on the machine, should see the newly loaded one

评:Docker问题解决还算比较轻松,但由于小水管的缘故,花费了相当长的时间在传输文件上。这个锅还是得ECS背。

WordPress启动

一般来说Docker容器不需要任何改动,即插即用,不需要更改内部配置的。然而我就不是一般人,啥问题都得过一过。

首先,WP Super Cache插件,需要重新运行一下。

其次,wp-config.php的配置丢失。不知道是以前就没设,还是在迁移过程中docker volume没有配置好,总之重新配置了一遍。

最后,wpdiscuz插件的评论回复功能没法用,原来是要把JetPack的comment功能关闭。

再最后,JetPack的photon要关闭,否则迁移后文章内的图片都无法正确显示。

最最后, WP Super Cache的CDN功能无法启用,虽然早已配置好了,但文章中链接都还没有替换。这个问题仍没有解决,反正不影响网站访问,也就这样了先。

评:Wordpress坑是个永恒的主题,由于有了docker,环境变量控制方便了,也就很少出现权限问题,或者模块未装的情况。然而与插件们的斗争远未结束,这就是开源可扩展软件的宿命(参见Hexo开发)。

总结

此次排坑之旅,虽然不光是ECS的问题,但由于推荐的CentOS,并且深信推荐即最好,反而坑的时间最长。每一次网站的迁移都是一次折腾。从最早的博客平台–>Github–>OVH–>ECS,一路走来,遍地荆棘,回首来路,只叹到:“运维真不是人干的!”