99 lines
3.9 KiB
Markdown
99 lines
3.9 KiB
Markdown
# راهاندازی و انتشار سیستم (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 مسئول دریافت ترافیک عمومی و هدایت آنها به پورتهای صحیح لوکال است.
|
||
|
||
- ترافیکهای دامنه `canino-iran.com` به پورت فرانتاند (`3000`) هدایت میشوند.
|
||
- ترافیکهایی که دارای آدرس `/api/` در مسیر خود هستند مستقیماً به پورت بکاند (`3001`) هدایت میشوند.
|
||
|
||
### نمونه فایل کانفیگ Nginx
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name canino-iran.com www.canino-iran.com;
|
||
|
||
# ارسال ترافیک /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;
|
||
}
|
||
}
|
||
```
|