之前不知道有Fabric工具,每次釋出程式到伺服器上的時候,基本流程:本地打包程式 -> Ftp上傳 -> 停伺服器Apache -> 覆寫檔案 -> 啟動Apache, 非常繁瑣。
前幾天無意發現了Fabric工具,研究了一下,現在我通過該工具釋出程式隻要一條指令即可:
fab pack deploy
具體如何實作的,請看執行個體,你隻需要在你的程式跟目錄下添加fabfile.py檔案,内容參考如下:
#!/usr/bin/env python
from fabric.api import *
# Configure user, private key, etc. for SFTP deployment
env.user = 'root'
env.hosts = ['SERVER IP']
def pack():
local('npm run build', capture=False)
local('python setup.py sdist --formats=gztar', capture=False)
def deploy():
dist = local('python setup.py --fullname', capture=True).strip()
# clean up
sudo('rm -rf /tmp/towerres /tmp/towerres.tar.gz')
put('dist/%s.tar.gz' % dist, '/tmp/towerres.tar.gz')
# stop apache
run('apachectl stop')
# remove priouse folder
run('rm /home/maplye/httpd/towerresource/towerres -rf')
run('rm /home/maplye/httpd/towerresource/migrations -rf')
# copy
run('mkdir /tmp/towerres')
with cd('/tmp/towerres'):
run('tar zxf /tmp/towerres.tar.gz')
run('cp -rf /tmp/towerres/%s/towerres /home/maplye/httpd/towerresource/' % dist)
run('cp -rf /tmp/towerres/%s/migrations /home/maplye/httpd/towerresource/' % dist)
# run
with cd('/home/maplye/httpd/towerresource'):
run('chown -R apache:apache towerres')
run('python manage.py db upgrade')
# start apache
run('apachectl start')
# clean up
sudo('rm -rf /tmp/towerres /tmp/towerres.tar.gz')
具體參照官網: http://www.fabfile.org/
中文文檔: http://fabric-docs-cn.readthedocs.org/zh_CN/latest/