博客平台的自动化部署
一直以来,我的博客平台需要手动打包,然后FTP到VPS上进行部署更新。这样重复的体力劳动,过于浪费时间,所以今天抽空做下下自动化部署更新。
技术栈
- 博客平台是在GitHub下做的代码管理
- 平台前端是Angular,后端是Express
- VPS为腾讯云服务器【Centos7.x】
这里选用Travis
实现自动化部署
自动化部署流程
Code提交到GitHub后,Travis实现构建打包,然后执行同步脚本,传输文件到VPS上,最后执行重启服务脚本。
划重点
整个配置流程,说不上难,但有几个坑需要注意。
文件传输
如何传输文件呢,这里使用rsync
命令
详细命令介绍,戳这里
SSH免密登录
Travis需要将打包文件传输到VPS,远程登录服务器需要用户名密码,但明文密码存在安全问题,还好travis提供了加密方案。how to do?
SSH登录VPS
2-3命令均在目标VPS执行
,为travis创建公钥私钥
1
2
3
$ ssh-keygen -f travis加密私钥,创建指令到YML
1
2
3
4
5
6
7
8
$ gem install travis
$ travis login
$ ssh-keygen -t rsa -b 4096 -C 'qianghe421@163.com' -f ./deploy_rsa
$ travis encrypt-file deploy_rsa --add
$ ssh-copy-id -i deploy_rsa.pub root@1991421.cn
执行命令后,YML文件会创建如下第4步的脚本
注意
我的VPS是Centos7,执行GEM就报错了,so折腾了一把
rubygems安装
1
2
3yum install rubygems
yum install ruby-devel
yum install make automake gcc gcc-c++ kernel-devel/usr/bin/ssh-copy-id: ERROR: Host key verification failed.
1
$ ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /var/www/blog/alanhg.github.io/deploy_rsa.pub root@1991421.cn
修改脚本
1
2- openssl aes-256-cbc -K $encrypted_b86c2ca78306_key -iv $encrypted_b86c2ca78306_iv -in .travis/travis.enc -out ~/.ssh/id_rsa -d
自动生成的脚本还需要做一点修改
注意
- 脚本创建时,会自动换行,注意要在一行上,否则travis构建会直接报错
Could not parse .travis.yml
- 添加ssh_known_hosts
如果不加,会报如下连接提示
完整脚本整体配置
1 | language: node_js |
写在最后
实现CI自动部署更新后,以后博客平台的修改,只需要提交到GitHub,剩下的事都自动化了,漂亮。