欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

tomcat 部署脚本

发布时间:2024/4/17 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 tomcat 部署脚本 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

将一下3个脚本放到一个目录里,做成一个 python 的包即可使用


脚本介绍

操作服务脚本

#!/usr/bin/env python # _*_coding:utf-8_*_ # Author: "Edward.Liu" # Author-Email: lonnyliu@126.compile"""process hanlde files incloud1.process statususe request get Url returncode2.process Stopuse psutil kill process3.process startuse subprocess run shell start process4.process loguse process logs5.process restart """# Improt Libary import psutil from subprocess import PIPE, Popen, STDOUT import os import sys import requests import datetime# Set vars process_name = "/software/apache-tomcat-jenkins" url = "http://172.31.1.230:8080"def process_id():# use process name get process pidprocess_base_str = "-Dcatalina.base=%s" % process_namepid = {}for proc in psutil.process_iter():try:pinfo = proc.as_dict(attrs=['pid', 'name', 'cmdline'])except psutil.NoSuchProcess:passelse:if process_base_str in pinfo.get('cmdline'):pid[process_name] = pinfo.get('pid')return piddef process_judgment():# 判断 URL 的状态码messages = ""try:jenkins_r = requests.get(url, timeout=None)return jenkins_r.status_codeexcept requests.ConnectTimeout:messges = "Timeout"return messgesexcept requests.ConnectionError:messages = "connection"return messagesexcept requests.HTTPError:messages = "httperror"return messageselse:return messagesdef process_status():# judgment process statusif not process_id().get(process_name) is None:if process_judgment() == 200:print "\033[32mProcess %s normal\033[0m" \% process_name.split('/')[2]else:print "\033[31mProcess Dont Access By:%s\033[0m" % url + "\n"\"\033[31mMesages:%s" % process_judgment()else:print "\033[31mProcess %s does not exist" % process_name.split('/')[2]def process_log_info():process_log = "tail -f %s/logs/catalina.out " % process_nameprocess_logs = Popen(process_log, shell=True,stdout=PIPE, stderr=STDOUT)returncode = process_logs.poll()try:while returncode is None:line = process_logs.stdout.readline()returncode = process_logs.poll()line = line.strip()print lineprint returncodeexcept KeyboardInterrupt:print 'ctrl+d or z'def process_kill():# judgment process existif process_id().get(process_name) is None:print "\033[31mProcess %s is Not Started" % process_name.split('/')[2]sys.exit(0)elif not process_id().get(process_name) is None \and process_judgment() != 200:print "\033[31mProcess %s is Started But Process access Failed \Messages:" % (process_name, process_judgment())sys.exit(0)# stop processPROCESSID = process_id().get(process_name)p = psutil.Process(pid=PROCESSID)p.kill()if process_id().get(process_name) is None:print "\033[32mprocess %s stop OK!!!\033[0m" \% process_name.split('/')[2]else:print "\033[31mProcess %s Stop Failed\!!![033[0m" \% process_name.split('/')[2]def process_init():# start processos.environ["JAVA_HOME"] = "/software/java_1.7"start_time = datetime.datetime.now()process_init_command = "%s/bin/startup.sh" % process_namestart = Popen(process_init_command, stdout=PIPE,stderr=PIPE, shell=True)stdout, stderr = start.communicate()print stderrprint "\033[32mWaitting Process %s Start OK !!!\033[0m" \% process_name.split('/')[2]while process_judgment() != 200:passend_time = datetime.datetime.now()print "\033[32mprocess start time(s):%s\033[0m" \% (end_time - start_time).seconds View Code

 

操作文件脚本

