docs: проверка после установки, без привязки к домену
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -30,9 +30,9 @@ apt install -y git curl build-essential python3
|
|||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||||
apt install -y nodejs
|
apt install -y nodejs
|
||||||
|
|
||||||
# 3. Клонирование (замените URL при необходимости)
|
# 3. Клонирование (подставьте URL вашего репозитория)
|
||||||
cd /opt
|
cd /opt
|
||||||
git clone https://git.evilfox.cc/test/shop10.git shop
|
git clone <URL_РЕПОЗИТОРИЯ> shop
|
||||||
cd shop
|
cd shop
|
||||||
|
|
||||||
# 4. Настройка окружения
|
# 4. Настройка окружения
|
||||||
@@ -47,7 +47,7 @@ npm install --omit=dev
|
|||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
|
||||||
Без Caddy сайт на **http://IP:3000**. С Caddy и доменом — **https://ваш-домен**.
|
Без Caddy сайт на **http://IP_СЕРВЕРА:3000**. С Caddy — **https://ваш-домен** (любой, указанный в `Caddyfile`).
|
||||||
|
|
||||||
В `.env` для production задайте (уже есть в `.env.example`):
|
В `.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 — SSL и reverse proxy (рекомендуется)
|
||||||
|
|
||||||
[Caddy](https://caddyserver.com/) автоматически выпускает и продлевает сертификаты Let's Encrypt.
|
[Caddy](https://caddyserver.com/) автоматически выпускает и продлевает сертификаты Let's Encrypt.
|
||||||
@@ -151,7 +186,7 @@ systemctl reload caddy
|
|||||||
systemctl status caddy
|
systemctl status caddy
|
||||||
```
|
```
|
||||||
|
|
||||||
Сайт: **https://shop.example.com**
|
Сайт откроется по домену из блока `Caddyfile` (в примере — `shop.example.com`).
|
||||||
|
|
||||||
Логи Caddy: `journalctl -u caddy -f`
|
Логи 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` |
|
| В `.env` нет `HOST`/`PORT` | `HOST=127.0.0.1`, `PORT=3000`, затем `systemctl restart shop` |
|
||||||
| Неверный путь к `node` в systemd | `which node` → подставьте в `ExecStart` в `/etc/systemd/system/shop.service` |
|
| Неверный путь к `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` |
|
| 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
|
```bash
|
||||||
cd /opt/shop
|
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
|
git pull
|
||||||
npm install --omit=dev
|
npm install --omit=dev
|
||||||
systemctl start shop
|
mkdir -p data && chown -R www-data:www-data data
|
||||||
# Caddy перезагружать не нужно, если Caddyfile не менялся
|
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
|
shop.service — unit для systemd
|
||||||
scripts/
|
scripts/
|
||||||
diagnose-502.sh — проверка при 502
|
diagnose-502.sh — проверка при 502
|
||||||
|
server-update.sh — git pull + restart + health
|
||||||
src/
|
src/
|
||||||
server.js — точка входа
|
server.js — точка входа
|
||||||
db.js — схема SQLite
|
db.js — схема SQLite
|
||||||
@@ -306,5 +352,6 @@ src/
|
|||||||
## Репозиторий
|
## Репозиторий
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.evilfox.cc/test/shop10.git
|
git clone <URL_РЕПОЗИТОРИЯ> shop
|
||||||
|
cd shop
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user