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

99 lines
3.9 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.

# راه‌اندازی و انتشار سیستم (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)
برای بک‌اند:
```bash
cd backend
npm run build
```
برای فرانت‌اند (تولید خروجی بسیار بهینه برای سرعت بالا و سئو):
```bash
cd frontend/application
npm run build
```
### اجرای پروژه در سرور با PM2
از ابزار [PM2](https://pm2.keymetrics.io/) برای اجرای مداوم (Daemon) و لودبالانسینگ پروسه‌ها استفاده می‌کنیم.
پس از نصب سراسری `npm install -g pm2`، دستورات زیر را در سرور اجرا کنید:
#### برای راه‌اندازی بک‌اند:
```bash
cd backend
pm2 start dist/main.js --name "canino-api"
```
#### برای راه‌اندازی فرانت‌اند Next.js:
```bash
cd frontend/application
pm2 start npm --name "canino-web" -- start
```
### ذخیره پروسه‌ها تا پس از ری‌استارت سرور قطع نشوند:
```bash
pm2 save
pm2 startup
```
---
## ۳. تنظیمات Nginx (Reverse Proxy)
سرور Nginx مسئول دریافت ترافیک عمومی و هدایت آن‌ها به پورت‌های صحیح لوکال است.
- ترافیک‌های دامنه `canina.ir` به پورت فرانت‌اند (`3000`) هدایت می‌شوند.
- ترافیک‌هایی که دارای آدرس `/api/` در مسیر خود هستند مستقیماً به پورت بک‌اند (`3001`) هدایت می‌شوند.
### نمونه فایل کانفیگ Nginx
```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;
}
}
```