Nginx1.20.2一键安装部署(可适用于无网络环境)

Nginx1.20.2一键安装部署(适用于RedHat 7系统,无网络的Linux环境,包含全部依赖包)

  1. 下载压缩包文件并解压
    链接: 百度云链接提取码: 2ps5
    在这里插入图片描述
  2. 可查看install.py相关内容,调整相关代码执行,适用于Python2.7环境
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import time
import subprocess


# 定义Nginx服务文件路径
SERVICE_FILE_PATH = "/etc/systemd/system/nginx.service"
# 定义Nginx服务文件内容
NGINX_SERVICE_FILE = """
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
"""


def install_dependencies():
    """
    安装依赖
        gcc-c++
        openssl
        pcre
        zlib
    rpm -Uvh --force --nodeps *.rpm
    :return:
    """
    os.system("rpm -Uvh --force --nodeps ./gcc-c++/*.rpm")
    os.system("rpm -Uvh --force --nodeps ./openssl/*.rpm")
    os.system("rpm -Uvh --force --nodeps ./pcre/*.rpm")
    os.system("rpm -Uvh --force --nodeps ./zlib/*.rpm")


def install():
    """
    安装	nginx-1.20.2
    过程:
        tar -zxvf nginx-1.20.2.tar.gz
        cd nginx-1.20.2
        ./configure
        make
        make install
        /usr/local/nginx/sbin/nginx
    :return:
    """
    os.system("tar -zxvf nginx-1.20.2.tar.gz")
    os.chdir("./nginx-1.20.2")
    os.system("./configure --with-http_ssl_module --with-stream")
    os.system("make")
    os.system("make install")
    # os.system("/usr/local/nginx/sbin/nginx")   不执行安装命令


def detect():
    """
    检测是否安装成功
    :return:
    """
    time.sleep(5)
    return True if os.popen("ps -ef|grep nginx").read().find(
        "master process /usr/local/nginx/sbin/nginx") > 0 else False


def prompt_fail():
    """
    安装失败后提示
    :return:
    """
    print """
    \033[5;31;40m 很抱歉安装失败,给你带来不便。 \033[0m
    \033[5;31;40m 很抱歉安装失败,给你带来不便。 \033[0m
    \033[5;31;40m 很抱歉安装失败,给你带来不便。 \033[0m
    """


def prompt_success():
    """
    安装成功后提示
    :return:
    """
    print """
    \033[5;32;40m 恭喜nginx-1.20.2安装成功! \033[0m
    \033[5;32;40m 恭喜nginx-1.20.2安装成功! \033[0m
    \033[5;32;40m 恭喜nginx-1.20.2安装成功! \033[0m
    
    使用前注意:
        如不能访问,请检查防火墙。临时测试可以全部关闭防火墙,命令:systemctl stop firewalld
    资源路径:/usr/local/nginx/html/
    安装路径:/usr/local/nginx/
    启动命令:/usr/local/nginx/sbin/nginx
    重启命令:/usr/local/nginx/sbin/nginx -s reload
    配置文件路径:/usr/local/nginx/conf/
    """

def create_nginx_service_file():
    """创建Nginx服务文件"""
    try:
        with open(SERVICE_FILE_PATH, "w") as f:
            f.write(NGINX_SERVICE_FILE)
        print "Nginx服务文件已创建: {}".format(SERVICE_FILE_PATH)
    except Exception as e:
        print "创建Nginx服务文件失败: {}".format(e)
        exit(1)

def reload_systemd():
    """重新加载systemd配置"""
    try:
        subprocess.check_call(["systemctl", "daemon-reload"])
        print "systemd配置已重新加载"
    except subprocess.CalledProcessError as e:
        print "重新加载systemd配置失败: {}".format(e)
        exit(1)

def enable_nginx_service():
    """启用Nginx服务并开启开机自启动"""
    try:
        # 启用 Nginx 服务
        subprocess.check_call(["systemctl", "enable", "nginx"])
        print "Nginx服务已启用并开启开机自启动"

        # 创建符号链接(如果目标不存在)
        target_path = "/usr/local/nginx/sbin/nginx"
        link_path = "/usr/bin/nginx"
        if not os.path.exists(link_path):  # 检查符号链接是否已存在
            subprocess.check_call(["ln", "-s", target_path, link_path])
            print "添加nginx命令支持"
        else:
            print "nginx命令已存在,跳过创建符号链接"
    except subprocess.CalledProcessError as e:
        print "操作失败: {}".format(e)
        exit(1)

def start_nginx_service():
    """启动Nginx服务"""
    try:
        subprocess.check_call(["systemctl", "start", "nginx"])
        print "Nginx服务已启动"
    except subprocess.CalledProcessError as e:
        print "启动Nginx服务失败: {}".format(e)
        exit(1)

def install_nginx():
    install_dependencies()
    install()

def start_nginx():
    # 创建Nginx服务文件
    create_nginx_service_file()
    # 重新加载systemd配置
    reload_systemd()
    # 启用Nginx服务并开启开机自启动
    enable_nginx_service()
    # 启动Nginx服务
    start_nginx_service()


def main():
    # 检查是否以root用户运行
    if os.geteuid() != 0:
        print("请以root用户运行此脚本")
        exit(1)
    # 安装nginx相关文件,如果已安装请注释
    install_nginx()
    # 将nginx服务添加到systemd中,并设置开机自启
    start_nginx()
    # 检查启动是否成功
    if detect():
        prompt_success()
    else:
        prompt_fail()

if __name__ == "__main__":
    main()

  1. 将压缩包文件上传至Linux服务器,并解压(安装注意,此操作会升级GCC组件,若你的系统GCC版本高于截图版本,可能会导致系统不可用)。
    在这里插入图片描述
    在这里插入图片描述

  2. 执行以下命令安装Nginx

cd nginx_1_20_2/
chmod +x install.py  #这里不一定有执行权限,所以需要手动给一个执行权限
./install.py

在这里插入图片描述
5. 检查是否安装成功,服务是否启动
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值