1 #!/usr/bin/env python 2 # _*_coding:utf-8_*_ 3 # Author: "Edward.Liu" 4 # Author-Email: lonnyliu@126.compile 5 6 7 import os 8 import zipfile 9 import datetime 10 11 # set process directory vars 12 DEPLOY_ENV = "mobile" 13 DEPLOY_WAR = "cybershop-%s-0.0.1-SNAPSHOT.war" % DEPLOY_ENV 14 UPLOAD_WAR_DIRECTORY = "/software/source_files" 15 DEPLOY_TMP = "/software/deploy_tmp/" 16 DEPLOY_REALY = "/software/deploy_%s/" % DEPLOY_ENV 17 STATIC_DIRECTORY = "/data/www" 18 PICTURE_DIRECTORY = "/software/picture" 19 # Set process Diectory Vars end 20 # Set Process Used dir 21 Source_Path = "%s/%s" % (UPLOAD_WAR_DIRECTORY, DEPLOY_WAR) 22 now_time = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") 23 Last_File = "%s%s-%s" % (DEPLOY_TMP, DEPLOY_WAR.split('.war')[0], now_time) 24 # Set process Used End 25 26 27 def process_judgment_dir(): 28 # 判断目录是否存在 29 if not os.path.exists(UPLOAD_WAR_DIRECTORY): 30 os.makedirs(UPLOAD_WAR_DIRECTORY) 31 elif not os.path.exists(DEPLOY_TMP): 32 os.makedirs(DEPLOY_TMP) 33 elif not os.path.exists(DEPLOY_REALY): 34 os.makedirs(DEPLOY_REALY) 35 else: 36 print "\033[32mUsed Dir Is exists\033[0m" 37 38 39 def process_source(): 40 """ 41 1.解压部署文件 42 2.创建图片存放目录 43 """ 44 ret = 0 45 # 图片目录创建 46 Last_File_Pic = "%s/assets" % Last_File 47 if not os.path.exists(Last_File): 48 # 创建程序目录 49 os.makedirs(Last_File) 50 # 创建图片目录 51 os.makedirs(Last_File_Pic) 52 try: 53 zip_ref = zipfile.ZipFile(Source_Path, 'r') 54 zip_ref.extractall(Last_File) 55 zip_ref.close() 56 ret = 1 57 return ret 58 except IOError: 59 print "\033[31m%s Is Not Exists Please send Files\033[0m" \ 60 % DEPLOY_WAR.split('.war')[0] 61 return ret 62 63 64 def process_link(): 65 if process_source() == 1: 66 # 创建项目启动所需链接 67 dest_pic = "%s/assets/upload" % Last_File 68 dest_static = "%s/www" % Last_File 69 os.symlink(PICTURE_DIRECTORY, dest_pic) 70 os.symlink(STATIC_DIRECTORY, dest_static) 71 # 创建项目启动所需链接----END 72 # 创建启动程序链接 73 dest_deploy_path = "%s%s" % (DEPLOY_REALY, DEPLOY_WAR.split('.war')[0]) 74 os.symlink(Last_File, dest_deploy_path) 75 if os.path.islink(dest_deploy_path): 76 print "\033[32mCrate Link Process Is Scueeful\033[0m" 77 # 创建启动程序链接----END View Code

 

整合脚本

#!/usr/bin/env python # _*_coding:utf-8_*_ # Author: "Edward.Liu" # Author-Email: lonnyliu@126.compileimport handle_files import handle_process import argparse import sys import time import datetimedef check_arg(args=None):parser = argparse.ArgumentParser(description="EG: '%(prog)s' -p start|stop")parser.add_argument('-p', '--process', default='log',help='Input One of the {start|stop|status|log}')parser.add_argument('-v', '--version', action='version',version='%(prog)s 1.1')if len(sys.argv) == 1:parser.print_help()sys.exit(1)return parser.parse_args(args)def main():args = check_arg(sys.argv[1:])if args.process == "start":handle_process.process_init()elif args.process == "stop":handle_process.process_kill()elif args.process == "status":handle_process.process_status()elif args.process == "log":handle_process.process_log_info()elif args.process == "restart":handle_process.process_kill()time.sleep(10)handle_process.process_init()elif args.process == "deploy":handle_files.process_judgment_dir()print "\033[32mWaitting Unzip project\033[0m" + "." * 10start_time = datetime.datetime.now()handle_files.process_source()end_time = datetime.datetime.now()print "\033[32mPorject Unzip End-time(s):%s\033[0m" \% (end_time - start_time).secondshandle_process.process_kill()handle_files.process_link()handle_process.process_init()if __name__ == '__main__':main() View Code

 

转载于:https://www.cnblogs.com/edwardlogs/p/Tomcat-Process-Deploy.html

总结

以上是生活随笔为你收集整理的tomcat 部署脚本的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。