>백엔드 개발 >PHP 튜토리얼 >고통 없는 재시작 서비스 튜토리얼 Python 언어 버전을 달성하기 위한 nginx tomcat 클러스터 구성

고통 없는 재시작 서비스 튜토리얼 Python 언어 버전을 달성하기 위한 nginx tomcat 클러스터 구성

WBOY
WBOY원래의
2016-08-08 09:22:211177검색

마지막으로 공유한 것은 쉘 버전: nginx였습니다. 고통 없는 서비스 재시작을 달성하기 위한 Tomcat 클러스터 구성 튜토리얼

셸 구문의 이상한 점은 정말 견딜 수 없다고 생각하지만, 스크립트 처리 및 셸과의 상호 작용에 대한 Java의 자연스러운 약점으로 인해 마침내 모든 종류의 작업을 수행하기 위해 Python을 선택하게 되었습니다. 스크립트 구현 Tomcat을 쉽게 다시 시작하는 스크립트를 구현한 후 디버깅의 불편함 외에도 스크립트 및 셸 상호 작용으로서의 Python은 단순한 인공물이라는 것을 알았습니다.

스크립트 구현은 다음과 같습니다.

#encoding=utf8
import re
import os
import 명령
import time
import urllib2
from urllib2 import URLError
import 소켓
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+"% sawk '{인쇄 $2}'|xargs kill"
# conf 파일이 bak인지 여부로 실행 중인 Tomcat 포트를 확인합니다
def find_running_tomcat_port():
for _port in ports:
(Tomcat_conf_name):
Port = _Port
중단
is_tomcat_port_running(포트)이 아닌 경우
반환 -1
반환 포트
# >def is_tomcat_port_running(tomcat_port):
ret=request_share_url(tomcat_port)
ret인 경우 ==200:
return 1
return 0
#포트로 공유 주소 요청
def request_share_url (tomcat_port):
소켓.setdefaulttimeout(10)
url=zuidaima_domain+": "+tomcat_port+"/share.htm"
ret=-1
try:
res=urllib2.urlopen(url)
ret=res.code
URLError, e: print "request url#"+url+" error"
return ret
#nginx의 tomcat 포트 전환
def switch_nginx_conf(running_tomcat_port, Stopped_tomcat_port):
running_tomcat_c> if(not os.path. 존재합니다(running_tomcat_conf_name)):
반환 -1
중지된_tomcat_c> if(not os.path.exists(stoped_tomcat_conf_name+ zuidaima_conf_name_bak_suffix) ):
반환 -2
os.rename(running_tomcat_conf_name, running_tomcat_conf_name+zuidaima_conf_name _bak_접미사) time.sleep(5) # 5초 동안 절전 모드
while(not is_tomcat_port_running(Tomcat_port)):
"Start Tomcat"+TOMCAT_PORT
인쇄 Time.sleep (5) # (5초
1 반환
# 지정된 포트의 Tomcat 서비스 중지
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) # 5초 동안 절전 모드
1 반환
#Tomcat 서비스 전환
def switch_tomcat(running_tomcat_port, Stoped_tomcat_port):
start_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 "tomcat 전환 시작"
running_tomcat_port=find_running_tomcat_port( )
if running_tomcat_port==-1:
print "running tomcat & conf가 유효하지 않습니다."
return
ports.remove(running_tomcat_port)
Stoped_tomcat_port=ports[0]
print " Tomcat을 "+running_tomcat_port+"에서 "+stoped_tomcat_port ret=switch_tomcat(running_tomcat_port, Stopped_tomcat_port)
if(ret!=1):
print "fail to switch_tomcat,ret:", ret
return
print "nginx conf 전환 시작"
ret=switch_nginx_conf(running_tomcat_port, Stopped_tomcat_port)
if(ret!=1):
print "fail to switch_nginx_conf,ret:", ret
return
print "nginx conf 다시 로드 시작"
ret=reload_nginx_conf()
if(ret!=1):
print "fail to reload_nginx_conf,ret:", ret
return
print "finish to switch tomcat"
start()

사진과 진실이 있습니다:

또한 Alibaba는 Cloud 서버에는 Python 버전이 Python 2.4.3(#1, Jan 9 2013, 06:49:54)으로 스크립트를 작성하는 과정에서 많은 구문이 상위 버전에서만 사용 가능하므로 주의해야 합니다. 파이썬 문제를 배울 때 버전.

이 버전의 구현은 Python이 고급 언어이기 때문에 비즈니스 구현이 매우 엄격하기 때문입니다. 예를 들어 시작 중에 conf 파일의 접미사를 기반으로 누가 tomcat을 실행하고 있는지 확인할 수 있습니다. . tomcat의 start.sh를 실행한 후 다시 urllib를 사용하여 해당 포트의 share.htm을 요청하여 실제로 시작이 성공했는지 확인합니다.

즐기세요.


위 내용은 내용을 포함하여 간편한 서비스 재시작 튜토리얼을 달성하기 위한 nginx tomcat 클러스터 구성의 Python 언어 버전을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.