4 مهر 1398
اگر یک توسعه دهنده Nodejs هستید حتما برایتان راهاندازی سایت روی یک سرور مجازی و روال استاندارد آن سوال بوده است.
در این مقاله قصد داریم یک راه مناسب برای این کار به شما آموزش دهیم.
مراحل راهاندازی به شرح زیر است:
۱. ساخت کاربر مجزا برای اپلیکیشن در سرور
برای این کار بعد از ورود به سرور و سوییچ به کاربر root دستور زیر را اجرا کنید:
adduser nodejs
به جای نام nodejs میتوانید اسم اپ خود را قرار دهید.
این دستور یک کاربر و یک گروه با نام nodejs ایجاد میکند. همچنین یک پوشه درون پوشه home سیستم ایجاد میکند که به عنوان پوشه home این کاربر شناخته شده و دسترسی این پوشه نیز به کاربر و گروه آن داده میشود.
دلیل این کار این است که دسترسی اپلیکیشن به سایر قسمتهای سیستم محدود باشد و در صورتی که اپلیکیشن با مشکل امنیتی مواجه شد تاثیر کمتری روی کارکرد سرور ایجاد کند.
برای اینکار دستور زیر را اجرا نمایید: (پوشهای که در آن این دستور را اجرا مینمایید اهمیتی ندارد)
npm i -g pm2
برای بارگذاری فایلها دو راه معمول وجود دارد که به این ترتیب است:
برای آشنایی بیشتر با این نرمافزار میتوانید به مقاله «Git چیست؟» و «دستورات کاربردی Git در لینوکس» مراجعه کنید.
راه پیشنهادی برای قرار دادن کدهای سایت روی سرور استفاده از نرمافزار گیت است؛ زیرا هر زمان که بخواهید میتوانید بین نسخههای مختلف کد جابهجا شوید و تغییرات اپ را در هر مرحله مشاهده نمایید. همچنین در صورت بروز مشکل با تغییرات جدید، سریعاً تغییرات قبلی را بازگردانی نمایید.
برای استفاده از گیت به منظور قرار دادن اپ روی سرور مراحل زیر را انجام دهید:
۱. ابتدا باید به کاربر اپلیکیشن خود که در اینجا کاربر nodejs است سوییچ نمایید:
su - nodejs
و سپس رمز کاربر ساخته شده را وارد نمایید.
۲. پروژه را روی سرور clone نمایید.
برای این کار میتوانید از دستور زیر استفاده کنید:
git clone https://example.com/your/repo.git nodejsappdir
که بعد از واژه clone آدرس repository شما قرار میگیرد و در ادامه نام پوشهای که کدها درون آن قرار خواهند گرفت نوشته میشود.
این راه برای بارگذاری مستقیم کدها روی سرور استفاده میشود که به این منظور میتوانید مراحل زیر را انجام دهید:
۱. ابتدا باید به کاربر اپلیکیشن خود که در اینجا کاربر nodejs است سوییچ نمایید:
su - nodejs
۲. پوشه مجزا برای برنامه بسازید:
mkdir nodejsappdir
۳. اتصال به سرور از طریق نرمافزارهایی که از sftp پشتیبانی میکنند نظیر FileZilla و بارگذاری کدها از طریق آن با دسترسیهای مشابه دسترسی SSH (میتوانید از یوزر ساخته شده نیز استفاده نمایید تا به مشکل عدم دسترسی برخورد نکنید)
نکته: لزومی به بارگذاری پوشه node_modules روی سرور وجود ندارد و میتوانید بعد از بارگذاری کدها درصورتی که تمامی پکیجهای استفاده شده را در فایل package.json ثبت کرده باشید با کامند زیر پکیجهای مربوط را روی سرور قرار دهید:
npm i
این فایل ساختار اپلیکیشنهای ما در سرور را به PM2 معرفی میکند.
البته بدون این فایل نیز میتوان اپلیکشن را اجرا کرد ولی برای جلوگیری از تکرار کامندها و کانفیگ مشابه در هر اجرا از این فایل استفاده میکنیم.
توضیحات کامل این فایل را میتوانید از داکیومنت pm2 مشاهده کنید.
برای این کار میتوانید در پوشه home خود فایل ecosystem.config.js را ایجاد کنید و محتوای زیر را درون آن قرار دهید:
module.exports = { apps : [ { name: "app", script: "./app.js", cwd: "/home/nodejs", env: { NODE_ENV: "production" } }] }
مقادیر مشخص شده را به صورت زیر تغییر دهید:
برای اجرای اپ با فایل ecosystem ایجاد شده میتوانید دستور زیر را اجرا نمایید:
pm2 start ecosystem.config.js
برای تست اجرا شدن اپ میتوانید دستور زیر را اجرا کنید:
pm2 logs app
و به جای app نام اپلیکیشنی که داخل فایل وارد کردهاید را قرار دهید.
برای نصب این برنامه روی سیستمعاملهای Debian / Ubuntu از دستورات زیر استفاده نمایید:
apt update
apt install nginx
و برای نصب روی سیستم عامل CentOS از این دستورات استفاده کنید:
yum install epel-release
yum install nginx
برای این کار در پوشه /etc/nginx/conf.d فایلی با نام مربوط با دامنه خود(مانند: example.com.conf) ایجاد کنید و محتوای زیر را داخل آن قرار دهید:
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 میتوانید آدرس و پورتی که اپلیکیشن شما روی آن تنظیم شده است را جایگزین کنید.
لازم به ذکر است این کانفیگ برای استفاده از وبسوکت نیز بهینه است.
به همین سادگی!!
تمامی حقوق برای گیتی سرور محفوظ است.