-
[fabric]多种策略的工程同步
继续接上篇。 理论上来说,rsync是最好的工程同步方式。只是和fabric自身的ssh登录没有整合,现在我找到了一个简单的解决方法。同时我也准备了其他两种方法:打包上传和远程svn update,这样加上不同步总共有四个部署策略。 解决rsync依赖主机名和密码的方法很简单:因为rsync是在本地运行,只要在rsync之前执行一个简单的远程命令就能获得主机名和密码。代码如下: remote_srcdir = ‘source’ run(‘hostname’) # simple workaround for host prompt local(‘sshpass -p %s rsync -pthrvz –delete –exclude=.git –exclude=*fabfile* –exclude=target . %s:%s’ % (env.password, env.host_string, remote_srcdir)) 这里写死是密码登录了,理论还有证书登录,暂时不考虑。 打包上传的方式,改造自upload_project import tempfile, os remote_srcdir = ‘source’ _, archive_path = tempfile.mkstemp() _, archive_name = os.path.split(archive_path) try: local(‘tar -cz –exclude-vcs –exclude=*fabfile* –exclude=target -f %s .’ %…
-
尝试用fabric部署应用
说来惭愧,个人是最近才知道fabric的。但是一上手就觉得fabric非常不错,解决了我长久以来的部署问题。 原因我的部署方式是: 登录远程服务器 svn update/git pull deploy.sh 后来觉得把未测试的代码签入代码库不是很好,想直接复制本地代码到远程服务器上再部署,于是第一步变成了: 打包本地代码文件 scp到远程服务器上 在远程服务器上解压缩