使用fabric进行自动化部署
fabric也使用好久了,这次静下心来好好整理一遍,当然这只是很简单的用法
参考文档
安装
凡事先从安装说起,fabric不支持python3,所以只能安装python2版本的fabric
由于我使用了virtualenv,所以先退出虚拟环境
1$ deactivate
安装全局fabric
1$ sudo pip2 install fabric
使用
使用之前先想想以前是怎么部署的,是不是这样:
先ssh到服务器,进行数据备份,然后退出(或者重新开一个终端),然后上传文件到服务器,
再ssh到服务器,安装所需要的模块,然后退出,ssh到root账户,重启,再退出···
是不是想想都烦
没关系,有了fabric后就不必这么麻烦了,需求:
备份数据
1# fabfile.py 2from fabric.api import run, env, cd, local, put, get 3 4def backup(): 5 env.user = 'root' 6 dirname = 'backup_' + datetime.now().strftime('%Y%m%d') 7 with cd('/root/backup/'): 8 run('./backup-db.sh') 9 run('tar zcvf %s.tar.gz %s/' % (dirname, dirname)) 10 print '正在下载备份······' 11 get('/root/backup/%s.tar.gz' % dirname, 'backup/')
使用fab backup就可以一步备份
代码打包上传
1def pack(): 2 '''这是我需要打包的文件''' 3 local('pip freeze > requirements.txt') 4 local('tar zcvf hohai.tar.gz manager.py requirements.txt app/ migrations/\ 5 --exclude="*.pyc" \ 6 --exclude="*.swp" \ 7 --exclude="**/__pycache__" \ 8 --exclude="**/.webassets-cache"') 9 10def putcode(): 11 env.user = '账户名称' 12 print '正在上传代码······' 13 put('hohai.tar.gz', '~/hhuc/') 14 local('rm hohai.tar.gz') 15 print '正在备份数据······' 16 run('cp -r ~/hhuc/app/ ~/backup/hhuc/') 17 with cd('~/hhuc/'): 18 run('rm -rf app/') 19 run('tar zxvf hohai.tar.gz') 20 run('rm hohai.tar.gz')
使用fab pack putcode一步打包上传
重启服务器
1def restart(): 2 """重启服务器""" 3 env.user = 'root' 4 run('supervisorctl restart hhuc')
一键部署
1def deploy(): 2 env.user = 'honmaple' 3 print '正在上传代码······' 4 put('hohai.tar.gz', '~/hhuc/') 5 local('rm hohai.tar.gz') 6 print '正在备份数据······' 7 run('cp -r ~/hhuc/app/ ~/backup/hhuc/') 8 with cd('~/hhuc/'): 9 run('rm -rf app/') 10 run('tar zxvf hohai.tar.gz') 11 run('rm hohai.tar.gz') 12 restart() 13 print '部署成功······'
使用fab pack deploy就可部署
ok,就这样
