See You Again

使用 fabric 进行自动化部署

是否厌倦了手工打包、上传、登陆部署这一繁琐的流程?即便你将其中一些重复的工作脚本化了还是觉得发布一个版本太繁琐。。

今天介绍一个自动化的部署工具 fabric,只需在本地配置后,有多少台服务器都可以很方便的实现自动部署了!

网上有很多教程了,这里就不详细介绍了。fabric是一个 python 库,本质上是通过 ssh 去部署的,只需要在脚本里写好需要在本地执行、远程执行的命令两部分后就 OK 了,执行过程全部交给 fabric 搞定了。

安装很简单啦:

  1. brew install fabric
  2. pip install fabric

常用的函数: localrunlcdcdputgetenv

看看我的 fabfile.py(实现一个网站的打包、上传、部署、重启):

  1. from fabric.api import *
  2. env.user = 'user'
  3. env.hosts = ['host1', 'host2']
  4. def deploy():
  5. pkg = local('git describe --tags', capture=True) + '.tgz'
  6. # 打包
  7. local('rm -rf dist && mkdir dist')
  8. local('cp -r {app.py,static,templates,uwsgi.ini,doc/settings.cfg} dist/')
  9. with lcd('dist'):
  10. local("tar zcf " + pkg + " ./*")
  11. # 上传
  12. remote_dst_dir = '/home/user/app/'
  13. put('dist/' + pkg, remote_dst_dir)
  14. # 部署,加访问权限,重启
  15. with cd(remote_dst_dir):
  16. run('tar -zxf %s' % pkg)
  17. run('chmod a+rx ./static/ -R')
  18. run('touch ./uwsgi.ini')

运行命令 fab deploy 等着看部署结果吧:

  1. ~ $ fab deploy
  2. [testweb.top] Executing task 'deploy'
  3. [localhost] local: git describe --tags
  4. [localhost] local: rm -rf dist && mkdir dist
  5. [localhost] local: cp -r {app.py,static,templates,uwsgi.ini,doc/settings.cfg} dist/
  6. [localhost] local: tar zcf 3.2.tgz ./*
  7. [testweb.top] put: dist/3.2.tgz -> /home/user/app/3.2.tgz
  8. [testweb.top] run: tar -zxf 3.2.tgz
  9. [testweb.top] run: chmod a+rx ./static/ -R
  10. [testweb.top] run: touch ./uwsgi.ini
  11. Done.
  12. Disconnecting from testweb.top... done.

想进一步了解就去官网看看吧。

2016-03-21 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