我是靠谱客的博主 超级戒指,最近开发中收集的这篇文章主要介绍使用python安装nginx,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

肯定有小伙伴疑问哈,安装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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部