fabric 自动部署falsk 应用

1.介绍

Fabric 是一个高级 Python (2.7,3.4 +)库,旨在通过 SSH 远程执行 shell 命令,从而产生有用的 Python 对象。 它构建在 Invoke (子流程命令执行和命令行特性)和 Paramiko (SSH 协议实现)之上,扩展它们的 api 以相互补充并提供额外的功能。

Fabric 最基本的用途是通过 SSH 在远程系统上执行 shell 命令,然后(可选)查询结果。 默认情况下,远程程序的输出直接打印到终端,并被捕获。 

2.安装

pip install fabric==1.14.0 (python2)
pip install fabric3 (python3)

3.简单示例:fabfile.py

#!/usr/bin/env python
# coding=utf-8
from fabric.api import *
from fabric.context_managers import *

__author__ = 'jing'

"""
一个自动部署样例,主要过程是
1.进入项目目录
2.拉取最新代码
3.杀掉对应端口的进程
4.启动服务
5.查看状态
"""

# 项目配置,可以不参照我的
# 项目目录
PROJECT_PATH = '/data/project/my_project/'
# 项目名称,用于ps -ef时查询
PROJECT_NAME = "my_project"
# 端口
PROJECT_PORT = 5133
# git 分支,由于我配置了ssh 链接,所以可以直接拉取代码
GIT_BRANCH = 'master'


# 服务器配置,名称可以随便取
# 用户名
USER = 'root'
# 外网ip
HOSTS = ['127.0.0.1']
# 密码
PASSWORD = 'pwd'

# 重点配置
# fabric的上下文环境配置
env.user = USER
env.hosts = HOSTS
env.password = PASSWORD
# 可以把退出换为警告,以提供更灵活的错误处理。如果设置为False,则一条命令运行失败会就会退出,不再执行后面的命令。
env.warn_only = True
# 命令执行超时时间
env.command_timeout = 1800
# 连接超时时间
env.timeout = 3000
# 在连接到新服务器时,Fabric 尝试连接的次数。 由于向后兼容的原因,它默认只有一次连接尝试。
env.connection_attempts = 300


def check_user():
    # 切换身份
    run("sudo -s ", pty=True)


def pull():
    # 拉取最新代码
    run('git pull origin %s ' % GIT_BRANCH, pty=False)


def kill_run_procedure():
    run("kill $(lsof -i:%s|awk '{if(NR==2)print $2}')" % PROJECT_PORT)


def restart():
    # 这里有一个坑,执行source ../venv3/bin/activate命令 进入虚拟环境时会失败
    # 解决办法是写一个shell脚本,执行shell.脚本
    # restart.sh
    # `source /usr/local/pythonvenv/venv3/bin/activate
    # nohup python runserve.py &`

    sudo("sh restart.sh")


def show_result():
    run('ps -ef|grep  %s' % PROJECT_NAME)


def runserver():
    # 进入目录
    with cd(PROJECT_PATH):
        # 拉取代码
        pull()
        kill_run_procedure()  # 杀掉正在运行的程序
        # 重新启动
        restart()
        # 查看结果
        show_result()
        print('结束')

4.执行命令
在命令行里执行命令  fab -f [文件名] [方法名]

fab -f fabfile.py  runserver

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值