f
This commit is contained in:
parent
7fe6ed3baf
commit
b5f47855d1
2 changed files with 103 additions and 7 deletions
|
|
@ -19,15 +19,40 @@ sudo cp server_build.exe server.exe
|
||||||
rm server_build.exe
|
rm server_build.exe
|
||||||
|
|
||||||
# Проверяем наличие Let's Encrypt сертификатов для двойного режима
|
# Проверяем наличие Let's Encrypt сертификатов для двойного режима
|
||||||
if [ -d "/etc/letsencrypt/live/api.memo-cards.online" ]; then
|
if [ -d "/etc/letsencrypt/live/api.memo-cards.online" ] && [ -f "/etc/letsencrypt/live/api.memo-cards.online/fullchain.pem" ]; then
|
||||||
echo "✅ Let's Encrypt сертификаты найдены. Запускаем в двойном режиме (HTTP + HTTPS)"
|
echo "✅ Let's Encrypt сертификаты найдены. Запускаем в двойном режиме (HTTP + HTTPS)"
|
||||||
# Обновляем systemd сервис для двойного режима
|
# Обновляем systemd сервис для двойного режима
|
||||||
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
else
|
else
|
||||||
echo "⚠️ Let's Encrypt сертификаты не найдены. Пытаемся создать..."
|
echo "⚠️ Let's Encrypt сертификаты не найдены или повреждены. Пытаемся создать..."
|
||||||
|
|
||||||
# Останавливаем сервер временно для получения сертификата
|
# Проверяем, занят ли порт 80
|
||||||
|
if sudo netstat -tulpn | grep :80 > /dev/null 2>&1; then
|
||||||
|
echo "🔍 Порт 80 занят другим процессом. Проверяем возможные веб-сервера..."
|
||||||
|
|
||||||
|
# Пытаемся остановить распространенные веб-сервера
|
||||||
|
if sudo systemctl is-active --quiet nginx; then
|
||||||
|
echo "🛑 Останавливаем nginx для получения сертификата..."
|
||||||
|
sudo systemctl stop nginx
|
||||||
|
NGINX_STOPPED=true
|
||||||
|
elif sudo systemctl is-active --quiet apache2; then
|
||||||
|
echo "🛑 Останавливаем apache2 для получения сертификата..."
|
||||||
|
sudo systemctl stop apache2
|
||||||
|
APACHE_STOPPED=true
|
||||||
|
elif sudo systemctl is-active --quiet httpd; then
|
||||||
|
echo "🛑 Останавливаем httpd для получения сертификата..."
|
||||||
|
sudo systemctl stop httpd
|
||||||
|
HTTPD_STOPPED=true
|
||||||
|
else
|
||||||
|
echo "❓ Порт 80 занят неизвестным процессом:"
|
||||||
|
sudo netstat -tulpn | grep :80
|
||||||
|
echo "💡 Рекомендуется вручную остановить процесс, занимающий порт 80, или использовать webroot режим certbot"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Останавливаем наш сервер временно для получения сертификата
|
||||||
sudo systemctl stop mnemo_cards_server 2>/dev/null || true
|
sudo systemctl stop mnemo_cards_server 2>/dev/null || true
|
||||||
|
sleep 5
|
||||||
|
|
||||||
# Пытаемся получить Let's Encrypt сертификат
|
# Пытаемся получить Let's Encrypt сертификат
|
||||||
echo "🔐 Получаем Let's Encrypt сертификат для домена api.memo-cards.online..."
|
echo "🔐 Получаем Let's Encrypt сертификат для домена api.memo-cards.online..."
|
||||||
|
|
@ -38,13 +63,28 @@ else
|
||||||
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
else
|
else
|
||||||
echo "❌ Не удалось создать Let's Encrypt сертификат. Запускаем в HTTP режиме"
|
echo "❌ Не удалось создать Let's Encrypt сертификат. Запускаем в HTTP режиме"
|
||||||
echo "💡 Убедитесь, что:"
|
echo "💡 Возможные причины и решения:"
|
||||||
echo " - Домен api.memo-cards.online указывает на этот сервер"
|
echo " - Домен api.memo-cards.online не указывает на этот сервер"
|
||||||
echo " - Порт 80 доступен извне"
|
echo " - Порт 80 недоступен извне (firewall, порт forwarding)"
|
||||||
echo " - Firewall разрешает входящие соединения на порт 80"
|
echo " - Сертификат уже был получен ранее - проверьте /etc/letsencrypt/live/"
|
||||||
|
echo " - Используйте webroot режим если есть веб-сервер: certbot certonly --webroot -w /var/www/html -d api.memo-cards.online"
|
||||||
# Возвращаем обычный режим
|
# Возвращаем обычный режим
|
||||||
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Возвращаем веб-сервера в исходное состояние
|
||||||
|
if [ "$NGINX_STOPPED" = true ]; then
|
||||||
|
echo "🔄 Возвращаем nginx..."
|
||||||
|
sudo systemctl start nginx
|
||||||
|
fi
|
||||||
|
if [ "$APACHE_STOPPED" = true ]; then
|
||||||
|
echo "🔄 Возвращаем apache2..."
|
||||||
|
sudo systemctl start apache2
|
||||||
|
fi
|
||||||
|
if [ "$HTTPD_STOPPED" = true ]; then
|
||||||
|
echo "🔄 Возвращаем httpd..."
|
||||||
|
sudo systemctl start httpd
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
|
|
|
||||||
56
tools/deploy/backend-build_app_webroot.sh
Executable file
56
tools/deploy/backend-build_app_webroot.sh
Executable file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e -v
|
||||||
|
|
||||||
|
cd ~/mnemo_cards_common
|
||||||
|
git pull origin master
|
||||||
|
dart pub get
|
||||||
|
|
||||||
|
cd ~/mnemo_cards_common_backend
|
||||||
|
git pull origin master
|
||||||
|
dart pub get
|
||||||
|
|
||||||
|
cd ~/mnemo_cards_backend
|
||||||
|
dart pub get && dart compile exe --verbose lib/main.dart -o server_build.exe
|
||||||
|
|
||||||
|
sudo systemctl stop mnemo_cards_server && true
|
||||||
|
sleep 15
|
||||||
|
sudo chmod 777 mnemo_cards_server.service
|
||||||
|
sudo cp mnemo_cards_server.service /etc/systemd/system
|
||||||
|
sudo cp server_build.exe server.exe
|
||||||
|
rm server_build.exe
|
||||||
|
|
||||||
|
# Проверяем наличие Let's Encrypt сертификатов для двойного режима
|
||||||
|
if [ -d "/etc/letsencrypt/live/api.memo-cards.online" ] && [ -f "/etc/letsencrypt/live/api.memo-cards.online/fullchain.pem" ]; then
|
||||||
|
echo "✅ Let's Encrypt сертификаты найдены. Запускаем в двойном режиме (HTTP + HTTPS)"
|
||||||
|
# Обновляем systemd сервис для двойного режима
|
||||||
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
|
else
|
||||||
|
echo "⚠️ Let's Encrypt сертификаты не найдены. Пытаемся создать с помощью webroot режима..."
|
||||||
|
|
||||||
|
# Создаем временную директорию для webroot challenge
|
||||||
|
sudo mkdir -p /var/www/html/.well-known/acme-challenge
|
||||||
|
sudo chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
# Пытаемся получить Let's Encrypt сертификат через webroot
|
||||||
|
echo "🔐 Получаем Let's Encrypt сертификат через webroot для домена api.memo-cards.online..."
|
||||||
|
if sudo certbot certonly --webroot -w /var/www/html -d api.memo-cards.online --non-interactive --agree-tos --email admin@api.memo-cards.online; then
|
||||||
|
echo "✅ Let's Encrypt сертификат успешно создан через webroot!"
|
||||||
|
echo "🚀 Запускаем в двойном режиме (HTTP + HTTPS)"
|
||||||
|
# Обновляем systemd сервис для двойного режима
|
||||||
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.memo-cards.online -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
|
else
|
||||||
|
echo "❌ Не удалось создать Let's Encrypt сертификат через webroot. Запускаем в HTTP режиме"
|
||||||
|
echo "💡 Убедитесь, что:"
|
||||||
|
echo " - У вас установлен и запущен веб-сервер (nginx/apache)"
|
||||||
|
echo " - Домен api.memo-cards.online указывает на этот сервер"
|
||||||
|
echo " - Директория /var/www/html доступна для записи certbot"
|
||||||
|
echo " - Firewall разрешает входящие соединения на порт 80"
|
||||||
|
echo " - Веб-сервер правильно настроен для обслуживания .well-known/acme-challenge/"
|
||||||
|
# Возвращаем обычный режим
|
||||||
|
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8080|' /etc/systemd/system/mnemo_cards_server.service
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl start mnemo_cards_server
|
||||||
|
journalctl -u mnemo_cards_server --since "1min ago"
|
||||||
Loading…
Reference in a new issue