概述
肯定有小伙伴疑问哈,安装nginx仅仅需要几条命令如果只是单单安装简单使用os.system,os.Popen几乎就足以完成,那么为什么要写这么多呢。笔者在写这段代码的时候一个是想让代码更加美观,显得比较专业。另一方面无论安装什么,配置什么,仅仅在nginx_install_command()函数和main()函数中稍作修改就可以了。
#!/usr/bin/python3
# -*- conding: UTF-8 -*-
import subprocess
import os
import shutil
import re
import tarfile
def execute_cmd(cmd):
p=subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
stdout,stderr=p.communicate()
if p.returncode != 0 :
return p.returncode, stderr
return p.returncode, stdout
def unpackage_nginx(package,package_dir,data_dir):
#unpackage_dir = os.path.splitext(package)[0]
if os.path.isdir(package_dir):
shutil.rmtree(package_dir)
if os.path.isdir(data_dir):
raise SystemExit("{0} Directory already exists".format(data_dir))
t = tarfile.open(package,'r:gz')
t.extractall('.')
def nginx_install_command(data_dir,package_dir):
dep='yum -y install gcc pcre-devel zlib-devel openssl openssl-devel'
configure_path=os.path.join(package_dir,"configure")
configure_cmd="{0} --prefix={1} && make && make install".format(configure_path,data_dir)
return dep,configure_cmd
def start_nginx(cmd):
returncode,out=execute_cmd(cmd)
if returncode != 0:
raise SystemExit('Execute {0} error{1}'.format(cmd,returncode))
else:
print('Execute command{0} successful'.format(cmd))
def main():
package= 'nginx-1.2.9.tar.gz'
cur_dir= os.path.abspath('.')
#package_dir = os.path.join(cur_dir,package)
re1=re.compile('[a-z]{2,10}-d.d.d',re.UNICODE)
package_name=re.findall(re1,package)
package_dir=os.path.join(cur_dir,''.join(package_name))
data_dir="/usr/local/nginx"
src_link=os.path.join(data_dir,"sbin/nginx")
dec_link="/usr/sbin/nginx"
if not os.path.exists(package):
raise SystemExit("{$0} not found".format(package))
unpackage_nginx(package,package_dir,data_dir)
for cmd in nginx_install_command(data_dir,package_dir):
os.chdir(package_dir)
start_nginx(cmd)
if not os.path.exists('/usr/sbin/nginx'):
os.symlink(src_link,dec_link)
print("Input command nginx to start services")
if __name__ == '__main__':
main()
最后
以上就是超级戒指为你收集整理的使用python安装nginx的全部内容,希望文章能够帮你解决使用python安装nginx所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复