docs: права git/data, скрипт server-update, fix dubious ownership
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -72,13 +72,16 @@ SESSION_SECRET=ваш-длинный-секрет
|
|||||||
```bash
|
```bash
|
||||||
cp /opt/shop/deploy/shop.service /etc/systemd/system/shop.service
|
cp /opt/shop/deploy/shop.service /etc/systemd/system/shop.service
|
||||||
|
|
||||||
# Зависимости и сборка (от root, до смены владельца)
|
# Код обновляйте от root; НЕ делайте chown -R на весь /opt/shop (ломает git pull)
|
||||||
cd /opt/shop
|
cd /opt/shop
|
||||||
|
git config --global --add safe.directory /opt/shop
|
||||||
|
git pull
|
||||||
npm install --omit=dev
|
npm install --omit=dev
|
||||||
|
|
||||||
# Владелец — тот же пользователь, что в unit (www-data)
|
# Запись только в data/ — для пользователя службы www-data
|
||||||
chown -R www-data:www-data /opt/shop
|
mkdir -p /opt/shop/data
|
||||||
chmod +x /opt/shop/scripts/diagnose-502.sh
|
chown -R www-data:www-data /opt/shop/data
|
||||||
|
chmod +x /opt/shop/scripts/diagnose-502.sh 2>/dev/null || true
|
||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable shop
|
systemctl enable shop
|
||||||
@@ -186,7 +189,8 @@ curl -v http://127.0.0.1:3000/health
|
|||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| Служба `shop` не запущена или падает | `systemctl restart shop`, смотрите логи `journalctl -u shop -f` |
|
| Служба `shop` не запущена или падает | `systemctl restart shop`, смотрите логи `journalctl -u shop -f` |
|
||||||
| Нет `npm install` / сломан `better-sqlite3` | `cd /opt/shop && npm install --omit=dev` (нужны `build-essential`, `python3`) |
|
| Нет `npm install` / сломан `better-sqlite3` | `cd /opt/shop && npm install --omit=dev` (нужны `build-essential`, `python3`) |
|
||||||
| Нет прав на `data/` у `www-data` | `mkdir -p /opt/shop/data && chown -R www-data:www-data /opt/shop` |
|
| Нет прав на `data/` у `www-data` | `mkdir -p /opt/shop/data && chown -R www-data:www-data /opt/shop/data` |
|
||||||
|
| `dubious ownership` / нет `git pull` | `chown -R root:root /opt/shop` + `safe.directory` (см. выше) |
|
||||||
| В `.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` |
|
||||||
@@ -195,14 +199,27 @@ curl -v http://127.0.0.1:3000/health
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop
|
cd /opt/shop
|
||||||
|
git config --global --add safe.directory /opt/shop
|
||||||
git pull
|
git pull
|
||||||
npm install --omit=dev
|
npm install --omit=dev
|
||||||
chown -R www-data:www-data /opt/shop
|
mkdir -p data
|
||||||
|
chown -R www-data:www-data /opt/shop/data
|
||||||
systemctl restart shop
|
systemctl restart shop
|
||||||
curl -s http://127.0.0.1:3000/health # должен быть {"ok":true,...}
|
curl -s http://127.0.0.1:3000/health # должен быть {"ok":true,...}
|
||||||
systemctl reload caddy
|
systemctl reload caddy
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Ошибка `dubious ownership` при `git pull`:**
|
||||||
|
|
||||||
|
Вы сделали `chown -R www-data` на весь каталог. Верните владельца репозиторию root и оставьте `data/` за www-data:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chown -R root:root /opt/shop
|
||||||
|
chown -R www-data:www-data /opt/shop/data
|
||||||
|
git config --global --add safe.directory /opt/shop
|
||||||
|
git pull
|
||||||
|
```
|
||||||
|
|
||||||
Пока `curl http://127.0.0.1:3000/health` не возвращает OK — HTTPS через Caddy будет отдавать 502.
|
Пока `curl http://127.0.0.1:3000/health` не возвращает OK — HTTPS через Caddy будет отдавать 502.
|
||||||
|
|
||||||
### Другие проблемы
|
### Другие проблемы
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Обновление на сервере (запускать от root в /opt/shop)
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
cd /opt/shop
|
||||||
|
|
||||||
|
git config --global --add safe.directory /opt/shop 2>/dev/null || true
|
||||||
|
git pull
|
||||||
|
|
||||||
|
npm install --omit=dev
|
||||||
|
|
||||||
|
mkdir -p data
|
||||||
|
chown -R www-data:www-data data
|
||||||
|
|
||||||
|
if systemctl is-active --quiet shop 2>/dev/null; then
|
||||||
|
systemctl restart shop
|
||||||
|
sleep 1
|
||||||
|
curl -sf http://127.0.0.1:3000/health && echo || {
|
||||||
|
echo "shop не отвечает — смотрите: journalctl -u shop -n 30"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
systemctl reload caddy 2>/dev/null || true
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "Служба shop не установлена. См. deploy/shop.service в README."
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user