diff --git a/install.sh b/install.sh index 1e8db6c..8b0deca 100644 --- a/install.sh +++ b/install.sh @@ -1961,7 +1961,27 @@ configure_nginx_http_first() { # 总是先配置HTTP模式 local server_name="${DOMAIN:-_}" - cat > /etc/nginx/sites-available/${PROJECT_NAME}.conf << EOF + # 检测Nginx配置目录结构并创建必要的目录 + if [[ -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 + + # 确保目录存在 + mkdir -p ${NGINX_CONF_DIR} + mkdir -p ${NGINX_ENABLED_DIR} + else + # CentOS/RHEL: 使用conf.d + NGINX_CONF_DIR="/etc/nginx/conf.d" + NGINX_ENABLED_DIR="" + USE_SYMLINK=false + + # 确保目录存在 + mkdir -p ${NGINX_CONF_DIR} + fi + + cat > ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf << EOF server { listen ${HTTP_PORT}; server_name ${server_name}; @@ -2016,11 +2036,16 @@ server { } EOF - # 创建软链接 - ln -sf /etc/nginx/sites-available/${PROJECT_NAME}.conf /etc/nginx/sites-enabled/${PROJECT_NAME}.conf - - # 删除默认站点 - rm -f /etc/nginx/sites-enabled/default + # 根据系统类型处理配置文件 + if [[ "$USE_SYMLINK" == "true" ]]; then + # Debian/Ubuntu: 创建软链接 + 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文件会自动加载,删除默认配置 + rm -f /etc/nginx/conf.d/default.conf + fi # 测试nginx配置 if ! nginx -t; then @@ -2106,7 +2131,22 @@ configure_nginx() { configure_nginx_http() { local server_name="${DOMAIN:-_}" - cat > /etc/nginx/sites-available/${PROJECT_NAME}.conf << EOF + # 检测Nginx配置目录结构并创建必要的目录 + if [[ -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 + mkdir -p ${NGINX_CONF_DIR} + mkdir -p ${NGINX_ENABLED_DIR} + else + # CentOS/RHEL: 使用conf.d + NGINX_CONF_DIR="/etc/nginx/conf.d" + USE_SYMLINK=false + mkdir -p ${NGINX_CONF_DIR} + fi + + cat > ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf << EOF server { listen ${HTTP_PORT}; server_name ${server_name}; @@ -2161,15 +2201,35 @@ server { } EOF - # 创建软链接 - ln -sf /etc/nginx/sites-available/${PROJECT_NAME}.conf /etc/nginx/sites-enabled/${PROJECT_NAME}.conf - - # 删除默认站点 - rm -f /etc/nginx/sites-enabled/default + # 根据系统类型处理配置文件 + if [[ "$USE_SYMLINK" == "true" ]]; then + # Debian/Ubuntu: 创建软链接 + 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文件会自动加载 + rm -f /etc/nginx/conf.d/default.conf + fi } configure_nginx_https() { - cat > /etc/nginx/sites-available/${PROJECT_NAME}.conf << EOF + # 检测Nginx配置目录结构并创建必要的目录 + if [[ -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 + mkdir -p ${NGINX_CONF_DIR} + mkdir -p ${NGINX_ENABLED_DIR} + else + # CentOS/RHEL: 使用conf.d + NGINX_CONF_DIR="/etc/nginx/conf.d" + USE_SYMLINK=false + mkdir -p ${NGINX_CONF_DIR} + fi + + cat > ${NGINX_CONF_DIR}/${PROJECT_NAME}.conf << EOF server { listen ${HTTP_PORT}; server_name ${DOMAIN}; @@ -2237,11 +2297,16 @@ server { } EOF - # 创建软链接 - ln -sf /etc/nginx/sites-available/${PROJECT_NAME}.conf /etc/nginx/sites-enabled/${PROJECT_NAME}.conf - - # 删除默认站点 - rm -f /etc/nginx/sites-enabled/default + # 根据系统类型处理配置文件 + if [[ "$USE_SYMLINK" == "true" ]]; then + # Debian/Ubuntu: 创建软链接 + 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文件会自动加载 + rm -f /etc/nginx/conf.d/default.conf + fi } start_backend_service() {