Nginx1.20.2一键安装部署(适用于RedHat 7系统,无网络的Linux环境,包含全部依赖包)
- 下载压缩包文件并解压
链接: 百度云链接提取码: 2ps5
- 可查看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()
-
将压缩包文件上传至Linux服务器,并解压(安装注意,此操作会升级GCC组件,若你的系统GCC版本高于截图版本,可能会导致系统不可用)。
-
执行以下命令安装Nginx
cd nginx_1_20_2/
chmod +x install.py #这里不一定有执行权限,所以需要手动给一个执行权限
./install.py
5. 检查是否安装成功,服务是否启动