Centos 7离线部署Nginx 高效省时

  1. 给脚本执行权限:chmod +x install_nginx.sh
  2. 以root用户运行:sudo ./install_nginx.sh

脚本如下:

#!/bin/bash
# Nginx一键化部署脚本(修复版本)
# 需要以root权限运行

set -e # 任何命令失败时立即退出脚本

# 定义彩色输出函数
color_echo() {
    local color=$1
    shift
    case $color in
        red) echo -e "\033[31m$@\033[0m" ;;
        green) echo -e "\033[32m$@\033[0m" ;;
        yellow) echo -e "\033[33m$@\033[0m" ;;
        *) echo "$@" ;;
    esac
}

# 步骤1: 解压nginx.zip
color_echo green "步骤1: 解压nginx.zip"
unzip -o -q nginx.zip || {
    color_echo red "解压nginx.zip失败"
    exit 1
}

# 步骤2: 安装所有必需的RPM包(修复已安装包的问题)
color_echo green "步骤2: 安装RPM依赖包"
rpm_packages=(
    "cpp-4.8.5-44.el7.x86_64.rpm"
    "gcc-4.8.5-44.el7.x86_64.rpm"
    "gcc-c++-4.8.5-36.el7.x86_64.rpm"
    "glibc-2.17-317.el7.x86_64.rpm"
    "glibc-common-2.17-317.el7.x86_64.rpm"
    "glibc-devel-2.17-317.el7.x86_64.rpm"
    "glibc-headers-2.17-317.el7.x86_64.rpm"
    "libstdc++-devel-4.8.5-36.el7.x86_64.rpm"
)

for pkg in "${rpm_packages[@]}"; do
    # 检查包是否已安装
    if rpm -q $(echo $pkg | cut -d- -f1-2) >/dev/null 2>&1; then
        color_echo yellow "已安装: $pkg"
    else
        color_echo green "安装中: $pkg"
        rpm -ivh $pkg --nodeps >/dev/null || {
            color_echo red "安装$pkg失败"
            exit 1
        }
    fi
done

# 步骤3: 解压所有源码包
color_echo green "步骤3: 解压源码包"
extract_files() {
    for file in $@; do
        case $file in
            *.tar.gz) tar -xvf $file >/dev/null ;;
            *.zip) unzip -o -q $file ;;
            *) color_echo red "未知文件类型: $file" ;;
        esac
    done
}

extract_files nginx-1.20.2.tar.gz openssl-1.1.1j.tar.gz zlib-1.3.1.tar.gz pcre-8.41.zip

# 步骤4: 编译安装OpenSSL
color_echo green "步骤4: 编译安装OpenSSL"
cd openssl-1.1.1j/
./config >/dev/null || {
    color_echo red "OpenSSL配置失败"
    exit 1
}
make >/dev/null && make install >/dev/null || {
    color_echo red "OpenSSL编译安装失败"
    exit 1
}
cd ..

# 步骤5: 编译安装PCRE
color_echo green "步骤5: 编译安装PCRE"
cd pcre-8.41
./configure >/dev/null || {
    color_echo red "PCRE配置失败"
    exit 1
}
make >/dev/null && make install >/dev/null || {
    color_echo red "PCRE编译安装失败"
    exit 1
}
cd ..

# 步骤6: 编译安装zlib
color_echo green "步骤6: 编译安装zlib"
cd zlib-1.3.1/
./configure >/dev/null || {
    color_echo red "zlib配置失败"
    exit 1
}
make >/dev/null && make install >/dev/null || {
    color_echo red "zlib编译安装失败"
    exit 1
}
cd ..

# 步骤7: 编译安装Nginx
color_echo green "步骤7: 编译安装Nginx"
# 使用当前路径(确保路径正确)
NGINX_PREFIX="/usr/local/nginx"
PCRE_PATH="$PWD/pcre-8.41"
OPENSSL_PATH="$PWD/openssl-1.1.1j"

cd nginx-1.20.2/
color_echo yellow "配置参数:"
color_echo yellow "  --prefix=$NGINX_PREFIX"
color_echo yellow "  --with-http_ssl_module"
color_echo yellow "  --with-pcre=$PCRE_PATH"
color_echo yellow "  --with-openssl=$OPENSSL_PATH"
color_echo yellow "  --with-stream"

./configure --prefix=$NGINX_PREFIX \
            --with-http_ssl_module \
            --with-pcre=$PCRE_PATH \
            --with-openssl=$OPENSSL_PATH \
            --with-stream >/dev/null || {
    color_echo red "Nginx配置失败"
    exit 1
}

make >/dev/null && make install >/dev/null || {
    color_echo red "Nginx编译安装失败"
    exit 1
}
cd ..

# 步骤8: 配置防火墙
color_echo green "步骤8: 配置防火墙"
systemctl stop firewalld >/dev/null 2>&1 || true
systemctl disable firewalld >/dev/null 2>&1 || true

color_echo green "=============================================="
color_echo green "Nginx安装完成!"
color_echo green "安装目录: $NGINX_PREFIX"
color_echo green "启动命令: $NGINX_PREFIX/sbin/nginx"
color_echo green "停止防火墙已生效"
color_echo green "=============================================="

安装成功截图:

Centos 7离线部署Nginx 高效省时_第1张图片

Centos 7离线部署Nginx 高效省时_第2张图片

相对应的软件包 zip (包含所需要的依赖)

centos7离线部署Nginx高效安装资源-CSDN文库

或者可以私聊我  免费提供

你可能感兴趣的:(笔记,Nginx,linux,centos,nginx,linux)