install_nginx.sh
#!/bin/sh
YUM_REPO_DIR="/etc/yum.repos.d"
YUM_REPO_BAK_DIR="$YUM_REPO_DIR/bak"
REPO_URL="http://192.168.1.2:81/ql_v10"
NGINX_VERSION="1.27.4"
NGINX_SOURCE_URL="$REPO_URL/nginx-$NGINX_VERSION.tar.gz"
NGINX_SOURCE_DIR="nginx-$NGINX_VERSION"
NGINX_INSTALL_DIR="/data/app/nginx"
NGINX_SERVICE_FILE="/etc/systemd/system/nginx.service"
check_command() {
if [ $? -ne 0 ]; then
echo "Error: $1 failed."
exit 1
fi
}
echo "备份原有的yum源..."
mkdir -p "$YUM_REPO_BAK_DIR"
mv "$YUM_REPO_DIR"/*.repo "$YUM_REPO_BAK_DIR"
check_command "备份yum源"
echo "创建新的yum源配置文件..."
cat > "$YUM_REPO_DIR/dvd.repo" <<EOF
[A]
name=ks10-adv-os
baseurl=$REPO_URL/ks10-adv-os
enabled=1
gpgcheck=0
EOF
check_command "创建yum源配置文件"
echo "下载nginx源码包..."
wget "$NGINX_SOURCE_URL" -O "nginx-$NGINX_VERSION.tar.gz"
check_command "下载nginx源码包"
echo "安装依赖..."
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
check_command "安装依赖"
echo "解压nginx源码包..."
tar -zxvf "nginx-$NGINX_VERSION.tar.gz"
check_command "解压nginx源码包"
echo "编译并安装nginx..."
cd "$NGINX_SOURCE_DIR"
check_command "进入nginx源码目录"
./configure --prefix="$NGINX_INSTALL_DIR" --with-http_stub_status_module --with-http_ssl_module
check_command "配置nginx"
make && make install
check_command "编译并安装nginx"
echo "创建 Nginx 的 systemd 服务文件..."
cat > "$NGINX_SERVICE_FILE" <<EOF
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=$NGINX_INSTALL_DIR/logs/nginx.pid
ExecStartPre=$NGINX_INSTALL_DIR/sbin/nginx -t
ExecStart=$NGINX_INSTALL_DIR/sbin/nginx
ExecReload=$NGINX_INSTALL_DIR/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
check_command "创建 systemd 服务文件"
echo "重新加载 systemd 配置..."
systemctl daemon-reload
check_command "重新加载 systemd 配置"
echo "启动 Nginx 服务..."
systemctl start nginx
check_command "启动 Nginx 服务"
echo "设置 Nginx 开机自启动..."
systemctl enable nginx
check_command "设置 Nginx 开机自启动"
echo "Nginx 安装完毕,安装目录为: $NGINX_INSTALL_DIR"
echo "Nginx 已配置为开机自启动,可以使用以下命令管理 Nginx:"
echo "启动 Nginx: systemctl start nginx"
echo "停止 Nginx: systemctl stop nginx"
echo "重启 Nginx: systemctl restart nginx"
echo "查看状态: systemctl status nginx"
ps -ef |grep nginx