美文网首页运维&部署
Fabric一个很有意思的自动化发布工具

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

作者: Luomeng | 来源:发表于2017-06-23 15:32 被阅读20次

    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/

    相关文章

      网友评论

        本文标题:Fabric一个很有意思的自动化发布工具

        本文链接:https://www.haomeiwen.com/subject/aaxfcxtx.html