1. 当前位置:网站首页 > 

使用python fabric写的一个简单的远程部署示例


python基础教程:

http://www.runoob.com/python/python-tutorial.html

fabric帮助文档:

http://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html

一、环境

1 安装python

python版本2.5 – 2.7

mac上安装方式

brew install python

查看版本

python --version

 

2 安装fabric

mac上安装命令

brew install fabric

 

二、简单示例程序

这个程序要在多个服务器部署,可以部署多个项目,但是具体部署哪个项目,需要在参数中传入。部署多个服务器时,是依次部署,依次启动的方式,不会导致同时将服务器关闭,到时服务不可用的问题!

该脚本文件名为deploy.py

Python代码  收藏代码
  1. #!/usr/bin/env python  
  2. # encoding:utf-8  
  3.   
  4. from fabric.api import *  
  5. import time  
  6.   
  7. TOMCAT_HOME = "/xxxx/apache-tomcat-8.0.29"  
  8. WAR_DIR = "/home/jenkins/.jenkins/xxxx/target/"  
  9.   
  10. #要远程部署的几个服务器  
  11. servers = [  
  12.     'myserver1',  
  13.     'myserver2'  
  14. ]  
  15.   
  16. #这几个服务器有统一的用户名访问  
  17. env.user= "server_username "  
  18.   
  19. #服务器用户密码  
  20. env.password = "server_password"  
  21.   
  22. def deploy(projectname):  
  23.     for server in servers:  
  24.         print("正在部署服务器:" +  server + " 项目名:" + projectname)  
  25.         with settings(host_string = server):  
  26.             deploy_one_server(projectname)  
  27.             print("部署服务器 "+ server +" 项目" + projectname + " 完成!")  
  28.             print "休息60秒"  
  29.             time.sleep(60)  
  30.   
  31. #部署一个服务器  
  32. def deploy_one_server(projectname):  
  33.     warfilename = projectname + ".war"  
  34.     #1,上传文件到tomcat根目录  
  35.     print("1,上传文件到tomcat根目录")  
  36.     with lcd(WAR_DIR):  
  37.         with cd(TOMCAT_HOME):  
  38.             put(warfilename,warfilename)  
  39.             run("ls")  
  40.   
  41.     #2,关闭服务器  
  42.     print "2,关闭服务器"  
  43.     close_tomcat()  
  44.   
  45.     #3,删除原有的部署文件  
  46.     print "3,删除原有的部署文件"  
  47.     with cd(TOMCAT_HOME + "/webapps/"):  
  48.         run("rm -rf " + projectname + "/")  
  49.         run("rm -rfv " + warfilename)  
  50.   
  51.     #4,将已上传的文件放到tomcat项目目录  
  52.     print "4,将已上传的文件放到tomcat项目目录"  
  53.     with cd(TOMCAT_HOME):  
  54.         run("mv " + warfilename + " ./webapps/")  
  55.   
  56.     #5,启动服务器  
  57.     print "5,启动服务器"  
  58.     run(TOMCAT_HOME +"/bin/startup.sh",pty=False)  
  59.   
  60. #关闭tomcat服务器  
  61. def close_tomcat():  
  62.     #kill可能会因为没有tomcat线程,导致关闭命令失败,所以需要在产生异常时继续执行  
  63.     with settings(  
  64.         hide('warnings''running''stdout''stderr'),  
  65.         warn_only=True  
  66.     ):  
  67.         run("ps -ef |grep tomcat |grep -v grep   |awk -F \" \" '{print $2}' | xargs kill -9")  

 

注意:最后启动tomcat时,run方法要使用pty=False

ptyTrue的情况下启tomcat正常,但会在束后tomcat进程也被干

 参考资料:https://segmentfault.com/q/1010000005131935


脚本调用:

fab -f deploy.py deploy:projectname=xxx


本文最后更新于2018-6-29,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:https://www.chensj.net/?post=112
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

微信号:chensj923

工作日:9:00-23:00,节假日休息

扫码关注