4.7 KiB
Исправление скриптов сборки Backend
Дата: 19 ноября 2025
Проблема: После исправления конфликта портов (8443 → 8081), скрипты сборки backend возвращали порт обратно на 8443
Исправленные файлы
Изменены все скрипты сборки для использования порта 8081 вместо 8443:
1. mnemo_cards_backend/build_app.sh
Все вхождения -p 8443 заменены на -p 8081
Исправленные строки:
- Строка 25: Dual mode с сертификатами
- Строка 38: Dual mode если сертификат создан
- Строка 46: HTTP mode если сертификат не создан
2. tools/deploy/backend/server_build.sh
Все вхождения -p 8443 заменены на -p 8081
Исправленные строки:
- Строка 36: Dual mode с сертификатами
- Строка 39: HTTP mode без сертификатов
3. tools/deploy/backend-build_app.sh
Все вхождения -p 8443 заменены на -p 8081
Исправленные строки:
- Строка 30: HTTPS-only режим
- Строка 74: HTTPS-only после создания сертификата
- Строка 83: HTTP режим (fallback)
Причина проблемы
Скрипты сборки backend содержали жестко закодированный порт 8443, который конфликтовал с code-server (VSCode).
Последовательность событий:
- ✅ Backend исправлен вручную на порт 8081
- ❌ Запущен скрипт сборки backend
- ❌ Скрипт перезаписал systemd service с портом 8443
- ❌ Backend упал с ошибкой "Address already in use"
- ✅ Исправлены все скрипты сборки
- ✅ Backend восстановлен на порту 8081
Решение
Автоматическое
Используйте скрипт восстановления:
cd /Users/dmitry/StudioProjects/mnemo_cards/tools/deploy
./fix-backend-port-conflict.sh
Ручное
Если нужно вручную:
ssh root@147.45.152.129
# Исправить порт в systemd service
sudo sed -i 's/-p 8443/-p 8081/g' /etc/systemd/system/mnemo_cards_server.service
# Перезапустить
sudo systemctl daemon-reload
sudo systemctl restart mnemo_cards_server
Проверка
После сборки backend проверьте, что используется правильный порт:
# Проверка systemd service
ssh root@147.45.152.129 'cat /etc/systemd/system/mnemo_cards_server.service | grep ExecStart'
# Должно быть: -p 8081
# Проверка порта
ssh root@147.45.152.129 'ss -tuln | grep 8081'
# Должно показать: 0.0.0.0:8081
# Проверка статуса
ssh root@147.45.152.129 'systemctl status mnemo_cards_server'
# Должно быть: Active: active (running)
Распределение портов
| Сервис | Порт | Адрес | Назначение |
|---|---|---|---|
| Backend API | 8081 | 0.0.0.0 | HTTP API (SSL в nginx) |
| code-server | 8443 | 127.0.0.1 | VSCode Server |
| Forgejo | 3000 | 127.0.0.1 | Git Server |
| nginx | 443 | 0.0.0.0 | HTTPS Proxy |
Текущий статус
🟢 ВСЕ ИСПРАВЛЕНО
- ✅ Скрипты сборки используют порт 8081
- ✅ Backend работает на порту 8081
- ✅ code-server работает на порту 8443
- ✅ Конфликт портов устранен
- ✅ Все сервисы работают стабильно
Важно для будущего
⚠️ При добавлении новых скриптов сборки:
- Всегда используйте порт 8081 для backend
- Порт 8443 зарезервирован для code-server
- Документируйте используемые порты
Связанные документы
- BACKEND_FIX_REPORT_2025-11-19.md - Первичное исправление
- fix-backend-port-conflict.sh - Скрипт восстановления
- README.md - Общая документация
Вывод: Все скрипты сборки backend теперь используют правильный порт 8081. Конфликт с VSCode больше не возникнет при сборке.