fix and update
This commit is contained in:
101
install.sh
101
install.sh
@@ -10,7 +10,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_VERSION="2.6.1"
|
||||
SCRIPT_VERSION="2.6.2"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
@@ -76,6 +76,7 @@ ${BOLD}Lendry ID v${SCRIPT_VERSION}${NC} — установка и управл
|
||||
./install.sh --renew-ssl Обновить сертификаты (Let's Encrypt / custom / selfsigned)
|
||||
./install.sh --restart Перезапуск контейнеров
|
||||
./install.sh --migrate-rebuild Миграции Prisma + пересборка стека (после git pull)
|
||||
./install.sh --fix-host-nginx Host Nginx: остановить Docker Nginx, поднять system nginx
|
||||
./install.sh --docker-prune Только очистка Docker (без пересборки)
|
||||
./install.sh --fix-proxy Исправить 502: host Nginx + порты 3000/3002/3003
|
||||
./install.sh --fix-all Комплексное исправление: 502, прокси, порты, Nginx
|
||||
@@ -159,6 +160,7 @@ parse_args() {
|
||||
--renew-ssl) ACTION="renew-ssl"; shift ;;
|
||||
--restart) ACTION="restart"; shift ;;
|
||||
--migrate-rebuild) ACTION="migrate-rebuild"; shift ;;
|
||||
--fix-host-nginx) ACTION="fix-host-nginx"; shift ;;
|
||||
--docker-prune) ACTION="docker-prune"; shift ;;
|
||||
--skip-docker-prune) SKIP_DOCKER_PRUNE=1; shift ;;
|
||||
--docker-prune-aggressive) DOCKER_PRUNE_AGGRESSIVE=1; shift ;;
|
||||
@@ -374,6 +376,9 @@ ensure_docker_nginx_not_conflicting() {
|
||||
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]] || [[ "$ports_busy" -eq 1 ]]; then
|
||||
stop_docker_nginx
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
ensure_host_nginx_stack || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -388,6 +393,55 @@ stop_docker_nginx() {
|
||||
fi
|
||||
}
|
||||
|
||||
# NGINX_MODE=host: системный Nginx на 80/443, Docker Nginx не используется.
|
||||
ensure_host_nginx_stack() {
|
||||
load_env
|
||||
[[ "$(env_get NGINX_MODE docker)" == "host" ]] || return 0
|
||||
[[ -n "$(env_get DOMAIN_API "")" ]] || return 0
|
||||
[[ "$(env_get INSTALL_MODE local)" == "local" ]] && return 0
|
||||
|
||||
stop_docker_nginx
|
||||
|
||||
log "Синхронизация системного Nginx (NGINX_MODE=host)..."
|
||||
refresh_host_nginx_configs || true
|
||||
recreate_host_port_services || true
|
||||
ensure_host_upstreams || true
|
||||
|
||||
if ! host_nginx_available; then
|
||||
fail "NGINX_MODE=host, но системный Nginx не установлен. Установите nginx или переключите NGINX_MODE=docker"
|
||||
fi
|
||||
|
||||
if ! system_nginx_is_active; then
|
||||
log "Запуск системного Nginx (освободили порты после остановки lendry-id-nginx)..."
|
||||
run_root systemctl start nginx 2>/dev/null || run_root service nginx start 2>/dev/null || \
|
||||
fail "Не удалось запустить system nginx — проверьте: sudo systemctl status nginx"
|
||||
fi
|
||||
|
||||
if run_root nginx -t >/dev/null 2>&1; then
|
||||
run_root systemctl reload nginx 2>/dev/null || run_root service nginx reload 2>/dev/null || true
|
||||
ok "Системный Nginx активен и перезагружен"
|
||||
else
|
||||
warn "nginx -t не прошёл — проверьте /etc/nginx/sites-enabled/${NGINX_PREFIX}-*.conf"
|
||||
run_root nginx -t 2>&1 | sed 's/^/ /' || true
|
||||
return 1
|
||||
fi
|
||||
|
||||
if docker_nginx_container_running; then
|
||||
fail "Конфликт: lendry-id-nginx всё ещё запущен при NGINX_MODE=host"
|
||||
fi
|
||||
}
|
||||
|
||||
action_fix_host_nginx() {
|
||||
[[ -f .env ]] || fail "Файл .env не найден"
|
||||
load_env
|
||||
prepare_compose_stack
|
||||
ensure_host_nginx_stack || fail "Не удалось восстановить системный Nginx"
|
||||
recreate_host_port_services || true
|
||||
ensure_host_upstreams || true
|
||||
show_upstream_health
|
||||
ok "Host Nginx восстановлен — проверьте сайт в браузере"
|
||||
}
|
||||
|
||||
reload_docker_nginx() {
|
||||
docker_nginx_container_running || return 0
|
||||
log "Перезагрузка конфигурации Docker Nginx..."
|
||||
@@ -451,7 +505,7 @@ recreate_docker_nginx() {
|
||||
wait_for_service "nginx" 60
|
||||
}
|
||||
|
||||
# После пересборки стека (п.11 migrate-rebuild): поднять Nginx, если он не запущен.
|
||||
# После пересборки стека (п.11 migrate-rebuild): Nginx согласно NGINX_MODE.
|
||||
ensure_nginx_after_stack_rebuild() {
|
||||
load_env
|
||||
prepare_compose_stack
|
||||
@@ -460,6 +514,11 @@ ensure_nginx_after_stack_rebuild() {
|
||||
[[ -n "$(env_get DOMAIN_API "")" ]] || return 0
|
||||
[[ "$(env_get INSTALL_MODE local)" == "local" ]] && return 0
|
||||
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
ensure_host_nginx_stack
|
||||
return $?
|
||||
fi
|
||||
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "docker" ]]; then
|
||||
log "Запуск и синхронизация Docker Nginx (lendry-id-nginx)..."
|
||||
ensure_nginx_gateway_watch_script
|
||||
@@ -493,14 +552,7 @@ ensure_nginx_after_stack_rebuild() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
log "Синхронизация системного Nginx (NGINX_MODE=host)..."
|
||||
refresh_host_nginx_configs || true
|
||||
recreate_host_port_services || true
|
||||
ensure_host_upstreams || true
|
||||
if system_nginx_is_active || lendry_host_nginx_configured; then
|
||||
run_root nginx -t >/dev/null 2>&1 && run_root systemctl reload nginx 2>/dev/null || true
|
||||
fi
|
||||
ok "Системный Nginx синхронизирован"
|
||||
warn "NGINX_MODE=$(env_get NGINX_MODE auto) — пропуск настройки Nginx"
|
||||
}
|
||||
|
||||
ensure_nginx_gateway_watch_script() {
|
||||
@@ -1586,11 +1638,23 @@ action_migrate_rebuild() {
|
||||
wait_for_service docs 60
|
||||
|
||||
log "Шаг 4/4: Nginx, прокси и проверка..."
|
||||
ensure_nginx_after_stack_rebuild || warn "Nginx не поднялся — выполните ./install.sh --fix-all"
|
||||
post_deploy_proxy_verify 0 || true
|
||||
ensure_nginx_after_stack_rebuild || warn "Nginx не восстановлен — выполните: ./install.sh --fix-host-nginx"
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
show_upstream_health
|
||||
check_https_api_with_origin || warn "HTTPS-проверка не прошла — выполните: ./install.sh --fix-host-nginx"
|
||||
else
|
||||
post_deploy_proxy_verify 0 || true
|
||||
fi
|
||||
diagnose_common_issues || true
|
||||
|
||||
if compose_uses_proxy_profile && ! docker_nginx_container_running; then
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
if docker_nginx_container_running; then
|
||||
fail "Конфликт: lendry-id-nginx запущен при NGINX_MODE=host. Выполните: ./install.sh --fix-host-nginx"
|
||||
fi
|
||||
if ! system_nginx_is_active; then
|
||||
fail "Системный Nginx не запущен. Выполните: ./install.sh --fix-host-nginx"
|
||||
fi
|
||||
elif compose_uses_proxy_profile && ! docker_nginx_container_running; then
|
||||
fail "Сайт недоступен: lendry-id-nginx не запущен. Выполните: ./install.sh --fix-all"
|
||||
fi
|
||||
|
||||
@@ -3773,7 +3837,7 @@ diagnose_common_issues() {
|
||||
issues=$((issues + 1))
|
||||
elif [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
echo -e " ${RED}✘${NC} Конфликт: NGINX_MODE=host, но запущен lendry-id-nginx"
|
||||
echo " Решение: ./install.sh --fix-all"
|
||||
echo " Решение: ./install.sh --fix-host-nginx"
|
||||
issues=$((issues + 1))
|
||||
elif [[ "$(env_get NGINX_MODE docker)" == "docker" ]] \
|
||||
&& ! docker_nginx_container_running \
|
||||
@@ -3956,10 +4020,16 @@ show_status() {
|
||||
echo ""
|
||||
if docker_cmd ps -q -f name=lendry-id-nginx 2>/dev/null | grep -q .; then
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
warn "КОНФЛИКТ: контейнер lendry-id-nginx запущен при NGINX_MODE=host — выполните: ./install.sh --fix-all"
|
||||
warn "КОНФЛИКТ: контейнер lendry-id-nginx запущен при NGINX_MODE=host — выполните: ./install.sh --fix-host-nginx"
|
||||
else
|
||||
echo " Docker Nginx: запущен (режим docker; curl 127.0.0.1:3002 не нужен)"
|
||||
fi
|
||||
elif [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
if system_nginx_is_active; then
|
||||
echo " Host Nginx: активен (systemd)"
|
||||
else
|
||||
warn "Host Nginx: не запущен — выполните: ./install.sh --fix-host-nginx"
|
||||
fi
|
||||
fi
|
||||
if [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
|
||||
docker_cmd port lendry-id-frontend 3000/tcp 2>/dev/null | sed 's/^/ frontend port: /' || \
|
||||
@@ -4372,6 +4442,7 @@ main() {
|
||||
renew-ssl) action_renew_ssl ;;
|
||||
restart) action_restart ;;
|
||||
migrate-rebuild) action_migrate_rebuild ;;
|
||||
fix-host-nginx) action_fix_host_nginx ;;
|
||||
docker-prune) action_docker_prune ;;
|
||||
fix-proxy) action_fix_host_proxy ;;
|
||||
fix-all) action_fix_all_errors ;;
|
||||
|
||||
Reference in New Issue
Block a user