233饿13 发表于 2015-12-18 08:58:43

Python脚本实现项目工程自动远程部署

说明:
该脚本实现将本地的项目工程包远程发送到远程服务器上.并将老版本的项目备份,上传新的项目,本脚本的中的项目自动项目自身的启动脚本.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/envpython
#coding:utf-8
#Author Summer
#Create date:2015-07-29
import datetime
import time
from fabric.context_managers import *
from fabric.contrib.console import confirm
from fabric.colors import *
from fabric.apiimport *
#本地开发服务器信息
env.local_package_dir='/web'
env.time=time.strftime("%Y%m%d")
env.local_bakcup_dir='/tmp'
env.local_package_name='target'
#远程服务器信息
env.hosts=['223.203.219.133','223.203.219.134','223.203.219.135']
env.port='3217'
env.user='root'
env.password="bJJD2014!@#$xuniSHIJIE2707"
env.remote_package_dir='/web'
#备份函数
@task
@runs_once
def backup_task():
   print yellow("<--------------开始备份新包-------------->")
   with lcd ("%s" %env.local_package_dir):
          local("tar zcvf %s-%s.tar.gz %s" %(env.local_package_name,env.time,env.local_package_name))
   print blue("<------------新包备份创建成功------------->")
#上传函数
@task
def put_task():
   print yellow("<-------------开始停止服务--------->")
   run ('%s/%s/APIServer stop' %(env.local_package_dir,env.local_package_name))
   print blue("<-------------停止服务成功--------->")
   print yellow("<-------------删除旧包------------>")
   run('rm -fr %s/%s*' %(env.remote_package_dir,env.local_package_name))
   print blue("<-----------旧包删除成功-------->")
   
   print yellow("<-----------开始上传新包-------->")
   #run ("mkdir %s" %env.remote_package_dir)
   with lcd ("%s" %env.local_package_dir):
   put('%s-%s.tar.gz' %(env.local_package_name,env.time),'%s/%s-%s.tar.gz' %(env.local_package_dir,env.local_package_name,env.time))
   print blue('<-----------新包上传成功---------->')
   
   run ('tar zxf %s/%s-%s.tar.gz -C %s' %(env.local_package_dir,env.local_package_name,env.time,env.local_package_dir))
   print blue('<-------------解压成功------------>')
   
   with cd ('%s/%s' %(env.remote_package_dir,env.local_package_name)):
    run ('./APIServer start')
   print blue ('<-------APIServer服务运行成功------->')
@task
def start():
   backup_task()
   put_task()



页: [1]
查看完整版本: Python脚本实现项目工程自动远程部署