fabric使用实例(发布web包的一个例子)
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -* 3 #添加中文注释的编码 4 #fabfile.py 5 from fabric.api import * 6 7 env.user = 'root' 8 env.hosts = ['192.168.1.100'] 9 #远程服务器的密码,这个建议不要填写,宁愿在运行的过程输入,因为这是明文显示的,不安全 10 #也可以将机子的ssh打通,这样就可以避免输入密码的麻烦 11 #env.password = 'testtest' 12 13 #从版本库取出,并删除.svn文件 14 def download(): 15 local('rm -rf /tmp/newer' ) 16 local('mkdir /tmp/newer') 17 local('svn checkout svn://localhost/newer /tmp/newer') 18 local('find /tmp/newer -name ".svn" | xargs rm -rf') 19 20 #压缩打包 21 def pack(): 22 with lcd('/tmp/'): 23 local('tar czvf newer.tar.gz ./newer') 24 25 #部署远程服务器目录结构 26 def display(): 27 run('rm -rf /var/www/html/tmp') 28 run('mkdir /var/www/html/tmp') 29 # 将本地的压缩包发送到远程服务器 30 put('/tmp/newer.tar.gz','/var/www/html/tmp') 31 32 with cd('/var/www/html/tmp'): 33 run('tar xvf newer.tar.gz') 34 35 #部分目录进行特别处理 36 with cd('/var/www/html/newer/public/'): 37 run('cp -r ueditor ../../tmp') 38 39 with cd('/var/www/html/'): 40 run('rm -rf newer') 41 run('cp -r /var/www/html/tmp/newer ./') 42 43 with cd('/var/www/html/newer/public'): 44 run('rm -rf ueditor') 45 run('cp -r /var/www/html/tmp/ueditor ./') 46 47 # 执行部署 48 def go(): 49 download() 50 pack() 51 display()
fab -f deploy.py go