fabric 自动部署falsk 应用

2024-01-16 22:48

本文主要是介绍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 = 300def 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

 

这篇关于fabric 自动部署falsk 应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614174

相关文章

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur