千家信息网

如何远程部署Fabric并支持Python3

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"如何远程部署Fabric并支持Python3",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何远程部署Fabric并支持Pyth
千家信息网最后更新 2026年11月01日如何远程部署Fabric并支持Python3

这篇文章主要为大家展示了"如何远程部署Fabric并支持Python3",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何远程部署Fabric并支持Python3"这篇文章吧。

安装 Fabric

$ pip install fabric --upgrade

注意,如果你安装的是旧版的 Fabric,那么新版的 Fabric 是不兼容旧版的,目前 Fabric 有三个版本,Fabric1 就是以前的 Fabric,只支持 Python2,已不推荐使用,而 Fabric2 就是现在的 Fabric,同时支持 Python2 和 Python3, 也是官方强烈推荐的版本, 还有一个 Fabric3,这是网友从旧版的 Fabric1 克隆过来的非官方版本,但是兼容 Fabric1,也支持 Python2 和 Python3。

最新的 Fabric 不需要 fabfile.py 文件, 也不需要 fab 命令,而现在网络上几乎所有的教程、资料都还是基于 fabric1 写的,当你在看那些教程的时候,注意甄别。 而新版 Fabric 提供的 API 非常简单。

运行命令

先看个例子,下面是一段部署脚本

# deploy.py
# 1. 创建一个远程连接
# 2. 进入指定目录
# 3. 在指定目录下面执行重启命令

from fabric import Connection

def main():
# ip 我是随便填的
# 如果你的电脑配了ssh免密码登录,就不需要 connect_kwargs 来指定密码了。
c = Connection("root@232.231.231.22", connect_kwargs={"password": "youpassword"})

with c.cd('/var/www/youproject'):
c.run("git pull origin master")
c.run("/usr/bin/supervisorctl -c ../supervisor/supervisord.conf restart youproject")

if __name__ == '__main__':
main()

执行

python deploy.py

执行完成后,最新代码就已经部署到正式环境并重启了服务,是不是非常方便,妈妈再也不要担心我在正式环境敲错命令删数据库跑路了。

Fabric 不仅支持 Linux,而且在 Windows 平台也能很好的运行,在中小型项目,它是非常不错的运维工具,有了 Frabic ,管理上百台服务器都不成问题。

构建连接

class Connection(Context):
host = None
user = None
port = None
ssh_config = None
connect_timeout = None
connect_kwargs = None
...

构建 Connection 对象的方式有不同的方式,例如你可以将 host 写成 "root@192.168.101.1:22" ,也可以作为3个参数分开写。而 connect_kwargs 是字典对象,通常填服务器的登录密码或者密钥。

上传文件

run 方法用于执行命令,cd 进入指定目录,put 方法用于上传文件, 例如:

from fabric import Connection
c = Connection('web1')
c.put('myfiles.tgz', '/opt/mydata')
c.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')

多台服务器

如果是要在多台服务器运行命令,简单的办法就是使用迭代,挨个服务器执行命令:

# web1,web2,mac1 都是服务器的名字,你也可以用ip代替
>>> from fabric import Connection
>>> for host in ('web1', 'web2', 'mac1'):
>>> result = Connection(host).run('uname -s')
... print("{}: {}".format(host, result.stdout.strip()))
...
web1: Linux
web2: Linux
mac1: Darwin

或者使用 SerialGroup

from fabric import SerialGroup as Group
pool = Group('web1', 'web2', 'web3', connect_kwargs={"password": "youpassword"} )
pool.put('myfiles.tgz', '/opt/mydata')
pool.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')

Group(*hosts, **kwargs) 参数说明:

  • *hosts: 可以传入多个主机名或IP

  • **kwargs 接收的参数可以和Connection一样,可以指定密码

以上是"如何远程部署Fabric并支持Python3"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

支持 命令 服务 服务器 密码 内容 参数 就是 文件 版本 目录 篇文章 运行 多台 对象 教程 方式 方法 环境 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网项目 北京互联网科技 猪兼强互联网科技 南京欣网互联网科技 郑州华宇互联网科技 狮子座互联网科技培训 互联网科技英文翻译 互联网科技股有哪些 恒银科技与互联网金融 想开互联网科技公司怎么样 广州新华互联网科技学校电竞方面 企晟互联网信息科技有限公司 华夏恒生科技与互联网科技 工业互联网等科技实现智能化赋能 卓翼科技产业互联网合作 工业互联网展湾科技股份有限公司 上海乐五互联网科技有限公司 西安左小互联网科技有限公司 保山互联网科技靠谱吗 上海旺乐尼互联网科技有限公司 科技互联网产品 互联网和高科技公司 北京三清互联网科技 新兴科技互联网创新大赛颁奖典礼 电子科技大学互联网创业大赛 想开互联网科技公司怎么样 企晟互联网信息科技有限公司 华夏恒生科技与互联网科技 科技和互联网行业的特点 黑龙江互联网科技公司
0