删除一些重复的函数定义并优化脚本

This commit is contained in:
jingrow 2025-08-10 14:41:37 +08:00
parent 84ad3031c2
commit e45086261a

View File

@ -1157,111 +1157,9 @@ start_traefik() {
log_success "traefik服务启动/重启完成" log_success "traefik服务启动/重启完成"
} }
# 7.4. 解析SITE_URL并生成Host规则
generate_host_rule() {
local site_url="$1"
# 移除协议前缀(如果存在)
local domain=$(echo "$site_url" | sed -E 's|^https?://||')
# 移除端口号(如果存在)
domain=$(echo "$domain" | sed -E 's|:[0-9]+$||')
# 检查是否为一级域名(不包含子域名)
if [[ "$domain" =~ ^[^.]+\.[^.]+$ ]]; then
# 一级域名,添加 www 前缀
echo "Host(\`$domain\`) || Host(\`www.$domain\`)"
else
# 二级或更多级域名,只使用原域名
echo "Host(\`$domain\`)"
fi
}
# 7.5. 创建traefik网站配置文件
create_traefik_website_config() {
log_info "创建traefik网站配置文件..."
# 获取项目端口
local project_port=$(get_or_assign_port "$SITE_NAME")
# 智能IP选择优先使用内网IP没有内网IP时使用公网IP
local host_ip=$(get_optimal_host_ip)
# 输出IP选择结果
if [[ "$host_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
log_success "使用IP地址: $host_ip"
else
log_warning "IP地址格式异常: $host_ip"
return 1
fi
# 生成Host规则
local host_rule=$(generate_host_rule "$SITE_URL")
# 创建conf.d/website目录如果不存在
local website_dir="/home/jingrow/traefik-docker/conf.d/website"
if [ ! -d "$website_dir" ]; then
mkdir -p "$website_dir"
chown jingrow:jingrow "$website_dir"
log_success "创建traefik website配置目录"
fi
# 创建网站配置文件
local config_file="$website_dir/$SITE_NAME.yml"
# 检查配置文件是否已存在
if [ -f "$config_file" ]; then
if [ "$FORCE_UPDATE" = true ]; then
log_warning "traefik网站配置文件已存在强制更新..."
else
log_warning "traefik网站配置文件已存在跳过创建"
fi
fi
# 创建网站配置文件(无论是否存在都重新创建)
cat > "$config_file" << EOF
http:
routers:
main-https:
rule: &host_rule $host_rule
entryPoints:
- websecure
service: main-service
tls:
certResolver: myresolver
main-http-redirect:
rule: *host_rule
entryPoints:
- web
middlewares:
- redirect-to-https
service: noop
services:
main-service:
loadBalancer:
servers:
- url: "http://$host_ip:$project_port"
noop:
loadBalancer:
servers:
- url: "http://127.0.0.1:65535" # 占位用无实际后端仅用于HTTP跳转
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true
EOF
# 设置文件权限
chown jingrow:jingrow "$config_file"
chmod 644 "$config_file"
log_success "traefik网站配置文件创建完成: $config_file (端口: $project_port, 后端IP: $host_ip)"
log_info "Host规则: $host_rule"
}
# 8. 安装项目依赖 # 8. 安装项目依赖
install_project_dependencies() { install_project_dependencies() {
@ -1410,7 +1308,7 @@ generate_host_rule() {
} }
# 创建traefik网站配置文件 # 创建traefik网站配置文件
create_traefik_website_config_simple() { create_traefik_website_config() {
local site_name="$1" local site_name="$1"
local domain="$2" local domain="$2"
local port="$3" local port="$3"
@ -1531,7 +1429,7 @@ create_site() {
create_env_file create_env_file
# 创建traefik配置文件 # 创建traefik配置文件
if create_traefik_website_config_simple "$SITE_NAME" "$SITE_URL" "$port"; then if create_traefik_website_config "$SITE_NAME" "$SITE_URL" "$port"; then
restart_traefik restart_traefik
fi fi
@ -1880,7 +1778,9 @@ main() {
if [ "$SKIP_TRAEFIK" = false ]; then if [ "$SKIP_TRAEFIK" = false ]; then
install_traefik install_traefik
create_traefik_website_config # 直接创建traefik配置
local project_port=$(get_or_assign_port "$SITE_NAME")
create_traefik_website_config "$SITE_NAME" "$SITE_URL" "$project_port"
start_traefik start_traefik
else else
log_warning "跳过Traefik安装和启动" log_warning "跳过Traefik安装和启动"