#!/bin/bash
# ============================================
# 脚本名称: Nginx.sh
# 功能描述: 一键安装 Nginx 软件（完全静默版）
# 使用方法: bash Nginx.sh
# 特点: 屏幕无输出，所有日志保存到文件
# ============================================

# ---------- 日志配置 ----------
LOG_DIR="/var/log/nginx_install"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/install_$(date +%Y%m%d_%H%M%S).log"

# ---------- 重定向所有输出到日志 ----------
# 这样屏幕就完全干净了，所有输出都去日志文件
exec > >(tee -a "$LOG_FILE") 2>&1

# ---------- 颜色定义（日志中保留） ----------
RESET='\033[0m'
GREEN='\033[32m'
YELLOW='\033[33m'

# ---------- 猫咪提示函数（只写日志） ----------
cat_say() {
    echo -e "${YELLOW}"
    echo "  /\_/\  "
    echo " ( o.o )  $1"
    echo "  > ^ <  "
    echo -e "${RESET}"
}

# ---------- 开始安装 ----------
echo "========================================="
echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "日志文件: $LOG_FILE"
echo "========================================="

# ------- 1. 配置环境变量 -------
echo " "
cat_say "设置环境变量中..."

if ! grep -q "/usr/local/nginx/sbin" /etc/profile 2>/dev/null; then
    echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/profile
    cat_say "环境变量已添加"
else
    cat_say "环境变量已存在"
fi

# 使环境变量生效
source /etc/profile
cat_say "环境变量已生效"

# ------- 2. 安装 wget -------
echo " "
cat_say "安装 wget..."

if yum install -y wget > /dev/null 2>&1; then
    cat_say "wget 安装成功 (●ˇ∀ˇ●)"
else
    cat_say "wget 可能已安装"
fi

# ------- 3. 下载 Nginx -------
echo " "
cat_say "下载 Nginx..."

cd /usr/local/src || exit

if [ ! -f "nginx-1.31.0.tar.gz" ]; then
    wget -q https://nginx.org/download/nginx-1.31.0.tar.gz
    if [ $? -eq 0 ]; then
        cat_say "下载完成"
    else
        cat_say "下载失败，请检查网络"
        exit 1
    fi
else
    cat_say "安装包已存在，跳过下载"
fi

# ------- 4. 解压 Nginx -------
echo " "
cat_say "解压 Nginx..."

if [ ! -d "nginx-1.31.0" ]; then
    tar -xf nginx-1.31.0.tar.gz 2>/dev/null
    cat_say "解压完成"
else
    cat_say "已解压，跳过"
fi

# ------- 5. 安装编译环境 -------
echo " "
cat_say "安装编译环境（可能需要几分钟）..."

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libtool > /dev/null 2>&1

if [ $? -eq 0 ]; then
    cat_say "编译环境安装完成"
else
    cat_say "编译环境安装失败"
    exit 1
fi

# ------- 6. 配置编译参数 -------
echo " "
cat_say "配置编译参数..."

cd nginx-1.31.0 || exit

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module > /dev/null 2>&1

if [ $? -eq 0 ]; then
    cat_say "配置完成"
else
    cat_say "配置失败"
    exit 1
fi

# ------- 7. 编译 -------
echo " "
cat_say "开始编译（吃个猫条慢慢等）..."

make -j4 > /dev/null 2>&1

if [ $? -eq 0 ]; then
    cat_say "编译完成"
else
    cat_say "编译失败"
    exit 1
fi

# ------- 8. 安装到系统 -------
echo " "
cat_say "安装到系统..."

make install > /dev/null 2>&1

if [ $? -eq 0 ]; then
    cat_say "安装完成"
else
    cat_say "安装失败"
    exit 1
fi

# ------- 9. 启动 Nginx -------
echo " "
cat_say "启动 Nginx..."

if /usr/local/nginx/sbin/nginx 2>/dev/null; then
    cat_say "🎉 Nginx 启动成功！(●ˇ∀ˇ●)"
else
    cat_say "😭 Nginx 启动失败，查看错误日志"
    tail -20 /usr/local/nginx/logs/error.log
    exit 1
fi

# ------- 10. 显示安装信息 -------
echo " "
echo "========================================="
echo "✅ Nginx 安装完成！"
echo "📋 安装信息："
echo "  安装路径: /usr/local/nginx"
echo "  配置文件: /usr/local/nginx/conf/nginx.conf"
echo "  启动命令: nginx"
echo "  日志文件: $LOG_FILE"
echo "结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================="
