fix: освобождать порт 3000 перед запуском shop.service
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -28,16 +28,20 @@ else
|
||||
fi
|
||||
echo
|
||||
|
||||
echo "4. www-data доступ"
|
||||
echo "4. Порт 3000"
|
||||
ss -tlnp | grep ':3000' || echo " порт 3000 свободен"
|
||||
echo
|
||||
|
||||
echo "5. www-data доступ"
|
||||
sudo -u www-data test -r "$SHOP_ROOT/package.json" && echo " package.json: OK" || echo " package.json: FAIL"
|
||||
sudo -u www-data test -x "$SHOP_ROOT" && echo " каталог: OK" || echo " каталог: FAIL"
|
||||
echo
|
||||
|
||||
echo "5. Тест Node (5 сек)"
|
||||
echo "6. Тест Node (5 сек)"
|
||||
set +e
|
||||
timeout 8 sudo -u www-data bash -c "cd '$SHOP_ROOT' && set -a && source .env 2>/dev/null && set +a && node src/server.js" 2>&1 | head -20
|
||||
set -e
|
||||
echo
|
||||
|
||||
echo "6. journalctl shop"
|
||||
echo "7. journalctl shop"
|
||||
journalctl -u shop -n 30 --no-pager 2>/dev/null || true
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# Освободить порт 3000 (ручной npm start / старый процесс)
|
||||
set -euo pipefail
|
||||
|
||||
PORT="${1:-3000}"
|
||||
|
||||
if ! command -v ss >/dev/null; then
|
||||
echo "ss не найден"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! ss -tlnp | grep -q ":${PORT} "; then
|
||||
echo "Порт ${PORT} свободен"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Порт ${PORT} занят:"
|
||||
ss -tlnp | grep ":${PORT} " || true
|
||||
|
||||
if command -v fuser >/dev/null; then
|
||||
echo "Останавливаем процессы на ${PORT}/tcp..."
|
||||
fuser -k "${PORT}/tcp" 2>/dev/null || true
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
if ss -tlnp | grep -q ":${PORT} "; then
|
||||
echo "Порт ${PORT} всё ещё занят — остановите процесс вручную"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Порт ${PORT} свободен"
|
||||
@@ -78,6 +78,9 @@ fi
|
||||
systemctl daemon-reload
|
||||
systemctl enable shop
|
||||
|
||||
systemctl stop shop 2>/dev/null || true
|
||||
bash "$SCRIPT_DIR/free-port-3000.sh" 3000
|
||||
|
||||
echo "Запуск shop..."
|
||||
if ! systemctl restart shop; then
|
||||
echo ""
|
||||
@@ -89,13 +92,20 @@ if ! systemctl restart shop; then
|
||||
fi
|
||||
|
||||
sleep 3
|
||||
if curl -sf http://127.0.0.1:3000/health; then
|
||||
echo ""
|
||||
echo "OK — служба shop запущена"
|
||||
systemctl status shop --no-pager | head -15
|
||||
systemctl reload caddy 2>/dev/null || true
|
||||
else
|
||||
echo "shop не отвечает на :3000"
|
||||
|
||||
if ! systemctl is-active --quiet shop; then
|
||||
echo "shop.service не в состоянии active"
|
||||
journalctl -u shop -n 40 --no-pager
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if curl -sf http://127.0.0.1:3000/health; then
|
||||
echo ""
|
||||
echo "OK — служба shop запущена (systemd active)"
|
||||
systemctl status shop --no-pager | head -15
|
||||
systemctl reload caddy 2>/dev/null || true
|
||||
else
|
||||
echo "health не отвечает"
|
||||
journalctl -u shop -n 40 --no-pager
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -35,6 +35,7 @@ fi
|
||||
|
||||
if [ -f /etc/systemd/system/shop.service ]; then
|
||||
systemctl daemon-reload
|
||||
bash "$SCRIPT_DIR/free-port-3000.sh" 3000 2>/dev/null || true
|
||||
systemctl restart shop
|
||||
sleep 2
|
||||
if curl -sf http://127.0.0.1:3000/health; then
|
||||
|
||||
Reference in New Issue
Block a user