Das letzte Mal, dass ich geteilt habe, war die Shell-Version: nginx Tutorial zur Tomcat-Cluster-Konfiguration für einen reibungslosen Neustart des Dienstes
Ich finde die Seltsamkeit der Shell-Syntax wirklich unerträglich, aber Javas natürliche Schwäche bei der Verarbeitung von Skripten und der Interaktion mit der Shell hat mich schließlich dazu veranlasst, mich für Python zu entscheiden, um alle möglichen Aufgaben zu erledigen Nachdem ich das Skript implementiert hatte, um Tomcat problemlos neu zu starten, stellte ich fest, dass Python als Skript und Shell-Interaktion einfach ein Artefakt ist.
Das Folgende ist die Skriptimplementierung:
#encoding=utf8
import re
import os
import commands
import time
import urllib2
from urllib2 import URLError
import socket
tomcat_ps_name=" apache-tomcat-6_"
flag=tomcat_ps_name+"d{4}"
ports=["8080", "8081"]
nginx_path="/usr/local/nginx/"
nginx_vhost_c /vhost/"
nginx_bin_path=nginx_path+"sbin/nginx"
zuidaima_c>tomcat_path="/usr/local/apache-tomcat-_"
zuidaima_c>tomcat_startup_bin_path="/bin/startup.sh"
tomcat_shutdown_bin_path="/bin/shutdown.sh"
ps_grep_tomcat="ps -ef|grep "
zuidaima_domain="http://www.zuidaima.com"
kill_tomcat_pid=ps_grep_tomcat+tomcat_ps_name+"% s|awk '{print $2}'|xargs kill"
# Bestätigen Sie den laufenden Tomcat-Port, indem Sie überprüfen, ob die Conf-Datei bak ist
def find_running_tomcat_port():
für _port in ports:
(Tomcat_conf_name):
Port = _Port
Unterbrechen
wenn nicht is_tomcat_port_running (port):
Return -1
Return Port
# >def is_tomcat_port_running(tomcat_port):
ret=request_share_url(tomcat_port)
if ret ==200:
return 1
return 0
#Anfordern einer Freigabeadresse mit Port
def request_share_url (tomcat_port):
socket.setdefaulttimeout(10)
url=zuidaima_domain+": "+tomcat_port+"/share.htm"
ret=-1
try:
res=urllib2.urlopen (url)
ret=res.code
außer URLError, e:
print „request url#“+url+“ error“
return ret
#Switch the tomcat port of nginx
def switch_nginx_conf(running_tomcat_port, gestoppt_tomcat_port):
running_tomcat_c> if(not os.path. existiert(running_tomcat_conf_name)):
return -1
scribed_tomcat_c> if(not os.path.exists(stoped_tomcat_conf_name+ zuidaima_conf_name_bak_suffix) ):
return -2
os.rename(running_tomcat_conf_name, running_tomcat_conf_name+zuidaima_conf_name_bak_s Suffix)
os.rename(stoped_tomcat_conf_name+zuidaima_conf_name_bak_suffix,scribed_tomcat_conf_name)
Return 1
#Starte den Tomcat-Dienst des angegebenen Ports
def Startup_Tomcat(Tomcat_Port):
Shutdown_Tomcat(Tomcat_Port)
Ausgänge =commands.getoutput(tomcat_path+tomcat_port+tomcat_startup_bin_path)
time.sleep(5) # Sleep for 5 seconds
while(not is_tomcat_port_running (Tomcat_port)):
Print „Start Tomcat“+TOMCAT_PORT
Time.sleep (5) # (5 Sekunden
Return 1
# Tomcat-Dienst des angegebenen Ports stoppen
DEF SHUTDOWN_TOMCAT (Tomcat_Port_Port ):
commands.getoutput(kill_tomcat_pid%(tomcat_port))
while(is_tomcat_port_running(tomcat_port)):
print "stop tomcat "+tomcat_port
time.sleep(5) # Sleep for 5 seconds
Return 1
#Switch tomcat service
def switch_tomcat(running_tomcat_port,scribed_tomcat_port):
startup_tomcat(stoped_tomcat_port)
shutdown_tomcat(running_tomcat_port)
return 1
#reload nginx conf
def reload_nginx_conf():
. commands.getoutput(nginx_bin_path+ " -s reload")
return 1
def start():
print "start to switch to switch"
running_tomcat_port=find_running_tomcat_port( )
if running_tomcat_port==-1:
print „running tomcat & conf is invalid“
return
ports.remove(running_tomcat_port)
gestoppt_tomcat_port=ports[0]
print „ start to switch to tomcat from „+running_tomcat_port+“ to „+stoped_tomcat_port
ret=switch_tomcat(running_tomcat_port, gestoppt_tomcat_port)
if(ret!=1):
print „fail to switch_tomcat,ret:“, ret
return
print „start to switch nginx conf“
ret=switch_nginx_conf(running_tomcat_port, gestoppt_tomcat_port)
if(ret!=1):
print „fail to switch_nginx_conf,ret:“, ret
return
print „start to reload nginx conf“
ret=reload_nginx_conf()
if(ret!=1):
print „fail to reload_nginx_conf,ret:“, ret
return
print „finish to switch tomcat“
start()
Es gibt Bilder und die Wahrheit:
Außerdem die Alibaba Der Cloud-Server wird mit der Python-Version 2.4.3 geliefert (#1, 9. Januar 2013, 06:49:54). Beim Schreiben von Skripten sind viele Syntaxen nur in höheren Versionen verfügbar, daher sollte jeder darauf achten Version beim Erlernen von Python.
Die Implementierung dieser Version ist darauf zurückzuführen, dass Python eine Hochsprache ist, sodass die Geschäftsimplementierung sehr streng ist. Während des Startvorgangs können wir beispielsweise anhand des Suffixes der Conf-Datei bestätigen, wer Tomcat ausführt . Nachdem Sie die Datei „startup.sh“ von Tomcat ausgeführt haben, fordern Sie mit urllib erneut die Datei „share.htm“ des Ports an, um sicherzustellen, dass der Startvorgang tatsächlich erfolgreich ist.
Genieße es.
Das Obige stellt die Python-Sprachversion des Nginx-Tomcat-Cluster-Konfigurations-Tutorials vor, einschließlich des Inhalts, der für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.