fabric 是一个python包 是一个基于ssh的部署工具包
通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的。
简单介绍下 fabric的常用命令
常用命令
lcd(dir): 进入本机某目录
local(cmd): 本机上执行命令
cd(dir): 进入服务器某目录
run(cmd):服务器上执行命令
例如一下脚本:
from datetime import datetime from fabric.api import * # 登录用户和主机名: env.user = 'root'
env.password='xxxxx' env.hosts = ['192.168.0.1','192.168.0.2'] # 如果有多个主机,fabric会自动依次部署 def pack(): ' 定义一个pack任务 ' # 打一个tar包: tar_files = ['*.py', 'static/*', 'templates/*', 'favicon.ico'] local('rm -f example.tar.gz') local('tar -czvf example.tar.gz --exclude=\'*.tar.gz\' --exclude=\'fabfile.py\' %s' % ' '.join(tar_files)) def deploy(): ' 定义一个部署任务 ' # 远程服务器的临时文件: remote_tmp_tar = '/tmp/example.tar.gz' tag = datetime.now().strftime('%y.%m.%d_%H.%M.%S') run('rm -f %s' % remote_tmp_tar) # 上传tar文件至远程服务器: put('shici.tar.gz', remote_tmp_tar) # 解压: remote_dist_dir = '/srv/www.example.com@%s' % tag remote_dist_link = '/srv/www.example.com' run('mkdir %s' % remote_dist_dir) with cd(remote_dist_dir): run('tar -xzvf %s' % remote_tmp_tar) # 设定新目录的www-data权限: run('chown -R www-data:www-data %s' % remote_dist_dir) # 删除旧的软链接: run('rm -f %s' % remote_dist_link) # 创建新的软链接指向新部署的目录: run('ln -s %s %s' % (remote_dist_dir, remote_dist_link)) run('chown -R www-data:www-data %s' % remote_dist_link) # 重启服务: fcgi = '/etc/init.d/py-fastcgi' with settings(warn_only=True): run('%s stop' % fcgi) run('%s start' % fcgi)
运行命令 :
$ fab pack
$ fab deploy
相关链接 :
http://www.liaoxuefeng.com/article/001373892650475818672edc83c4c978a45195eab8dc753000
http://docs.fabfile.org/en/1.10/tutorial.html