内容简介:今天分享一个Python的自动化发布工具—Fabric。我在前面文章「我相信细心的读者发现了,但是这里其实还缺一个工具。
今天分享一个 Python 的自动化发布工具—Fabric。
我在前面文章「 Linux系列开坑记(一)-常用的3个命令 」说了tar,rsync,supervisor这三个,从打包上传备份上线,进程管理工具。
我相信细心的读者发现了,但是这里其实还缺一个工具。
那就是衔接这三个步骤的工具,它可以通过SSH,让我们在远端服务器执行 shell 命令更加方便,更加智能的与服务器进行交互。
除了与远端服务交互,也非常方便我们日常执行较为复杂,需要要定制化的Python函数。
安装
pip install Fabric # 安装 pip freeze > requirements.txt # 把安装包写入文件中
一个官网例子:
def hello(name='sitin'): print("Hello world %s!" % name) 复制代码
使用fab执行一下效果如下:
这里面我们需要知道fab是fabric安装的命令行工具,我们主要是通过它进行操作。
我个人平时用的比较多的命令有:
run 远端执行命令 local 本地执行命令 cd 远端切换目录 lcd 本地切换 @task 装饰器声明函数为fab task
简单的脚本我觉得是已经够用了,复杂一点需要更多操作了,详情见后文。
部署步骤
通常情况下,作为一个Python工程师我们发布代码需要做的事儿常见的有以下几点:
-
git pull 拉取最新代码,比如master分支(或者develop分支)
-
tar 打包最新代码
-
rsync增量同步到远端服务器,去掉一些不需要的本地目录
-
备份数据库或者备份代码
-
supervisor指定重启远端一个或多个服务,通过交互式指令判断
-
sentry查看日志正常与否
除了最后一步,这里面所有的操作我们都在fabfile.py就进行操作了,一般情况下fabfile.py放在项目根目录,当然你放在其他地方也没有什么问题。通过**-f**进行指定就行。
概要讲了,下面请参看我们的一个实战例子
一个例子
from fabric.api import ( with_settings, hosts, cd, # 远端 lcd, # 本地切换目录 run, # 执行 env, ) EST_ENV = '127.0.0.1'TEST_USER = 'test'env.forward_agent = True# 允许本地 SSH 代理连接远程终端时跳转@hosts(TEST_ENV) # 指定远程操作的机器地址@with_settings(user=TEST_USER) # 用来临时设定 env 变量,可以等同于 with settingsdef deploy_test(): # 发布测试环境 local('git pull --rebase upsgream dev') # local执行本地命令拉取代码到本地,这个可以用CI自动发布,就不用拉取到本地。 local('rsync -r . --exclude=tmp/ --exclude=backup/ sitin@yourip:/data/your_project') # 上传代码 with cd('/data/your_project'): # 表示所有操作在这个目录下面 run('docker-compose pull test') # test镜像名 backup_db() # 这里其实就是一个普通备份函数 run('docker-compose stop test') # 执行远端命令同local相反 run('docker-compose rm -f test') run('docker-compose run --rm test python manage.py migrate') # db同步 run('docker-compose up -d test') 复制代码
在终端执行命令
fab deploy_test # 就能进行发布了测试环境了 fab deploy_product # 如果有就能发布了
通常情况下测试,开发,服务器与线上操作不太一样,我们可以通过上面方式进行操作。除了上面的操作之后,如果我们测试线上完全一直或者多台服务器,可以通过指定不同角色来进行选择服务器的发布。
env.roledefs = { 'test': ['test@yourip'], # 指定多台机器 'dev': ['dev@yourip'], 'prod': ['opt@yourip2'], } def deploy(branch=master): pass 复制代码
fab -R test(上面定义的角色) deploy -ffabfile.py deploy这里还可以指定发布哪个分支的代码
这样指定某一个角色的服务器,某一个分支进行发布非常简单方便,对于经常使用的复杂命令操作我们还可以作为缩写命令来进行操作。
其他
类似我们要在 docker 里面进行docker-compose run --rm pythonmanage.py migrate这种较长操作。
把操作写到fabfile.py里面的函数,就类似 linux 下面alias一样,fab migrate就完了简单方便。
除了上面,我们可以指定发布版本颜色进行区分发布成功出错与否,进行警示我们,非常方便快捷。
更多的大家可以参看fab -h更多参数含义,今天这个 工具 就介绍到这儿.
另外有不清楚docker-compose这个命令的参考我前面的文章。关于Python服务器运维,除了Fabric 还有SaltStack,Ansible更为复杂强大的管理工具,后期我们再进行分享,感谢你的关注。
一个坚持原创的Python公号
相关文章:
扫码免费加入
以上所述就是小编给大家介绍的《Python自动化部署工具-Fabric》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Syncd - 自动化部署工具
- 前端自动化部署方案探索
- 使用 Capistrano 进行自动化部署
- jenkins自动化项目部署实战
- Syncd——开源自动化部署工具
- SaltStack自动化批量部署Apache
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Flask Web开发实战
李辉 / 机械工业出版社 / 2018-8-1 / 129
这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。 • 国内首本Flask著作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。 • 内......一起来看看 《Flask Web开发实战》 这本书的介绍吧!