目的
这次改造的最主要的目的就是为了方便迁移.因为阿里云的售卖策略是老客户续费很难拿到优惠,所以有时候重新买一台的成本会比续费的成本便宜很多.
实现
上面的图基本上把原理都说清楚了.我的用到的组件罗列一下:
- Aliyun OSS
- Aliyun ECS
- Aliyun Code
- Aliyun Docker Hub
- Github
- Docker
- Nginx
- Tomcat
- Mysql
原来就是一坨东西全部堆在ECS中,想要迁移的话非常的麻烦.所以最核心的思路就是按模块拆分,然后让每个模块都容易迁移.
静态首页
之前是代码托管在github中,然后直接放在nginx的静态目录中,更新的时候git pull一下就可以.现在是直接把所有内容直接放在oss中,只要简单设置一下就行了.好处是彻底不用考虑迁移的事情,坏处是没有了版本管理.
Blog
这个很早的时候就已经跑在Docker中了.这次更新的了一下Dockerfile.还有就是我做了一个好玩的功能:自动部署.听起来很高大上,但实现起来非常的简单,就是在Github中加了一个webhook,当有新的commit的时候向我的java后台发送一个请求,然后java后台收到请求后检查一下commit的消息中是否包含”@deploy”的关键字,如果包含就调用发布blog的脚本.非常简单,但用起来真是爽.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| FROM nginx:1.15.0 LABEL maintainer="charles <me@chengchao.name>"
RUN apt-get update \ && apt-get install -y curl \ && apt-get install -y openssh-server \ && apt-get install -y procps \ && apt-get install -y net-tools \ && apt-get install -y vim \ && apt-get install -y gnupg2 \ && apt-get install -y git \ && curl -sL https://deb.nodesource.com/setup_10.x | /bin/bash - \ && apt-get install -y nodejs RUN npm install hexo-cli -g RUN echo "alias ll='ls -lh'" >> /root/.bashrc WORKDIR /root RUN mkdir .ssh && ssh-keygen -q -t rsa -N '' -f .ssh/id_rsa RUN touch .ssh/authorized_keys && chmod 664 .ssh/authorized_keys RUN git clone https://github.com/ichengchao/hexoblog.git RUN hexo init test \ && cp -r /root/test/node_modules /root/hexoblog/ \ && rm -rf /root/test RUN echo "\ cd ~/hexoblog\n\ git pull\n\ hexo clean\n\ hexo generate\n\ cd /usr/share/nginx/html\n\ rm -rf *\n\ cp -r /root/hexoblog/public/* ./\n\ " >/root/deploy.sh RUN chmod +x /root/deploy.sh RUN echo "\ service ssh start\n\ service nginx start\n\ node\n\ " >/root/init.sh EXPOSE 22 80 CMD ["/bin/bash","/root/init.sh"]
|
Java后台
这次主要改的就是这个模块,直接把mysql(省钱没上RDS),tomcat装进一个docker.原来机器上起的git server迁移到Aliyun的code服务中.还有个要做的就是定时的把mysql dump出来上传到oss做备份.
做完这些后,迁移就变得so easy了.