From cb3b8bc49fb6e178ba09d3e05272acb4c90a967d Mon Sep 17 00:00:00 2001 From: shop Date: Sat, 16 May 2026 21:15:59 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D1=83=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8,=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=B7=20=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BA=20=D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b6d99a4..bfc0863 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,9 @@ apt install -y git curl build-essential python3 curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install -y nodejs -# 3. Клонирование (замените URL при необходимости) +# 3. Клонирование (подставьте URL вашего репозитория) cd /opt -git clone https://git.evilfox.cc/test/shop10.git shop +git clone shop cd shop # 4. Настройка окружения @@ -47,7 +47,7 @@ npm install --omit=dev npm start ``` -Без Caddy сайт на **http://IP:3000**. С Caddy и доменом — **https://ваш-домен**. +Без Caddy сайт на **http://IP_СЕРВЕРА:3000**. С Caddy — **https://ваш-домен** (любой, указанный в `Caddyfile`). В `.env` для production задайте (уже есть в `.env.example`): @@ -97,6 +97,41 @@ curl -s http://127.0.0.1:3000/health --- +## Проверка после установки + +Перед настройкой Caddy убедитесь, что Node отвечает локально: + +```bash +cd /opt/shop +systemctl restart shop +sleep 1 + +curl -s http://127.0.0.1:3000/health +# {"ok":true,"service":"shop"} + +ss -tlnp | grep 3000 +# LISTEN ... 127.0.0.1:3000 ... node + +journalctl -u shop -n 5 --no-pager +# должна быть строка: Магазин: http://127.0.0.1:3000 +``` + +Если в логе только «База уже содержит товары…» и служба сразу останавливается — обновите код: `git pull` (нужна актуальная версия `seed.js`). + +После успешной проверки настройте Caddy и выполните: + +```bash +systemctl reload caddy +``` + +Обновление на сервере одной командой: + +```bash +bash /opt/shop/scripts/server-update.sh +``` + +--- + ## Caddy — SSL и reverse proxy (рекомендуется) [Caddy](https://caddyserver.com/) автоматически выпускает и продлевает сертификаты Let's Encrypt. @@ -151,7 +186,7 @@ systemctl reload caddy systemctl status caddy ``` -Сайт: **https://shop.example.com** +Сайт откроется по домену из блока `Caddyfile` (в примере — `shop.example.com`). Логи Caddy: `journalctl -u caddy -f` @@ -194,6 +229,7 @@ curl -v http://127.0.0.1:3000/health | В `.env` нет `HOST`/`PORT` | `HOST=127.0.0.1`, `PORT=3000`, затем `systemctl restart shop` | | Неверный путь к `node` в systemd | `which node` → подставьте в `ExecStart` в `/etc/systemd/system/shop.service` | | Caddy стартовал раньше shop | `cp deploy/caddy-after-shop.conf /etc/systemd/system/caddy.service.d/shop.conf` и `daemon-reload` | +| В логе seed и сразу `Deactivated` | `git pull` — старый `seed.js` вызывал `process.exit` до старта сервера | **Быстрое восстановление:** @@ -235,11 +271,20 @@ git pull ```bash cd /opt/shop -systemctl stop shop +bash scripts/server-update.sh +``` + +Или вручную: + +```bash +cd /opt/shop +git config --global --add safe.directory /opt/shop git pull npm install --omit=dev -systemctl start shop -# Caddy перезагружать не нужно, если Caddyfile не менялся +mkdir -p data && chown -R www-data:www-data data +systemctl restart shop +curl -s http://127.0.0.1:3000/health +systemctl reload caddy # если меняли Caddyfile ``` --- @@ -294,6 +339,7 @@ deploy/ shop.service — unit для systemd scripts/ diagnose-502.sh — проверка при 502 + server-update.sh — git pull + restart + health src/ server.js — точка входа db.js — схема SQLite @@ -306,5 +352,6 @@ src/ ## Репозиторий ```bash -git clone https://git.evilfox.cc/test/shop10.git +git clone shop +cd shop ```