去年花了三天时间开发了一个简易版的nodejs发布系统,它是基于pm2自带的deploy机制开发的,主要原理就是在两台装有pm2的机器直接通信,并执行相应的命令。再往简单了说就是在发布机上远程执行命令,而朱雀发布系统提供了一个图形界面而已。
当时把这个系统定位为nodejs专用发布系统,因为它依赖了pm2,而pm2则是nodejs专用的进程管理工具,其他语言用不到。这个系统的上线也算是解决了我司一直以来没有合适的nodejs发布系统的空缺。
经过9个月的使用,也算比较稳定。但是也存在问题,最大的问题是部署应用方面比较繁琐。
基本流程如下:
- 发布机和应用服务器设置ssh通信配置。
- 应用服务器安装git(有自带,但是版本太旧)。
- 配置git用户名,邮箱。
- 生成ssh公钥。
- 把应用服务器的公钥配置到git代码服务器上。以便能拉代码。
- 发布机远程执行git pull来代码操作,各应用服务把代码拉取下来。
- 执行编译打包操作。
- 执行重启服务操作。
部署一次系统还是比较麻烦的,如果应用服务器有多台,可能还要重复这样的操作多次,实在比较麻烦。
使用scp同步代码的方式会比较简单一些,但是像nodejs这样的项目,node_module占了很大比重,如果每次都打包的话会拖慢同步速度,而scp又不具备排除文件夹的能力。