运维&部署

Fabric一个很有意思的自动化发布工具

2017-06-23  本文已影响20人  Luomeng

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/

上一篇下一篇

猜你喜欢

热点阅读