起因
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的朋友可以考虑一下点我的链接去注册哈,在此谢谢了