Fabric是一个Python(2.5~2.7)类库和命令行工具。官网的对该程序的定位是:Pythonic remote execution
Fabric提供了一套解决方案:执行本地或远程命令(包括通过sudo方式)、上传/下载文件,还有一些辅助功能:提示用户输入、终止程序。
安装
pip install fabric
用法
一个栗子,在项目中新建fabfile.py文件,内容如下:
# coding=utf-8
from fabric.api import *
from fabric.colors import *
# 远程服务器登陆使用的用户名
env.user = 'root'
# 需要进行操作的服务器地址
# env.hosts = ['server1.example.com', 'server2.example.com']
env.hosts = ['你的服务器IP']
def pack():
# 以 tar 归档的方式创建一个新的代码分发
local('python setup.py sdist --formats=gztar', capture=False)
def deploy():
# 之处发布产品的名称和版本
# 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)
# 删除之前残留数据
run('rm -rf /tmp/Hole /tmp/Hole.tar.gz')
# 将代码归档上传到服务器当中的临时文件夹内
put('dist/%s.tar.gz' % dist, '/tmp/Hole.tar.gz')
# 创建一个文件夹,进入这个文件夹,然后将我们的归档解压到那里
run('mkdir /tmp/Hole')
with cd('/tmp/Hole'):
run('tar xzf /tmp/Hole.tar.gz')
with cd('Hole-1.0'):
# 使用我们虚拟环境下的 Python 解释器安装我们的包
run('/var/www/Hole/venv/bin/python setup.py install')
# 现在我们的代码已经部署成功了,可以删除这个文件夹了
run('rm -rf /tmp/Hole /tmp/Hole.tar.gz')
# 通过supervisor管理进程
run('supervisorctl restart hole_project')
以上,通过本地打包Python程序,上传到指定的服务器,然后解压安装后,通过Supervisor重启Gunicorn服务。
在终端执行fab pack deploy
会执行以上程序,打包并部署。
更多详细内容,请移步官网:http://www.fabfile.org/#
官方文档:http://docs.fabfile.org/en/1.13/