Fabric是一個Python(2.5~2.7)類庫和命令行工具狱从。官網(wǎng)的對該程序的定位是:Pythonic remote execution
Fabric提供了一套解決方案:執(zhí)行本地或遠程命令(包括通過sudo方式)捡多、上傳/下載文件牡昆,還有一些輔助功能:提示用戶輸入、終止程序聊记。
安裝
pip install fabric
用法
一個栗子矩距,在項目中新建fabfile.py文件,內(nèi)容如下:
# coding=utf-8
from fabric.api import *
from fabric.colors import *
# 遠程服務(wù)器登陸使用的用戶名
env.user = 'root'
# 需要進行操作的服務(wù)器地址
# env.hosts = ['server1.example.com', 'server2.example.com']
env.hosts = ['你的服務(wù)器IP']
def pack():
# 以 tar 歸檔的方式創(chuàng)建一個新的代碼分發(fā)
local('python setup.py sdist --formats=gztar', capture=False)
def deploy():
# 之處發(fā)布產(chǎn)品的名稱和版本
# dist = local('python setup.py --fullname', capture=True).strip()
dist = local('python setup.py --fullname', capture=True).strip()
print green("package name is :%s" % dist)
# 刪除之前殘留數(shù)據(jù)
run('rm -rf /tmp/Hole /tmp/Hole.tar.gz')
# 將代碼歸檔上傳到服務(wù)器當中的臨時文件夾內(nèi)
put('dist/%s.tar.gz' % dist, '/tmp/Hole.tar.gz')
# 創(chuàng)建一個文件夾狮含,進入這個文件夾,然后將我們的歸檔解壓到那里
run('mkdir /tmp/Hole')
with cd('/tmp/Hole'):
run('tar xzf /tmp/Hole.tar.gz')
with cd('Hole-1.0'):
# 使用我們虛擬環(huán)境下的 Python 解釋器安裝我們的包
run('/var/www/Hole/venv/bin/python setup.py install')
# 現(xiàn)在我們的代碼已經(jīng)部署成功了曼振,可以刪除這個文件夾了
run('rm -rf /tmp/Hole /tmp/Hole.tar.gz')
# 通過supervisor管理進程
run('supervisorctl restart hole_project')
以上,通過本地打包Python程序蔚龙,上傳到指定的服務(wù)器冰评,然后解壓安裝后,通過Supervisor重啟Gunicorn服務(wù)木羹。
在終端執(zhí)行fab pack deploy
會執(zhí)行以上程序甲雅,打包并部署。
更多詳細內(nèi)容坑填,請移步官網(wǎng):http://www.fabfile.org/#
官方文檔:http://docs.fabfile.org/en/1.13/