71 lines
1.9 KiB
Bash
71 lines
1.9 KiB
Bash
#!/bin/bash
|
||
# ==============================================
|
||
# Nginx Manager Python API 部署脚本
|
||
# 目标服务器: 10.1.1.160 (Rocky Linux 8.10)
|
||
# ==============================================
|
||
set -e
|
||
|
||
echo "========================================="
|
||
echo "Nginx Manager Python API 部署脚本"
|
||
echo "========================================="
|
||
|
||
# 1. 安装系统依赖
|
||
echo "[1/5] 安装系统依赖..."
|
||
dnf install -y epel-release
|
||
dnf install -y nginx python3 python3-pip openssl
|
||
|
||
# 2. 启动 Nginx(不配置任何站点)
|
||
echo "[2/5] 配置 Nginx..."
|
||
systemctl enable nginx
|
||
systemctl start nginx
|
||
|
||
# 3. 创建项目目录
|
||
echo "[3/5] 创建项目目录..."
|
||
mkdir -p /opt/nginx-api/services
|
||
mkdir -p /etc/nginx/conf.d
|
||
mkdir -p /etc/nginx/ssl/ca
|
||
|
||
# 4. 安装 Python 依赖
|
||
echo "[4/5] 安装 Python 依赖..."
|
||
pip3 install -r /opt/nginx-api/requirements.txt
|
||
|
||
# 5. 创建 systemd 服务
|
||
echo "[5/5] 配置 systemd 服务..."
|
||
cat > /etc/systemd/system/nginx-api.service << 'SYSTEMD_EOF'
|
||
[Unit]
|
||
Description=Nginx Manager Python API
|
||
After=network.target nginx.service
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=root
|
||
WorkingDirectory=/opt/nginx-api
|
||
ExecStart=/usr/bin/python3 -m gunicorn -c gunicorn_config.py app:app
|
||
Restart=always
|
||
RestartSec=5
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
SYSTEMD_EOF
|
||
|
||
# 6. 修复 SELinux 阻止 Nginx 出站连接(避免 502)
|
||
echo "配置 SELinux..."
|
||
setsebool -P httpd_can_network_connect 1 2>/dev/null || true
|
||
|
||
# 7. 开放防火墙端口
|
||
echo "配置防火墙..."
|
||
firewall-cmd --permanent --add-port=5000/tcp 2>/dev/null || true
|
||
firewall-cmd --reload 2>/dev/null || true
|
||
|
||
# 8. 启动服务
|
||
systemctl daemon-reload
|
||
systemctl enable nginx-api
|
||
systemctl start nginx-api
|
||
|
||
echo ""
|
||
echo "========================================="
|
||
echo "部署完成!"
|
||
echo "API 地址: http://10.1.1.160:5000"
|
||
echo "健康检查: curl http://10.1.1.160:5000/api/nginx/health"
|
||
echo "========================================="
|