Files
shop10/wiki/Install-Native.md
T

107 lines
2.2 KiB
Markdown

# Установка без Docker (Ubuntu)
Production: Node.js 20, PostgreSQL 17, systemd, опционально Caddy.
**Полное руководство по ошибкам и обновлениям:** [Server-Operations](Server-Operations).
Задайте каталог клона:
```bash
export SHOP_ROOT=/opt/shop
```
---
## 1. Требования
- Ubuntu 22.04 или 24.04
- Порты 22, 80, 443 (для Caddy)
- Порт 3000 только localhost
## 2. Системные пакеты
### Node.js 20
```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs git curl
```
### PostgreSQL 17
Не используйте `apt install postgresql-17` без PGDG:
```bash
sudo bash "$SHOP_ROOT/scripts/install-postgresql-ubuntu.sh"
```
## 3. Клонирование
```bash
export GIT_REPO_URL='<URL-вашего-репозитория>'
git clone "$GIT_REPO_URL" "$SHOP_ROOT"
cd "$SHOP_ROOT"
```
Или: `sudo SHOP_GIT_URL="$GIT_REPO_URL" bash scripts/quick-deploy-ubuntu.sh`
## 4. База данных
```bash
cd "$SHOP_ROOT"
bash scripts/setup-postgres-ubuntu.sh
```
## 5. `.env`
```bash
cp .env.example .env
nano .env
```
`SESSION_SECRET`, `DATABASE_URL`, `SITE_URL` (ваш публичный URL без привязки к конкретному домену в коде).
## 6. Зависимости
```bash
npm install --omit=dev
```
## 7. systemd
```bash
sudo bash scripts/install-shop-service.sh
```
`WorkingDirectory` в unit = `$SHOP_ROOT`. Не делайте `chown -R www-data` на весь репозиторий.
## 8. Caddy
После `curl http://127.0.0.1:3000/health` → OK:
```bash
cp "$SHOP_ROOT/caddy/Caddyfile.example" /etc/caddy/Caddyfile
# укажите ваш домен в Caddyfile
systemctl reload caddy
```
## 9. Обновление
```bash
bash "$SHOP_ROOT/scripts/server-update.sh"
```
## 10. Архитектура
```
Интернет → Caddy :443 → 127.0.0.1:3000 (Node.js)
PostgreSQL 127.0.0.1:5432
```
## 11. Резервное копирование
```bash
sudo -u postgres pg_dump shop > shop_backup_$(date +%F).sql
```