fix: быстрое развёртывание — PGDG, /opt/shop/shop10, без placeholder URL
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -100,7 +100,7 @@ apt install -y postgresql-17 postgresql-client-17
|
|||||||
Пользователь и база `shop`:
|
Пользователь и база `shop`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop
|
cd /opt/shop/shop10
|
||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -112,32 +112,33 @@ bash scripts/setup-postgres-ubuntu.sh
|
|||||||
|
|
||||||
## Быстрый развёртывание на Ubuntu
|
## Быстрый развёртывание на Ubuntu
|
||||||
|
|
||||||
|
**Одной командой** (клон в `/opt/shop/shop10`, PostgreSQL через PGDG, systemd):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Система + Node.js 20
|
apt update && apt install -y git curl
|
||||||
apt update
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
|
||||||
apt install -y git curl
|
cd /opt/shop/shop10
|
||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
sudo bash scripts/quick-deploy-ubuntu.sh
|
||||||
apt install -y nodejs
|
```
|
||||||
|
|
||||||
# 2. PostgreSQL 17
|
**Уже установлен магазин — только обновить код:**
|
||||||
apt install -y postgresql-17 postgresql-client-17
|
|
||||||
|
|
||||||
# 3. Код
|
```bash
|
||||||
cd /opt
|
bash /opt/shop/shop10/scripts/server-update.sh
|
||||||
git clone <URL_РЕПОЗИТОРИЯ> shop
|
```
|
||||||
cd shop
|
|
||||||
|
|
||||||
# 4. БД
|
Не выполняйте `cd /opt/shop`, если репозиторий в `/opt/shop/shop10` — там нет `package.json`.
|
||||||
|
|
||||||
|
Ручная установка:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/shop/shop10
|
||||||
|
sudo bash scripts/install-postgresql-ubuntu.sh # PGDG, не apt install postgresql-17 напрямую
|
||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
|
|
||||||
# 5. Окружение
|
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
sed -i "s/change-me-to-a-long-random-string/$(openssl rand -hex 32)/" .env
|
# SESSION_SECRET, DATABASE_URL, SITE_URL
|
||||||
# Проверьте DATABASE_URL в .env
|
|
||||||
|
|
||||||
# 6. Приложение
|
|
||||||
npm install --omit=dev
|
npm install --omit=dev
|
||||||
npm start
|
systemctl restart shop
|
||||||
```
|
```
|
||||||
|
|
||||||
Проверка:
|
Проверка:
|
||||||
@@ -169,9 +170,9 @@ DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
|
|||||||
## Запуск как служба (systemd)
|
## Запуск как служба (systemd)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp /opt/shop/deploy/shop.service /etc/systemd/system/shop.service
|
cp /opt/shop/shop10/deploy/shop.service /etc/systemd/system/shop.service
|
||||||
|
|
||||||
cd /opt/shop
|
cd /opt/shop/shop10
|
||||||
cp .env.example .env # при первой установке
|
cp .env.example .env # при первой установке
|
||||||
# Заполните SESSION_SECRET и DATABASE_URL
|
# Заполните SESSION_SECRET и DATABASE_URL
|
||||||
|
|
||||||
@@ -184,7 +185,7 @@ systemctl start shop
|
|||||||
journalctl -u shop -f
|
journalctl -u shop -f
|
||||||
```
|
```
|
||||||
|
|
||||||
`EnvironmentFile=/opt/shop/.env` должен содержать `DATABASE_URL`.
|
`EnvironmentFile=/opt/shop/shop10/.env` должен содержать `DATABASE_URL`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -276,19 +277,17 @@ shop.example.com {
|
|||||||
**Быстрое исправление (одной командой):**
|
**Быстрое исправление (одной командой):**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop
|
bash /opt/shop/shop10/scripts/fix-db-connection.sh
|
||||||
git pull
|
|
||||||
bash scripts/fix-db-connection.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Вручную:**
|
**Вручную:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install -y postgresql-17 postgresql-client-17
|
cd /opt/shop/shop10
|
||||||
|
sudo bash scripts/install-postgresql-ubuntu.sh
|
||||||
systemctl enable --now postgresql
|
systemctl enable --now postgresql
|
||||||
pg_isready -h 127.0.0.1 -p 5432
|
pg_isready -h 127.0.0.1 -p 5432
|
||||||
|
|
||||||
cd /opt/shop
|
|
||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
nano .env # DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
|
nano .env # DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
|
||||||
|
|
||||||
@@ -301,7 +300,7 @@ curl -s http://127.0.0.1:3000/health
|
|||||||
### HTTP 502
|
### HTTP 502
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash /opt/shop/scripts/diagnose-502.sh
|
bash /opt/shop/shop10/scripts/diagnose-502.sh
|
||||||
journalctl -u shop -n 50 --no-pager
|
journalctl -u shop -n 50 --no-pager
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -344,6 +343,8 @@ caddy/Caddyfile.docker.example
|
|||||||
deploy/shop.service
|
deploy/shop.service
|
||||||
scripts/
|
scripts/
|
||||||
setup-postgres-ubuntu.sh
|
setup-postgres-ubuntu.sh
|
||||||
|
install-postgresql-ubuntu.sh
|
||||||
|
quick-deploy-ubuntu.sh
|
||||||
fix-db-connection.sh
|
fix-db-connection.sh
|
||||||
diagnose-502.sh
|
diagnose-502.sh
|
||||||
server-update.sh
|
server-update.sh
|
||||||
@@ -353,8 +354,8 @@ src/
|
|||||||
## Релиз 0.20.0
|
## Релиз 0.20.0
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <URL_РЕПОЗИТОРИЯ> shop
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
|
||||||
cd shop
|
cd /opt/shop/shop10
|
||||||
git checkout v0.20.0
|
git checkout v0.20.0
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -366,6 +367,6 @@ git checkout v0.20.0
|
|||||||
## Репозиторий
|
## Репозиторий
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <URL_РЕПОЗИТОРИЯ> shop
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
|
||||||
cd shop
|
cd /opt/shop/shop10
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
## Вариант A — Docker Compose
|
## Вариант A — Docker Compose
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <URL_РЕПОЗИТОРИЯ> shop && cd shop
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10 && cd /opt/shop/shop10
|
||||||
git checkout v0.10.0
|
git checkout v0.10.0
|
||||||
|
|
||||||
cp .env.docker.example .env
|
cp .env.docker.example .env
|
||||||
@@ -27,7 +27,7 @@ docker compose --profile proxy up -d --build
|
|||||||
## Вариант B — без Docker (Ubuntu)
|
## Вариант B — без Docker (Ubuntu)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <URL_РЕПОЗИТОРИЯ> shop && cd shop
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10 && cd /opt/shop/shop10
|
||||||
git checkout v0.10.0
|
git checkout v0.10.0
|
||||||
|
|
||||||
apt install -y git curl
|
apt install -y git curl
|
||||||
|
|||||||
@@ -2,29 +2,30 @@
|
|||||||
# Быстрое исправление ECONNREFUSED 127.0.0.1:5432
|
# Быстрое исправление ECONNREFUSED 127.0.0.1:5432
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/shop-root.sh"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/shop-root.sh"
|
||||||
|
|
||||||
echo "=== Исправление подключения к PostgreSQL ==="
|
echo "=== Исправление подключения к PostgreSQL ($SHOP_ROOT) ==="
|
||||||
|
|
||||||
if ! dpkg -l | grep -q postgresql; then
|
if ! command -v psql >/dev/null; then
|
||||||
echo "Установка PostgreSQL 17..."
|
bash "$SCRIPT_DIR/install-postgresql-ubuntu.sh"
|
||||||
apt update
|
|
||||||
apt install -y postgresql-17 postgresql-client-17 || {
|
|
||||||
echo "Если пакет не найден — см. README (репозиторий PGDG)"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash "$SCRIPT_DIR/setup-postgres-ubuntu.sh"
|
||||||
|
|
||||||
if [ -f .env ] && ! grep -q '^DATABASE_URL=' .env; then
|
if [ -f .env ] && ! grep -q '^DATABASE_URL=' .env; then
|
||||||
echo "DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop" >> .env
|
echo 'DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop' >> .env
|
||||||
echo "Добавлен DATABASE_URL в .env"
|
echo "Добавлен DATABASE_URL в .env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f deploy/shop.service ]; then
|
||||||
cp -f deploy/shop.service /etc/systemd/system/shop.service
|
cp -f deploy/shop.service /etc/systemd/system/shop.service
|
||||||
|
sed -i "s|WorkingDirectory=.*|WorkingDirectory=${SHOP_ROOT}|" /etc/systemd/system/shop.service
|
||||||
|
sed -i "s|EnvironmentFile=.*|EnvironmentFile=${SHOP_ROOT}/.env|" /etc/systemd/system/shop.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl restart shop
|
fi
|
||||||
|
|
||||||
|
systemctl restart shop 2>/dev/null || true
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
if curl -sf http://127.0.0.1:3000/health; then
|
if curl -sf http://127.0.0.1:3000/health; then
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Установка PostgreSQL 17 (PGDG) или postgresql из Ubuntu
|
||||||
|
# sudo bash scripts/install-postgresql-ubuntu.sh
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if command -v psql >/dev/null; then
|
||||||
|
echo "PostgreSQL уже установлен: $(psql --version | head -1)"
|
||||||
|
systemctl enable postgresql 2>/dev/null || true
|
||||||
|
systemctl start postgresql 2>/dev/null || true
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=== Установка PostgreSQL ==="
|
||||||
|
apt update
|
||||||
|
apt install -y curl ca-certificates gnupg lsb-release
|
||||||
|
|
||||||
|
if [ ! -f /etc/os-release ]; then
|
||||||
|
echo "Ошибка: не найден /etc/os-release"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
. /etc/os-release
|
||||||
|
CODENAME="${VERSION_CODENAME:-}"
|
||||||
|
if [ -z "$CODENAME" ]; then
|
||||||
|
echo "Ошибка: не удалось определить VERSION_CODENAME (Ubuntu/Debian?)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d /usr/share/postgresql-common/pgdg
|
||||||
|
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \
|
||||||
|
-o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc
|
||||||
|
|
||||||
|
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt ${CODENAME}-pgdg main" \
|
||||||
|
> /etc/apt/sources.list.d/pgdg.list
|
||||||
|
|
||||||
|
apt update
|
||||||
|
|
||||||
|
if apt install -y postgresql-17 postgresql-client-17; then
|
||||||
|
echo "Установлен PostgreSQL 17 (PGDG)"
|
||||||
|
else
|
||||||
|
echo "Пакет postgresql-17 недоступен — устанавливаем postgresql из репозитория Ubuntu..."
|
||||||
|
apt install -y postgresql postgresql-contrib
|
||||||
|
fi
|
||||||
|
|
||||||
|
systemctl enable postgresql
|
||||||
|
systemctl start postgresql
|
||||||
|
|
||||||
|
for i in $(seq 1 30); do
|
||||||
|
if pg_isready -h 127.0.0.1 -p 5432 -q 2>/dev/null; then
|
||||||
|
echo "pg_isready: OK"
|
||||||
|
psql --version | head -1
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "PostgreSQL установлен, но не отвечает на 127.0.0.1:5432"
|
||||||
|
echo " journalctl -u postgresql -n 30 --no-pager"
|
||||||
|
exit 1
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Быстрое развёртывание / обновление на Ubuntu (без Docker)
|
||||||
|
# sudo bash scripts/quick-deploy-ubuntu.sh
|
||||||
|
#
|
||||||
|
# Каталог по умолчанию: /opt/shop/shop10
|
||||||
|
# Переопределение: SHOP_INSTALL_DIR=/opt/shop/shop10 SHOP_GIT_URL=https://...
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
INSTALL_DIR="${SHOP_INSTALL_DIR:-/opt/shop/shop10}"
|
||||||
|
GIT_URL="${SHOP_GIT_URL:-https://git.evilfox.cc/test/shop10.git}"
|
||||||
|
|
||||||
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
|
echo "Запустите от root: sudo bash scripts/quick-deploy-ubuntu.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=== Shop: быстрое развёртывание ==="
|
||||||
|
echo "Каталог: $INSTALL_DIR"
|
||||||
|
|
||||||
|
if ! command -v node >/dev/null; then
|
||||||
|
echo "Установка Node.js 20..."
|
||||||
|
apt update
|
||||||
|
apt install -y git curl ca-certificates
|
||||||
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||||
|
apt install -y nodejs
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$INSTALL_DIR/package.json" ]; then
|
||||||
|
echo "Клонирование репозитория..."
|
||||||
|
mkdir -p "$(dirname "$INSTALL_DIR")"
|
||||||
|
git clone "$GIT_URL" "$INSTALL_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export SHOP_ROOT="$INSTALL_DIR"
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
git config --global --add safe.directory "$INSTALL_DIR" 2>/dev/null || true
|
||||||
|
git pull
|
||||||
|
|
||||||
|
bash scripts/install-postgresql-ubuntu.sh
|
||||||
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
|
|
||||||
|
if [ ! -f .env ]; then
|
||||||
|
cp .env.example .env
|
||||||
|
if command -v openssl >/dev/null; then
|
||||||
|
SECRET=$(openssl rand -hex 32)
|
||||||
|
sed -i "s/change-me-to-a-long-random-string/${SECRET}/" .env
|
||||||
|
fi
|
||||||
|
if ! grep -q '^DATABASE_URL=' .env; then
|
||||||
|
echo 'DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop' >> .env
|
||||||
|
fi
|
||||||
|
echo "Создан .env — проверьте SITE_URL и SMTP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm install --omit=dev
|
||||||
|
|
||||||
|
if [ -f deploy/shop.service ]; then
|
||||||
|
cp -f deploy/shop.service /etc/systemd/system/shop.service
|
||||||
|
# Подставить фактический путь в unit
|
||||||
|
sed -i "s|WorkingDirectory=.*|WorkingDirectory=${INSTALL_DIR}|" /etc/systemd/system/shop.service
|
||||||
|
sed -i "s|EnvironmentFile=.*|EnvironmentFile=${INSTALL_DIR}/.env|" /etc/systemd/system/shop.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable shop 2>/dev/null || true
|
||||||
|
systemctl restart shop
|
||||||
|
sleep 2
|
||||||
|
curl -sf http://127.0.0.1:3000/health && echo && echo "OK — shop запущен (systemd)"
|
||||||
|
systemctl reload caddy 2>/dev/null || true
|
||||||
|
else
|
||||||
|
echo "deploy/shop.service не найден — запустите: npm start"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Обновления в будущем:"
|
||||||
|
echo " bash ${INSTALL_DIR}/scripts/server-update.sh"
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# PostgreSQL 17 на Ubuntu — установка службы, пользователь и БД shop
|
# PostgreSQL — пользователь и БД shop (после install-postgresql-ubuntu.sh)
|
||||||
# Запуск: sudo bash scripts/setup-postgres-ubuntu.sh
|
# sudo bash scripts/setup-postgres-ubuntu.sh
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
SHOP_ROOT="${SHOP_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
|
||||||
|
|
||||||
DB_USER="${DB_USER:-shop}"
|
DB_USER="${DB_USER:-shop}"
|
||||||
DB_PASS="${DB_PASS:-shop}"
|
DB_PASS="${DB_PASS:-shop}"
|
||||||
DB_NAME="${DB_NAME:-shop}"
|
DB_NAME="${DB_NAME:-shop}"
|
||||||
|
|
||||||
if ! command -v psql >/dev/null; then
|
if ! command -v psql >/dev/null; then
|
||||||
echo "PostgreSQL не установлен."
|
echo "PostgreSQL не установлен. Запустите:"
|
||||||
echo " apt install -y postgresql-17 postgresql-client-17"
|
echo " sudo bash $SCRIPT_DIR/install-postgresql-ubuntu.sh"
|
||||||
echo " systemctl enable --now postgresql"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -52,7 +54,7 @@ EOF
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "PostgreSQL готов."
|
echo "PostgreSQL готов."
|
||||||
echo "Добавьте в /opt/shop/.env:"
|
echo "Добавьте в ${SHOP_ROOT}/.env:"
|
||||||
echo "DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}"
|
echo "DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Проверка: psql \"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}\" -c 'SELECT 1'"
|
echo "Проверка: psql \"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}\" -c 'SELECT 1'"
|
||||||
|
|||||||
+10
-4
@@ -1,4 +1,4 @@
|
|||||||
# Shop — документация v0.10.0
|
# Shop — документация v0.20.0
|
||||||
|
|
||||||
Интернет-магазин на **Node.js** и **PostgreSQL 17**.
|
Интернет-магазин на **Node.js** и **PostgreSQL 17**.
|
||||||
|
|
||||||
@@ -30,9 +30,15 @@ cp .env.docker.example .env && docker compose up -d --build
|
|||||||
### Без Docker
|
### Без Docker
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.evilfox.cc/test/shop10.git && cd shop10
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
|
||||||
git checkout v0.10.0
|
cd /opt/shop/shop10
|
||||||
# см. Install-Native
|
sudo bash scripts/quick-deploy-ubuntu.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Обновление на работающем сервере:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash /opt/shop/shop10/scripts/server-update.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Проверка работы
|
## Проверка работы
|
||||||
|
|||||||
+12
-24
@@ -26,38 +26,26 @@ node -v # v20.x
|
|||||||
|
|
||||||
### PostgreSQL 17
|
### PostgreSQL 17
|
||||||
|
|
||||||
```bash
|
Не используйте `apt install postgresql-17` без PGDG — пакет не найдётся. Скрипт подключает PGDG автоматически:
|
||||||
apt install -y postgresql-17 postgresql-client-17
|
|
||||||
systemctl enable postgresql
|
|
||||||
systemctl start postgresql
|
|
||||||
pg_isready -h 127.0.0.1 -p 5432
|
|
||||||
```
|
|
||||||
|
|
||||||
Если пакет `postgresql-17` не найден — [репозиторий PGDG](https://www.postgresql.org/download/linux/ubuntu/):
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install -y curl ca-certificates
|
sudo bash /opt/shop/shop10/scripts/install-postgresql-ubuntu.sh
|
||||||
install -d /usr/share/postgresql-common/pgdg
|
|
||||||
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail \
|
|
||||||
https://www.postgresql.org/media/keys/ACCC4CF8.asc
|
|
||||||
sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(. /etc/os-release && echo ${VERSION_CODENAME}-pgdg) main" > /etc/apt/sources.list.d/pgdg.list'
|
|
||||||
apt update
|
|
||||||
apt install -y postgresql-17 postgresql-client-17
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 3. Клонирование проекта
|
## 3. Клонирование проекта
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt
|
git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10
|
||||||
git clone https://git.evilfox.cc/test/shop10.git shop
|
cd /opt/shop/shop10/shop10
|
||||||
cd shop
|
git checkout v0.20.0
|
||||||
git checkout v0.10.0
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Или быстрая установка всего стека: `sudo bash scripts/quick-deploy-ubuntu.sh`
|
||||||
|
|
||||||
## 4. База данных PostgreSQL
|
## 4. База данных PostgreSQL
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop
|
cd /opt/shop/shop10/shop10
|
||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -101,7 +89,7 @@ openssl rand -hex 32
|
|||||||
## 6. Установка зависимостей Node.js
|
## 6. Установка зависимостей Node.js
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop
|
cd /opt/shop/shop10
|
||||||
npm install --omit=dev
|
npm install --omit=dev
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -110,7 +98,7 @@ npm install --omit=dev
|
|||||||
## 7. Служба systemd
|
## 7. Служба systemd
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp /opt/shop/deploy/shop.service /etc/systemd/system/shop.service
|
cp /opt/shop/shop10/deploy/shop.service /etc/systemd/system/shop.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable shop
|
systemctl enable shop
|
||||||
systemctl start shop
|
systemctl start shop
|
||||||
@@ -152,7 +140,7 @@ apt update && apt install -y caddy
|
|||||||
Конфигурация:
|
Конфигурация:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp /opt/shop/caddy/Caddyfile.example /etc/caddy/Caddyfile
|
cp /opt/shop/shop10/caddy/Caddyfile.example /etc/caddy/Caddyfile
|
||||||
nano /etc/caddy/Caddyfile
|
nano /etc/caddy/Caddyfile
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -195,7 +183,7 @@ systemctl daemon-reload
|
|||||||
## 10. Обновление
|
## 10. Обновление
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop/shop10
|
cd /opt/shop/shop10/shop10
|
||||||
git config --global --add safe.directory "$(pwd)"
|
git config --global --add safe.directory "$(pwd)"
|
||||||
bash scripts/server-update.sh
|
bash scripts/server-update.sh
|
||||||
```
|
```
|
||||||
|
|||||||
+25
-3
@@ -8,6 +8,28 @@ bash /opt/shop/shop10/scripts/diagnose-502.sh
|
|||||||
|
|
||||||
(замените путь на каталог вашего клона — где есть `package.json`)
|
(замените путь на каталог вашего клона — где есть `package.json`)
|
||||||
|
|
||||||
|
## Ошибки при «быстром развёртывании»
|
||||||
|
|
||||||
|
| Ошибка | Причина | Решение |
|
||||||
|
|--------|---------|---------|
|
||||||
|
| `Unable to locate package postgresql-17` | В Ubuntu нет PG 17 без PGDG | `sudo bash /opt/shop/shop10/scripts/install-postgresql-ubuntu.sh` |
|
||||||
|
| `URL_РЕПОЗИТОРИЯ: No such file` | Скопирован placeholder из README | Используйте реальный URL: `git clone https://git.evilfox.cc/test/shop10.git /opt/shop/shop10` |
|
||||||
|
| `package.json` в `/opt/shop` | Неверный каталог | Репозиторий в `/opt/shop/shop10` |
|
||||||
|
| Изменения не применились | `git pull` не в том каталоге | `bash /opt/shop/shop10/scripts/server-update.sh` |
|
||||||
|
|
||||||
|
Полное развёртывание / обновление:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/shop/shop10 && git pull
|
||||||
|
sudo bash scripts/quick-deploy-ubuntu.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Только обновление кода (сайт уже работает):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash /opt/shop/shop10/scripts/server-update.sh
|
||||||
|
```
|
||||||
|
|
||||||
## scripts/server-update.sh: No such file or directory
|
## scripts/server-update.sh: No such file or directory
|
||||||
|
|
||||||
Вы не в каталоге репозитория или клон в подпапке (например `/opt/shop/shop10`):
|
Вы не в каталоге репозитория или клон в подпапке (например `/opt/shop/shop10`):
|
||||||
@@ -40,7 +62,7 @@ journalctl -u shop -n 30 --no-pager
|
|||||||
PostgreSQL не запущен или не установлен.
|
PostgreSQL не запущен или не установлен.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash /opt/shop/scripts/fix-db-connection.sh
|
bash /opt/shop/shop10/scripts/fix-db-connection.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Или вручную:
|
Или вручную:
|
||||||
@@ -51,7 +73,7 @@ pg_isready -h 127.0.0.1 -p 5432
|
|||||||
bash scripts/setup-postgres-ubuntu.sh
|
bash scripts/setup-postgres-ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Проверьте `DATABASE_URL` в `/opt/shop/.env`.
|
Проверьте `DATABASE_URL` в `/opt/shop/shop10/.env`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -60,7 +82,7 @@ bash scripts/setup-postgres-ubuntu.sh
|
|||||||
В логе только «База уже содержит товары» без строки `Магазин: http://...`:
|
В логе только «База уже содержит товары» без строки `Магазин: http://...`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt/shop && git pull # нужен исправленный seed.js (v0.10.0+)
|
bash /opt/shop/shop10/scripts/server-update.sh
|
||||||
systemctl restart shop
|
systemctl restart shop
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user