Files
digitalcatalog/deploy/DEPLOY.md
T

145 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# استقرار کاتالوگ — `ktg.montzar.ir`
هاست مشترک مونتایم: `185.50.38.53` (SSH پورت `3031`، کاربر `montime`)
دامنه: `https://ktg.montzar.ir`
پورت داخلی: `3020` (۳۰۰۰ مونتایم، ۳۰۰۱ فوری‌سند، ۳۰۱۰ سوپرادمین)
دیتابیس Postgres بقیه پروژه‌ها را لمس نکنید. این اپ SQLite خودش را در `/var/www/ktg/data` دارد.
---
کد از Gitea کلون می‌شود: `http://get.feep.ir/Mahdi/digitalcatalog.git`
---
## کارهایی که روی سرور است
SSH:
```bash
ssh -p 3031 montime@185.50.38.53
```
### ۱) کلون
```bash
sudo mkdir -p /var/www/ktg
sudo chown montime:montime /var/www/ktg
git clone http://get.feep.ir/Mahdi/digitalcatalog.git /var/www/ktg
```
اگر Gitea خصوصی است، همان یوزر/توکن را بزنید.
### ۲) پورت آزاد باشد
```bash
pm2 list
ss -tlnp | grep -E '3000|3001|3010|3020' || netstat -tlnp | grep -E '3000|3001|3010|3020'
```
۳۰۲۰ باید خالی باشد. اگر اشغال بود بگویید تا پورت عوض شود؛ خودتان پورت بقیه را عوض نکنید.
### ۳) فایل `.env` سرور
```bash
cd /var/www/ktg
cp deploy/.env.production.example .env
nano .env
```
باید دقیقاً این باشد (مگر پورت عوض شده باشد):
```env
NODE_ENV=production
PORT=3020
API_PORT=3020
PUBLIC_BASE_URL=https://ktg.montzar.ir
STORAGE_DIR=/var/www/ktg/storage
DATABASE_PATH=/var/www/ktg/data/catalogs.sqlite
```
دیتابیس Postgres و `DATABASE_URL` سوپرادمین را اینجا نگذارید.
### ۴) نصب، بیلد، پوشه‌ها
Node ۲۰ یا جدیدتر.
```bash
cd /var/www/ktg
npm ci
npm run build
mkdir -p storage data
```
### ۵) PM2 — فقط این پروسهٔ جدید
پروسه‌های `montime` / `superadmin-api` / فوری‌سند را stop نکنید.
```bash
pm2 start /var/www/ktg/deploy/ecosystem.config.cjs
pm2 save
pm2 list
curl -sI http://127.0.0.1:3020
```
باید `HTTP/1.1 200` بیاید. اگر خطا بود: `pm2 logs ktg-catalog --lines 80`
### ۶) Nginx — فقط سایت جدید
```bash
sudo cp /var/www/ktg/deploy/nginx-ktg.montzar.ir.conf /etc/nginx/sites-available/ktg.montzar.ir
sudo ln -sf /etc/nginx/sites-available/ktg.montzar.ir /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
```
اگر `nginx -t` خطا داد، فایل‌های `adm.montzar.ir` را ویرایش نکنید؛ بگویید خروجی را بفرستید.
### ۷) گواهی SSL
DNS این زیردامنه از قبل مثل `adm.montzar.ir` روی همان IP است. اگر مرورگر هنوز به سرور نرسید، در پنل دامنه تأیید کنید `ktg.montzar.ir` رکورد `A` مثل `adm.montzar.ir` دارد.
```bash
sudo certbot --nginx -d ktg.montzar.ir
```
Certbot خودش HTTPS را به همین vhost اضافه می‌کند، نه به سایت‌های دیگر.
### ۸) تست نهایی
1. `https://ktg.montzar.ir` صفحهٔ ساخت فارسی
2. یک PDF/تصویر کوچک بسازید
3. QR و لینک باید با `https://ktg.montzar.ir/c/...` باشد نه localhost
4. لینک مشاهده در تب دیگر باز شود
کاتالوگ‌های لوکال (`127.0.0.1:3000`) روی این دامنه کار نمی‌کنند؛ باید روی سرور دوباره ساخته شوند.
---
## آپدیت بعدی کد
روی ویندوز `git push`. روی سرور:
```bash
cd /var/www/ktg
git pull
npm ci
npm run build
pm2 restart ktg-catalog
```
پوشه‌های `storage` و `data` و فایل `.env` را پاک نکنید.
---
## تداخل نداشتن (یادآوری)
| این پروژه | بقیه — دست نزنید |
|---|---|
| دامنه `ktg.montzar.ir` | `adm.montzar.ir` و دامنهٔ مونتایم |
| پورت ۳۰۲۰ | ۳۰۰۰ / ۳۰۰۱ / ۳۰۱۰ |
| PM2 نام `ktg-catalog` | پروسه‌های موجود |
| `/var/www/ktg` | `/var/www/superadmin` و پوشهٔ مونتایم |
| SQLite داخل `data/` | Postgres |
لاگین و پروفایل اگر بعداً آمد، باز هم داخل همین دامنه و همین پوشه است؛ به دیتابیس Nest وصل نمی‌شود.