增强install.sh对宝塔面板的支持

新增功能:
- 添加 ensure_nginx_installed() 函数,自动检测并安装 Nginx
- 在所有 Nginx 配置函数中调用确保 Nginx 已安装
- restart_nginx_safe() 新增宝塔面板路径支持(/www/server/nginx/sbin/nginx)

改进点:
- 优先尝试宝塔面板的 Nginx 路径
- 支持在更新/修复模式下自动安装缺失的 Nginx
- 根据不同包管理器自动选择安装方式(apt/yum/dnf/zypper)
- 增强错误提示和安装验证

兼容性:
- 完全兼容宝塔面板环境
- 兼容标准 Linux 系统环境
- 支持多种发行版的包管理器

这些改进使脚本能在更多环境下自动化部署,提升用户体验。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-24 15:09:48 +08:00
parent 4cf77f00a0
commit 61866761bb

View File

@@ -2307,6 +2307,23 @@ restart_nginx_safe() {
fi fi
fi fi
# 宝塔路径优先尝试
if [[ -x /www/server/nginx/sbin/nginx ]]; then
if /www/server/nginx/sbin/nginx -t 2>/dev/null; then
if /www/server/nginx/sbin/nginx -s reload 2>/dev/null; then
print_success "已通过宝塔 nginx -s reload 重载"
return 0
fi
if /www/server/nginx/sbin/nginx 2>/dev/null; then
print_success "已通过宝塔 nginx 启动"
return 0
fi
else
print_error "宝塔 Nginx 配置测试失败"
/www/server/nginx/sbin/nginx -t 2>&1 || true
fi
fi
# 直接使用nginx命令 # 直接使用nginx命令
if command -v nginx &> /dev/null; then if command -v nginx &> /dev/null; then
if ! nginx -t 2>/dev/null; then if ! nginx -t 2>/dev/null; then
@@ -2331,10 +2348,36 @@ restart_nginx_safe() {
return 1 return 1
} }
# 确保已安装Nginx更新/修复模式下可能未安装)
ensure_nginx_installed() {
if command -v nginx &> /dev/null || [[ -x /www/server/nginx/sbin/nginx ]]; then
return 0
fi
print_step "未检测到 Nginx开始安装..."
case "$PKG_MANAGER" in
apt) install_nginx_apt ;;
yum) install_nginx_yum ;;
dnf) install_nginx_dnf ;;
zypper) install_nginx_zypper ;;
*) print_error "无法自动安装Nginx请手动安装"; return 1 ;;
esac
# 安装后再次检测
if ! command -v nginx &> /dev/null && [[ ! -x /www/server/nginx/sbin/nginx ]]; then
print_error "Nginx安装失败请手动安装"
return 1
fi
}
# 步骤1: 先配置HTTP Nginx为SSL证书验证做准备 # 步骤1: 先配置HTTP Nginx为SSL证书验证做准备
configure_nginx_http_first() { configure_nginx_http_first() {
print_step "配置基础HTTP Nginx用于SSL证书验证..." print_step "配置基础HTTP Nginx用于SSL证书验证..."
# 确保已安装Nginx
ensure_nginx_installed || return 1
# 总是先配置HTTP模式 # 总是先配置HTTP模式
local server_name="${DOMAIN:-_}" local server_name="${DOMAIN:-_}"
@@ -2634,6 +2677,9 @@ configure_nginx() {
configure_nginx_http() { configure_nginx_http() {
local server_name="${DOMAIN:-_}" local server_name="${DOMAIN:-_}"
# 确保已安装Nginx
ensure_nginx_installed || return 1
# 检测Nginx配置目录结构并创建必要的目录 # 检测Nginx配置目录结构并创建必要的目录
if [[ -d /www/server/nginx ]]; then if [[ -d /www/server/nginx ]]; then
# 宝塔面板 # 宝塔面板
@@ -2750,6 +2796,9 @@ EOF
} }
configure_nginx_https() { configure_nginx_https() {
# 确保已安装Nginx
ensure_nginx_installed || return 1
# 检测Nginx配置目录结构并创建必要的目录 # 检测Nginx配置目录结构并创建必要的目录
if [[ -d /www/server/nginx ]]; then if [[ -d /www/server/nginx ]]; then
# 宝塔面板 # 宝塔面板