博客搬迁2017

起因

18+1大,因为作死的还一直开着我的ss,然后连同着博客一起被墙了。

想上服务器做一些修改,试过各种ssh的代理方法,就是不行。在调用这些手段的时候,突然发现有人提到VPS可以做到月费5$,有点惊呆了。https://www.diycode.cc/topics/738

仔细想想,自己现在这个EC2,每个月开销已经到$10了,其实自己也没怎么用,主要就是挂博客和放代理,那还不如索性乘这个机会迁到更符合实际需求单VPS上。

目标

这次迁站,主要两件事情,一个是搭建ss-server,一个就是wordpress和mysql数据的迁移。

wordpress和mysql都是基于docker部署的,算是其中的一个小难点

先在vultr.com上面创建了instance,等安装好了之后,用给的帐号密码登录指定服务器,成功。

ss-server搭建

使用上面说的文章梨提供的一键安装脚本,ss-server顺利安装成功。

在本地建好配置文件(config.json)之后,使用pip3 install shadowsocks快速安装了客户端,然后ss-local -c config.json启动

可是一直连不上,ss-local里面的日志都是connecting

在网上找了一圈之后,发现可能是本机没开放对应端口,使用命令:

 firewall-cmd --zone=public --list-ports

查看了一下现有开放的端口,发现ss默认使用的8989是开放的,不知道是为啥还被禁。

最后的解决方式是:kill掉ss-server, 修改配置文件,更换端口到8083(随便选的),然后启动ss-server。在防火墙这块:

firewall-cmd --zone=public --add-port=8083/tcp
firewall-cmd --reload

再尝试,可以顺利链接了。

代理配置好之后,我本地也是能方便的使用Google,为接下来查看怎么迁移Docker做了准备。

上面关于firewall-cmd相关的知识,是来自: http://www.111cn.net/sys/CentOS/103509.htm

迁移站点

因为vultr准备的这个instance是一个最小的CentOS安装包,所以得自己使用yum安装了vim和nginx:

yum install vim
yum install nginx

安装好之后,直接IP访问,发现不可以,一看还是防火墙的问题,解决方法跟上面一样:

firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --reload

关于docker的迁移,我一开始主要参照这篇文章:Docker 容器迁移,可真按照这个完成之后,得到的是一个完全新的博客,能顺利运行,但是之前的数据都没了。

无奈之下,我又单独去了解了一下Docker Mysql的数据迁移,主要参照的这篇文章:Docker Mysql容器间数据简单迁移。这次就靠谱多了,同时还学会了怎么在主机和docker之间互相拷贝文件。

在顺利从docker里面导出sql文件到主机后,再使用scp命令在vultr和aws之间传递文件(忘记说了,登录上vultr之后,我成功的基于vultr的主机ssh上了aws的主机,机智)

scp命令如果遇到错误: Permission denied,可以参照这篇文章: ssh使用scp: /目录: Permission denied

不过这篇文章在目标数据库恢复数据这块,说的不够清楚,用文章里面的方法始终没办法在mysql里面出现一个叫wordpress的数据库。

继续google,找到了一个在sql文件导入导出方面比较专业的文章: linux命令行下导出导入.sql文件,原来导入之前是得先新建对应的数据库,在进入数据库之后,再执行source data.sql就能顺利的导入了。

数据库导入之后,再查看网站,已经能正确展示了,不过一些图片资源报了404,看了看资源路径,在wp-content目录里面。

docker exec进入wordpress所在的docker里面,看了一下wp-content目录,空的,看来跟mysql一样,也是迁移的有问题的。

用了之前从mysql的docker里面导出sql文件的方法,从旧网站的docker里面把wp-content目录给导出来,然后scp下载到vultr主机,再复制到新网站的docker里面(好累),资源顺利加载。

不过一些插件报错了:**Call to undefined function wp_get_upload_dir()
** 
这种错误,我是不想去debug了,很明显,光拷贝wp-content是不行的,索性,那就完全贝把。把docker里面的/var/www/html/完全拷贝出来,再覆盖现有的。覆盖的时候,是打算

mv html hml-bk
tar zxf html.tar.gz

这样来做的,不过不让直接重命名现有的html目录,提示 mv: cannot move ‘html’ to ‘html-bk’: Device or resource busy

那就只好先新建个文件把旧网站的html目录放进去,然后一个个文件夹的替换。替换完成之后。

运气不错,现在新网站顺利运行了。

总结

这次的站点迁移,跟想像的优雅略有差别,以为用上Docker之后,这种迁移会是很轻松的一件事情,却没想到折腾了这么久。

应该是我自己在Docker这块了解的还是太少吧,等以后有时间再好好看看这块。

对了,顺便放上我的Vultr的推广链接:https://www.vultr.com/?ref=7256603,有需要VPS的朋友可以考虑一下点我的链接去注册哈,在此谢谢了

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.