fix: 添加宝塔面板(BT Panel)Nginx配置支持
问题: - 用户使用宝塔面板,Nginx配置路径为 /www/server/nginx/ - 标准路径 /etc/nginx/ 不适用于宝塔 - systemctl restart nginx 导致宝塔Nginx启动失败 宝塔特征: - 配置文件:/www/server/nginx/conf/nginx.conf - 虚拟主机:/www/server/panel/vhost/nginx/*.conf - 需要使用reload而不是restart 修复: 1. 添加宝塔面板检测逻辑(检查 /www/server/nginx 目录) 2. 使用宝塔专用配置目录:/www/server/panel/vhost/nginx/ 3. 宝塔环境使用reload,避免影响其他站点 4. 配置文件优先级: - 宝塔面板 > Debian/Ubuntu > CentOS/RHEL 5. 所有三个Nginx配置函数都已更新 修复的函数: - configure_nginx_http_first() - 检测宝塔并使用专用目录 - configure_nginx_http() - 同上 - configure_nginx_https() - 同上 预期效果: - 宝塔用户:配置写入 /www/server/panel/vhost/nginx/wanwanyun.conf - 宝塔用户:使用 systemctl reload nginx - 标准Nginx:行为不变 相关错误: Job for nginx.service failed because the control process exited with error code
This commit is contained in:
69
install.sh
69
install.sh
@@ -1962,11 +1962,22 @@ configure_nginx_http_first() {
|
||||
local server_name="${DOMAIN:-_}"
|
||||
|
||||
# 检测Nginx配置目录结构并创建必要的目录
|
||||
if [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
if [[ -d /www/server/nginx ]]; then
|
||||
# 宝塔面板 (BT Panel)
|
||||
NGINX_CONF_DIR="/www/server/panel/vhost/nginx"
|
||||
NGINX_ENABLED_DIR=""
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=true
|
||||
|
||||
# 确保目录存在
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
print_info "检测到宝塔面板,使用宝塔Nginx配置目录"
|
||||
elif [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
# Debian/Ubuntu: 使用sites-available
|
||||
NGINX_CONF_DIR="/etc/nginx/sites-available"
|
||||
NGINX_ENABLED_DIR="/etc/nginx/sites-enabled"
|
||||
USE_SYMLINK=true
|
||||
IS_BT_PANEL=false
|
||||
|
||||
# 确保目录存在
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
@@ -1976,6 +1987,7 @@ configure_nginx_http_first() {
|
||||
NGINX_CONF_DIR="/etc/nginx/conf.d"
|
||||
NGINX_ENABLED_DIR=""
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=false
|
||||
|
||||
# 确保目录存在
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
@@ -2042,10 +2054,11 @@ EOF
|
||||
ln -sf ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf ${NGINX_ENABLED_DIR}/${PROJECT_NAME}.conf
|
||||
# 删除默认站点
|
||||
rm -f ${NGINX_ENABLED_DIR}/default
|
||||
else
|
||||
# CentOS/RHEL: conf.d中的.conf文件会自动加载,删除默认配置
|
||||
elif [[ "$IS_BT_PANEL" != "true" ]]; then
|
||||
# CentOS/RHEL (非宝塔): conf.d中的.conf文件会自动加载
|
||||
rm -f /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
# 宝塔面板:配置文件已自动包含,无需额外操作
|
||||
|
||||
# 测试nginx配置
|
||||
if ! nginx -t; then
|
||||
@@ -2053,8 +2066,20 @@ EOF
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 启动Nginx
|
||||
# 启动或重载Nginx
|
||||
if [[ "$IS_BT_PANEL" == "true" ]]; then
|
||||
# 宝塔面板:使用reload而不是restart
|
||||
if systemctl is-active --quiet nginx; then
|
||||
systemctl reload nginx
|
||||
print_info "已重载宝塔Nginx配置"
|
||||
else
|
||||
systemctl start nginx
|
||||
print_info "已启动宝塔Nginx"
|
||||
fi
|
||||
else
|
||||
# 标准Nginx:重启
|
||||
systemctl restart nginx
|
||||
fi
|
||||
if ! systemctl is-active --quiet nginx; then
|
||||
print_error "Nginx启动失败"
|
||||
return 1
|
||||
@@ -2132,17 +2157,25 @@ configure_nginx_http() {
|
||||
local server_name="${DOMAIN:-_}"
|
||||
|
||||
# 检测Nginx配置目录结构并创建必要的目录
|
||||
if [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
# Debian/Ubuntu: 使用sites-available
|
||||
if [[ -d /www/server/nginx ]]; then
|
||||
# 宝塔面板
|
||||
NGINX_CONF_DIR="/www/server/panel/vhost/nginx"
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=true
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
elif [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
# Debian/Ubuntu
|
||||
NGINX_CONF_DIR="/etc/nginx/sites-available"
|
||||
NGINX_ENABLED_DIR="/etc/nginx/sites-enabled"
|
||||
USE_SYMLINK=true
|
||||
IS_BT_PANEL=false
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
mkdir -p ${NGINX_ENABLED_DIR}
|
||||
else
|
||||
# CentOS/RHEL: 使用conf.d
|
||||
# CentOS/RHEL
|
||||
NGINX_CONF_DIR="/etc/nginx/conf.d"
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=false
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
fi
|
||||
|
||||
@@ -2207,25 +2240,33 @@ EOF
|
||||
ln -sf ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf ${NGINX_ENABLED_DIR}/${PROJECT_NAME}.conf
|
||||
# 删除默认站点
|
||||
rm -f ${NGINX_ENABLED_DIR}/default
|
||||
else
|
||||
# CentOS/RHEL: conf.d中的.conf文件会自动加载
|
||||
elif [[ "$IS_BT_PANEL" != "true" ]]; then
|
||||
# CentOS/RHEL (非宝塔): conf.d中的.conf文件会自动加载
|
||||
rm -f /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
}
|
||||
|
||||
configure_nginx_https() {
|
||||
# 检测Nginx配置目录结构并创建必要的目录
|
||||
if [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
# Debian/Ubuntu: 使用sites-available
|
||||
if [[ -d /www/server/nginx ]]; then
|
||||
# 宝塔面板
|
||||
NGINX_CONF_DIR="/www/server/panel/vhost/nginx"
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=true
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
elif [[ -d /etc/nginx/sites-available ]] || [[ "$PKG_MANAGER" == "apt" ]]; then
|
||||
# Debian/Ubuntu
|
||||
NGINX_CONF_DIR="/etc/nginx/sites-available"
|
||||
NGINX_ENABLED_DIR="/etc/nginx/sites-enabled"
|
||||
USE_SYMLINK=true
|
||||
IS_BT_PANEL=false
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
mkdir -p ${NGINX_ENABLED_DIR}
|
||||
else
|
||||
# CentOS/RHEL: 使用conf.d
|
||||
# CentOS/RHEL
|
||||
NGINX_CONF_DIR="/etc/nginx/conf.d"
|
||||
USE_SYMLINK=false
|
||||
IS_BT_PANEL=false
|
||||
mkdir -p ${NGINX_CONF_DIR}
|
||||
fi
|
||||
|
||||
@@ -2303,8 +2344,8 @@ EOF
|
||||
ln -sf ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf ${NGINX_ENABLED_DIR}/${PROJECT_NAME}.conf
|
||||
# 删除默认站点
|
||||
rm -f ${NGINX_ENABLED_DIR}/default
|
||||
else
|
||||
# CentOS/RHEL: conf.d中的.conf文件会自动加载
|
||||
elif [[ "$IS_BT_PANEL" != "true" ]]; then
|
||||
# CentOS/RHEL (非宝塔): conf.d中的.conf文件会自动加载
|
||||
rm -f /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user