3.9 KiB
3.9 KiB
راهاندازی و انتشار سیستم (Setup & Deployment)
این بخش نحوه اجرای سامانه در محیط توسعه (Local) و فرآیند پابلیش کردن آن روی سرورهای Production را توضیح میدهد.
۱. محیط توسعه (Development Mode)
برای توسعه بر روی کامپیوتر شخصی، مراحل زیر را طی کنید:
پیشنیازها
- Node.js (نسخه ۲۰ به بالا)
- PostgreSQL نصب شده و در حال اجرا بر روی سیستم شما.
اجرای بکاند
- وارد پوشه بکاند شوید:
cd backend - پکیجها را نصب کنید:
npm install - فایل
.envرا ایجاد کنید و متغیر دیتابیس را به شکل زیر تنظیم کنید:DATABASE_URL="postgresql://user:password@localhost:5432/caninodb?schema=public" - جداول را ایجاد کنید:
npx prisma db pushو سپسnpx prisma generate - پروژه را در حالت توسعه اجرا کنید:
npm run start:dev - بکاند شما اکنون روی پورت پیشفرض (معمولاً
3001یا3005) در حال اجراست.
اجرای فرانتاند
- یک تب جدید در ترمینال باز کنید و وارد پوشه اپلیکیشن شوید:
cd frontend/application - نصب پیشنیازها:
npm install - ایجاد متغیرهای محیطی در فایل
.env.local:NEXT_PUBLIC_API_URL=http://localhost:3001/api - اجرای پروژه در حالت دولوپ:
npm run dev - وبسایت در آدرس
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;
}
}