Files
digitalcatalog/deploy/DEPLOY.md
T

5.1 KiB
Raw Blame History

استقرار کاتالوگ — ktg.montzar.ir

هاست مشترک مونتایم: 185.50.38.53 (SSH پورت 3031، کاربر montime)
دامنه: https://ktg.montzar.ir
پورت داخلی: 3020 (۳۰۰۰ مونتایم، ۳۰۰۱ فوری‌سند، ۳۰۱۰ سوپرادمین)

دیتابیس Postgres بقیه پروژه‌ها را لمس نکنید. این اپ SQLite خودش را در /var/www/ktg/data دارد.


کارهایی که روی لپ‌تاپ شماست

۱) بستهٔ ارسال را بسازید

در PowerShell:

cd E:\projeha\DigitalCatalog
if (Test-Path catalog-deploy.tar) { Remove-Item catalog-deploy.tar }
tar --exclude=node_modules --exclude=dist --exclude=storage --exclude=data --exclude=.env --exclude=catalog-deploy.tar -cvf catalog-deploy.tar .

۲) آپلود روی سرور

رمز SSH همانی است که برای سوپرادمین/مونتایم می‌زنید:

scp -P 3031 catalog-deploy.tar montime@185.50.38.53:/tmp/catalog-deploy.tar

بعد از آپلود، فایل catalog-deploy.tar روی ویندوز را می‌توانید پاک کنید.


کارهایی که روی سرور است

SSH:

ssh -p 3031 montime@185.50.38.53

۳) پوشه و باز کردن فایل‌ها

sudo mkdir -p /var/www/ktg
sudo chown montime:montime /var/www/ktg
cd /var/www/ktg
tar -xvf /tmp/catalog-deploy.tar
rm /tmp/catalog-deploy.tar

اگر پوشه از قبل چیزی داشت و آپدیت است، storage و data را پاک نکنید.

۴) پورت آزاد باشد

pm2 list
ss -tlnp | grep -E '3000|3001|3010|3020' || netstat -tlnp | grep -E '3000|3001|3010|3020'

۳۰۲۰ باید خالی باشد. اگر اشغال بود بگویید تا پورت عوض شود؛ خودتان پورت بقیه را عوض نکنید.

۵) فایل .env سرور

cd /var/www/ktg
cp deploy/.env.production.example .env
nano .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 ۲۰ یا جدیدتر.

cd /var/www/ktg
npm ci
npm run build
mkdir -p storage data

۷) PM2 — فقط این پروسهٔ جدید

پروسه‌های montime / superadmin-api / فوری‌سند را stop نکنید.

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 — فقط سایت جدید

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 دارد.

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) روی این دامنه کار نمی‌کنند؛ باید روی سرور دوباره ساخته شوند.


آپدیت بعدی کد

روی ویندوز دوباره مرحلهٔ ۱ و ۲. روی سرور:

cd /var/www/ktg
# اگر tar روی فایل‌های قبلی unpacked می‌شود:
tar -xvf /tmp/catalog-deploy.tar
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 وصل نمی‌شود.