删除一些重复的函数定义并优化脚本
This commit is contained in:
parent
84ad3031c2
commit
e45086261a
110
install_jsite.sh
110
install_jsite.sh
@ -1157,111 +1157,9 @@ start_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. 安装项目依赖
|
||||
install_project_dependencies() {
|
||||
@ -1410,7 +1308,7 @@ generate_host_rule() {
|
||||
}
|
||||
|
||||
# 创建traefik网站配置文件
|
||||
create_traefik_website_config_simple() {
|
||||
create_traefik_website_config() {
|
||||
local site_name="$1"
|
||||
local domain="$2"
|
||||
local port="$3"
|
||||
@ -1531,7 +1429,7 @@ create_site() {
|
||||
create_env_file
|
||||
|
||||
# 创建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
|
||||
fi
|
||||
|
||||
@ -1880,7 +1778,9 @@ main() {
|
||||
|
||||
if [ "$SKIP_TRAEFIK" = false ]; then
|
||||
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
|
||||
else
|
||||
log_warning "跳过Traefik安装和启动"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user