有时候,用专门的测试机用来测试还是比较方便的,因为上面环境搭好了,而且QA和需求方也可以直接去到测试环境测试。于是就涉及到将代码安装到服务器的这个过程了。
对于代码需要安装在测试机上面,我们有两种方案,一种是直接在服务器写代码,这样写完后,想装的时候就直接运行安装脚本就可以把代码装好了。另一种是在本地写,然后将代码复制到服务器,再安装。
直接在服务器上写代码
对于直接在服务器上写代码,就挺方便的,不过要注意在服务器开个tmux或者screen,这样在突然断线后或者回家,还是可以恢复到之前的工作的环境。如果没有用tmux之类的,那么如果写代码写到一半给断开连接了,那就悲剧的到时重连的时候还需要恢复编辑文件。
在本地写复制到服务器
在本地写代码,我们可以用我们最爱的编辑器[1]。写完后,觉得好了,就将代码复制到服务器上面,然后去服务器安装代码。这样确实是可以行的,就是每次改点东西,还需要手动复制,就是挺麻烦的。
于是就想自动复制到服务器。那么何时触发复制呢?我觉得在我们修改了,就自动复制就好了。于是我想可以监控文件的变化,如果发生变化,那就调用rsync复制文件。
这里我写了脚本,可以用来监控项目文件夹,如果有变化,就自动复制到远程服务器:
For Mac
1 |
|
For Linux
1 |
|
所有的代码以及使用说明都在https://github.com/cedricporter/auto-deploy-by-rsync。
需要的同学可以clone下来试试。
使用
例如我们在Mac上面,可以在项目的文件夹根目录运行下面的命令。
1 | @ ~/git/vipbar-b2c % mac-auto-deploy . gzhualiang@dev35:~/git/`basename $(PWD)` |
在上述例子中,mac-auto-deploy会自动检查文件修改,如果修改了就会使用rsync将当前文件夹同步到dev35这台服务器的~/git/vipbar-b2c
目录中。只要在一开始打开就不用理他了,就只管写代码就好了,觉得需要安装的时候,就在服务器的shell运行一下安装脚本,项目就可以安装好了,就不再需要关注代码的复制了,就像在服务器写代码一样了。
在Linux中一样,使用另一个脚本就好了。
Screencast[2]
