删除一些重复的函数定义并优化脚本
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服务启动/重启完成"
|
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安装和启动"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user