canina/docs/04-setup-and-deployment.md
parsa aghaei 6eb45cd467
All checks were successful
Deploy Canina / deploy (push) Successful in 1m55s
refactor: unify domain and contact emails to canina.ir across all apps and seeds
2026-08-19 11:52:36 +03:30

3.9 KiB
Raw Permalink Blame History

راه‌اندازی و انتشار سیستم (Setup & Deployment)

این بخش نحوه اجرای سامانه در محیط توسعه (Local) و فرآیند پابلیش کردن آن روی سرورهای Production را توضیح می‌دهد.

۱. محیط توسعه (Development Mode)

برای توسعه بر روی کامپیوتر شخصی، مراحل زیر را طی کنید:

پیش‌نیازها

  • Node.js (نسخه ۲۰ به بالا)
  • PostgreSQL نصب شده و در حال اجرا بر روی سیستم شما.

اجرای بک‌اند

  1. وارد پوشه بک‌اند شوید: cd backend
  2. پکیج‌ها را نصب کنید: npm install
  3. فایل .env را ایجاد کنید و متغیر دیتابیس را به شکل زیر تنظیم کنید: DATABASE_URL="postgresql://user:password@localhost:5432/caninodb?schema=public"
  4. جداول را ایجاد کنید: npx prisma db push و سپس npx prisma generate
  5. پروژه را در حالت توسعه اجرا کنید: npm run start:dev
  6. بک‌اند شما اکنون روی پورت پیش‌فرض (معمولاً 3001 یا 3005) در حال اجراست.

اجرای فرانت‌اند

  1. یک تب جدید در ترمینال باز کنید و وارد پوشه اپلیکیشن شوید: cd frontend/application
  2. نصب پیش‌نیازها: npm install
  3. ایجاد متغیرهای محیطی در فایل .env.local: NEXT_PUBLIC_API_URL=http://localhost:3001/api
  4. اجرای پروژه در حالت دولوپ: npm run dev
  5. وب‌سایت در آدرس http://localhost:3000 در دسترس است.

۲. محیط پروداکشن و انتشار (Production Deployment)

نحوه استقرار سامانه بر روی سرورهای اصلی به شرح زیر است. معمولاً این فرآیند بر روی سیستم‌عامل لینوکس (Ubuntu) انجام می‌گیرد.

بیلد کردن پروژه (Building)

برای بک‌اند:

cd backend
npm run build

برای فرانت‌اند (تولید خروجی بسیار بهینه برای سرعت بالا و سئو):

cd frontend/application
npm run build

اجرای پروژه در سرور با PM2

از ابزار PM2 برای اجرای مداوم (Daemon) و لودبالانسینگ پروسه‌ها استفاده می‌کنیم. پس از نصب سراسری npm install -g pm2، دستورات زیر را در سرور اجرا کنید:

برای راه‌اندازی بک‌اند:

cd backend
pm2 start dist/main.js --name "canino-api"

برای راه‌اندازی فرانت‌اند Next.js:

cd frontend/application
pm2 start npm --name "canino-web" -- start

ذخیره پروسه‌ها تا پس از ری‌استارت سرور قطع نشوند:

pm2 save
pm2 startup

۳. تنظیمات Nginx (Reverse Proxy)

سرور Nginx مسئول دریافت ترافیک عمومی و هدایت آن‌ها به پورت‌های صحیح لوکال است.

  • ترافیک‌های دامنه canina.ir به پورت فرانت‌اند (3000) هدایت می‌شوند.
  • ترافیک‌هایی که دارای آدرس /api/ در مسیر خود هستند مستقیماً به پورت بک‌اند (3001) هدایت می‌شوند.

نمونه فایل کانفیگ Nginx

server {
    listen 80;
    server_name canina.ir www.canina.ir;

    # ارسال ترافیک /api به Backend
    location /api/ {
        proxy_pass http://localhost:3001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # ارسال مابقی ترافیک به Frontend
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}