اگر یک توسعه دهنده Nodejs هستید حتما برایتان راهاندازی سایت روی یک سرور مجازی و روال استاندارد آن سوال بوده است.
در این مقاله قصد داریم یک راه مناسب برای این کار به شما آموزش دهیم.
راهاندازی یک برنامه Nodejs در سرور مجازی
مراحل راهاندازی به شرح زیر است:
۱. ساخت کاربر مجزا برای اپلیکیشن در سرور
۱. ساخت کاربر مجزا برای اپلیکیشن در سرور
برای این کار بعد از ورود به سرور و سوییچ به کاربر root دستور زیر را اجرا کنید:
1 |
adduser nodejs |
به جای نام nodejs میتوانید اسم اپ خود را قرار دهید.
این دستور یک کاربر و یک گروه با نام nodejs ایجاد میکند. همچنین یک پوشه درون پوشه home سیستم ایجاد میکند که به عنوان پوشه home این کاربر شناخته شده و دسترسی این پوشه نیز به کاربر و گروه آن داده میشود.
دلیل این کار این است که دسترسی اپلیکیشن به سایر قسمتهای سیستم محدود باشد و در صورتی که اپلیکیشن با مشکل امنیتی مواجه شد تاثیر کمتری روی کارکرد سرور ایجاد کند.
۲. نصب PM2
برای اینکار دستور زیر را اجرا نمایید: (پوشهای که در آن این دستور را اجرا مینمایید اهمیتی ندارد)
1 |
npm i -g pm2 |
۳. بارگذاری فایلها
برای بارگذاری فایلها دو راه معمول وجود دارد که به این ترتیب است:
۱.۳ استفاده از نرمافزار گیت(Git):
برای آشنایی بیشتر با این نرمافزار میتوانید به مقاله «Git چیست؟» و «دستورات کاربردی Git در لینوکس» مراجعه کنید.
راه پیشنهادی برای قرار دادن کدهای سایت روی سرور استفاده از نرمافزار گیت است؛ زیرا هر زمان که بخواهید میتوانید بین نسخههای مختلف کد جابهجا شوید و تغییرات اپ را در هر مرحله مشاهده نمایید. همچنین در صورت بروز مشکل با تغییرات جدید، سریعاً تغییرات قبلی را بازگردانی نمایید.
برای استفاده از گیت به منظور قرار دادن اپ روی سرور مراحل زیر را انجام دهید:
۱. ابتدا باید به کاربر اپلیکیشن خود که در اینجا کاربر nodejs است سوییچ نمایید:
1 |
su - nodejs |
و سپس رمز کاربر ساخته شده را وارد نمایید.
۲. پروژه را روی سرور clone نمایید.
برای این کار میتوانید از دستور زیر استفاده کنید:
1 |
git clone https://example.com/your/repo.git nodejsappdir |
که بعد از واژه clone آدرس repository شما قرار میگیرد و در ادامه نام پوشهای که کدها درون آن قرار خواهند گرفت نوشته میشود.
۲.۳ استفاده از sftp:
این راه برای بارگذاری مستقیم کدها روی سرور استفاده میشود که به این منظور میتوانید مراحل زیر را انجام دهید:
۱. ابتدا باید به کاربر اپلیکیشن خود که در اینجا کاربر nodejs است سوییچ نمایید:
1 |
su - nodejs |
۲. پوشه مجزا برای برنامه بسازید:
1 |
mkdir nodejsappdir |
۳. اتصال به سرور از طریق نرمافزارهایی که از sftp پشتیبانی میکنند نظیر FileZilla و بارگذاری کدها از طریق آن با دسترسیهای مشابه دسترسی SSH (میتوانید از یوزر ساخته شده نیز استفاده نمایید تا به مشکل عدم دسترسی برخورد نکنید)
نکته: لزومی به بارگذاری پوشه node_modules روی سرور وجود ندارد و میتوانید بعد از بارگذاری کدها درصورتی که تمامی پکیجهای استفاده شده را در فایل package.json ثبت کرده باشید با کامند زیر پکیجهای مربوط را روی سرور قرار دهید:
1 |
npm i |
۴. ساخت فایل PM2 Ecosystem
این فایل ساختار اپلیکیشنهای ما در سرور را به PM2 معرفی میکند.
البته بدون این فایل نیز میتوان اپلیکشن را اجرا کرد ولی برای جلوگیری از تکرار کامندها و کانفیگ مشابه در هر اجرا از این فایل استفاده میکنیم.
توضیحات کامل این فایل را میتوانید از داکیومنت pm2 مشاهده کنید.
برای این کار میتوانید در پوشه home خود فایل ecosystem.config.js را ایجاد کنید و محتوای زیر را درون آن قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 |
module.exports = { apps : [ { name: "app", script: "./app.js", cwd: "/home/nodejs", env: { NODE_ENV: "production" } }] } |
مقادیر مشخص شده را به صورت زیر تغییر دهید:
- name: نام اپلیکیشن
- script: آدرس فایل اصلی پروژه (برای مثال در الگوی پیشفرض express.js فایل ./bin/www و در AdonisJs فایل server.js است)
- cwd: آدرس پوشهای است که کدها را درون آن آپلود کردهایم.
- env: متغییرهای محیطی لازم برای اجرای اپلیکیشن را میتوانید در این بخش تنظیم نمایید.
۵. اجرای اپ با PM2
برای اجرای اپ با فایل ecosystem ایجاد شده میتوانید دستور زیر را اجرا نمایید:
1 |
pm2 start ecosystem.config.js |
برای تست اجرا شدن اپ میتوانید دستور زیر را اجرا کنید:
1 |
pm2 logs app |
و به جای app نام اپلیکیشنی که داخل فایل وارد کردهاید را قرار دهید.
۶. نصب Nginx
برای نصب این برنامه روی سیستمعاملهای Debian / Ubuntu از دستورات زیر استفاده نمایید:
1 |
apt update |
1 |
apt install nginx |
و برای نصب روی سیستم عامل CentOS از این دستورات استفاده کنید:
1 |
yum install epel-release |
1 |
yum install nginx |
۷. تنظیم Nginx با PM2
برای این کار در پوشه /etc/nginx/conf.d فایلی با نام مربوط با دامنه خود(مانند: example.com.conf) ایجاد کنید و محتوای زیر را داخل آن قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 |
server { server_name app.domain.com; location / { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://127.0.0.1:3000; } } |
به جای 127.0.0.1:3000 میتوانید آدرس و پورتی که اپلیکیشن شما روی آن تنظیم شده است را جایگزین کنید.
لازم به ذکر است این کانفیگ برای استفاده از وبسوکت نیز بهینه است.
به همین سادگی!!
اگر برای سایت خود از هاست Nodejs استفاده مینمایید، برای راهاندازی و اجرا روی هاست cPanel به این مقاله و برای هاست فاقد CloudLinux به این مقاله مراجعه کنید.