尝试用fabric部署应用

说来惭愧,个人是最近才知道fabric的。但是一上手就觉得fabric非常不错,解决了我长久以来的部署问题。

原因我的部署方式是:

  1. 登录远程服务器
  2. svn update/git pull
  3. deploy.sh

后来觉得把未测试的代码签入代码库不是很好,想直接复制本地代码到远程服务器上再部署,于是第一步变成了:

  1. 打包本地代码文件
  2. scp到远程服务器上
  3. 在远程服务器上解压缩

上面的步骤中既有本地的,也有远程的。
我本来想把上面的操作全部写到一个shell脚本中,每次执行一下就行。远程的操作我先考虑到的是ssh server “command to execute”方式,但是远程需要操作的命令比较多,这样会很长。另外还有个问题是远程deploy后退出服务器,服务突然“消失”了。后来又尝试bash+here document的方式,仍旧遇到第二个问题。没办法,在远程服务器上写一个脚本,用ssh server “command to execute“方式运行,并且在deploy之后tail -f某个日志文件防止退出。于是我的部署就变成本地一个脚本,远程服务器上一个脚本,而且执行完之后还无法退出。

偶尔遇到了fabric,查询了fabric的文档。尝试把本地和远程脚本一起写到fabfile.py中。同样遇到了服务”消失”的问题,通过run(“command”, pty=False)解决。最终脚本如下:

执行方法:

大致介绍下fabric的命令:run是执行远程命令,local是本地命令,put是把本地文件上传到远程服务器。

当然fabric不仅仅能用于部署,还能用于日常管理。个人觉得这点可以继续挖据。

One thought to “尝试用fabric部署应用”

Comments are closed.