#!/bin/bash
# 加载公共函数库
source <(curl -sSL https://www.klquan.com/scripts/common.sh)

# 基础配置（每个脚本不一样）
server="nginx"
# home="/data"
home="/usr/local"
download_patch="https://nginx.org/en/download.html"

# 1.获取软件安装包并选择版本
all_package=($(get_packages "$server" "$download_patch"))
package=$(select_version "$1" "${all_package[@]}")
show_usage

# 2.确认信息
countdown "$home" "$package"

# 3.安装过程
echo "【1】下载源码包"
  curl -L -o "$home/$package" -# "$packages_url$package"
  check

echo "【2】安装依赖包（Ubuntu）"
  # 更新软件源
  sudo apt update >/dev/null 2>&1
  # 安装编译依赖
  sudo apt install -y libpcre3-dev libssl-dev openssl gcc g++ make automake >/dev/null 2>&1
  check


echo "【3】解压并安装"
  cd "$home"
  server_dir=$(tar -tf "$package" 2>/dev/null | head -1 | cut -f1 -d"/")
  tar xf "$package" && rm -f "$package"
  cd $server_dir
  ./configure --prefix=$home/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream >/dev/null 2>&1
  if [ `echo $?` -ne 0 ];then
      echo '编译失败，请手动检查'
      exit 3
  fi
  make  >/dev/null 2>&1
  make install >/dev/null 2>&1
  # 创建 PID 文件目录（Ubuntu 可能缺少）
  mkdir -p $home/nginx/logs
  check

echo "【4】配置优化服务参数"
  egrep -v "#|^$" $home/nginx/conf/nginx.conf.default > $home/nginx/conf/nginx.conf
  sed -i '/server_name/a\        include conf.d/*.conf;' $home/nginx/conf/nginx.conf
  mkdir -p "$home/nginx/conf/conf.d"
  #    ln -s $home/nginx/sbin/* /usr/local/bin/
check

echo "【5】配置systemd管理（Ubuntu 兼容）"
sudo tee /usr/lib/systemd/system/nginx.service > /dev/null << EOF
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=$home/nginx/logs/nginx.pid
ExecStartPre=$home/nginx/sbin/nginx -t -c $home/nginx/conf/nginx.conf
ExecStart=$home/nginx/sbin/nginx -c $home/nginx/conf/nginx.conf
ExecReload=$home/nginx/sbin/nginx -s reload
ExecStop=$home/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF


systemctl daemon-reload
systemctl enable nginx >/dev/null 2>&1
systemctl start nginx
check


echo "【完成】路径在$home/nginx/下"
echo "    ····查看执行：systemctl status nginx"
