日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat 部署脚本

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 部署脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。