میزبانی اپلیکیشنهای Node.js در گذشته کار دشواری بود، بهویژه روی سرورهای هاست اشتراکی که چندین کاربر بهطور همزمان از آن استفاده میکردند. اما با ورود Application Manager در cPanel و WHM، نصب اپلیکیشنهای جاوااسکریپت و پیکربندی محیطهای Node.js به کاری ساده و سریع تبدیل شده است. این ابزار به مدیران هاست امکان میدهد خدمات میزبانی Node.js را از طریق یک رابط کاربری گرافیکی روان و قابلفهم ارائه دهند.
در این مقاله، خواهیم دید چگونه میتوان Application Manager سیپنل را فعال کرد و سپس اپلیکیشنهای Node.js را نصب، ثبت و مدیریت نمود. این نکته را در نظر بگیرید که بسته به سرویسدهنده هاستینگ امکان استفاده از موضوعات این مطلب ممکن است متفاوت بوده و برخی از آنها این قابلیتها را غیرفعال کرده باشند. ما این آموزش را براساس یک VPS که سیپنل روی آن نصب شده است پیش خواهیم برد.
شروع کار با Application Manager در سیپنل
کاربران سیپنل میتوانند اپلیکیشنهای Node.js خود را در Application Manager ثبت کرده و آنها را به یک دامنه متصل کنند. برای اینکه این قابلیت در اختیار کاربران هاست قرار بگیرد، مدیران سرور باید ابتدا چند بستهی پشتیبانی را نصب کرده و مطمئن شوند که Application Manager فعال است.
برای فعالسازی این بخش، از Feature Manager در WHM استفاده میکنیم. کافی است از منوی کناری WHM به قسمت Packages بروید و Feature Manager را باز کنید.
سپس در بخش Manage Feature List، گزینهی Default را از منوی کشویی انتخاب کرده و روی دکمهی Edit کلیک کنید.
در کادر جستجو عبارت Application Manager را وارد کنید و مطمئن شوید که این گزینه در فهرست قابلیتها تیک خورده باشد. اگر تیک نخورده بود، کافی است مربع کنار آن را علامت بزنید و در پایان روی دکمهی Save در پایین صفحه کلیک کنید.
در مرحلهی بعد باید نرمافزاری را نصب کنیم که امکان اجرای اپلیکیشنهای Node.js و مدیریت آنها را در سیپنل فراهم میکند. این مجموعه شامل mod_passenger بهعنوان سرور اپلیکیشن و محیط Node در EasyApache4 است.
برای نصب این بستهها لازم است با دسترسی root از طریق SSH وارد سرور شوید و دستور زیر را اجرا کنید:
yum install ea-ruby24-mod_passenger ea-apache24-mod_env ea-nodejs10
پس از نصب، Application Manager در حسابهای کاربری سیپنل فعال خواهد شد و آماده است تا اپلیکیشنهای Node.js را میزبانی کند.
ایجاد یک اپلیکیشن در Application Manager سیپنل
میزبانی اپلیکیشنها در سیپنل یک فرآیند دو مرحلهای است:
- نصب اپلیکیشن روی سرور
- ثبت آن در Application Manager
در بخش بعدی به ثبت اپلیکیشن میپردازیم، اما ابتدا باید آن را روی سرور نصب کنیم. اگر از سیستم کنترل نسخه Git استفاده میکنید، میتوانید مخزن پروژه را با کلاینت خط فرمان یا رابط Git در سیپنل کلون کنید. با این حال، برای سادهسازی روند، در اینجا یک اپلیکیشن تکفایلی ساده میسازیم.
ابتدا با دسترسی SSH بهعنوان کاربر سیپنل وارد شوید و یک پوشهی جدید در دایرکتوری خانگی ایجاد کنید:
mkdir nodejsapp
نام پوشه میتواند هر چیزی باشد. اینجا همان جایی است که فایلهای کد اپلیکیشن شما قرار میگیرند. سپس یک فایل به نام app.js
در این پوشه بسازید. سیپنل انتظار دارد نقطهی شروع اپلیکیشن همین نام را داشته باشد، بنابراین بهتر است از همین نام استاندارد استفاده کنید مگر اینکه دلیل خاصی برای تغییر آن داشته باشید.
کد زیر را در فایل app.js
قرار دهید و ذخیره کنید:
const http = require('http')
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World! I am your new NodeJS app! \n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
این کد یک سرور HTTP روی پورت 3000 راهاندازی میکند و در پاسخ به درخواستها پیام زیر را برمیگرداند:
Hello World! I am your new NodeJS app!
قبل از رفتن به مرحلهی ثبت اپلیکیشن، بهتر است مطمئن شویم که برنامه درست کار میکند. برای اجرای آن با نصب Node.js در EasyApache، دستور زیر را اجرا کنید:
/opt/cpanel/ea-nodejs10/bin/node app.js
اگر همهچیز درست باشد، پیامی مشابه زیر خواهید دید:
Server running at http://127.0.0.1:3000
در نهایت، یک ترمینال جدید باز کنید و دوباره بهعنوان همان کاربر سیپنل وارد شوید. با استفاده از ابزار curl یک درخواست به اپلیکیشن بفرستید:
curl http://127.0.0.1:3000
اگر پاسخ شامل پیام Hello World! I am a NodeJS app on cPanel بود، یعنی اپلیکیشن شما آماده است و میتوانید به مرحلهی بعد یعنی ثبت آن در سیپنل بروید.
ثبت اپلیکیشن Node.js در Application Manager سیپنل
فرآیند ثبت به Passenger app manager و سیپنل اعلام میکند که اپلیکیشن شما در کجا قرار دارد و میخواهید آن را به کدام دامنه متصل کنید.
برای شروع، در سیپنل به بخش Application Manager بروید. این گزینه را میتوانید در صفحهی اصلی و زیر مجموعهی Software پیدا کنید.
روی دکمهی Register Application کلیک کنید تا فرآیند ثبت اپلیکیشن آغاز شود.
در جدول Application Configuration لازم است چهار بخش اصلی را تکمیل کنیم:
- Application Name: یک نام نمایشی برای اپلیکیشن. میتوانید هر نامی انتخاب کنید، فقط باید با یک حرف یا عدد شروع شود و شامل نقطه (.) نباشد.
- Deployment Domain: دامنهای که اپلیکیشن روی آن اجرا خواهد شد. این دامنه باید از قبل به حساب سیپنل شما متصل شده باشد.
- Base Application URL: مسیر دسترسی اپلیکیشن روی دامنه. برای مثال اگر دامنهی شما
example.com
باشد و در این بخش عبارتnodeapp
را وارد کنید، اپلیکیشن از آدرسexample.com/nodeapp
در دسترس خواهد بود. توجه داشته باشید که این مسیر الزامی ندارد با نام پوشهی فایلهای اپلیکیشن یکسان باشد. - Application Path: مسیر پوشهی اپلیکیشن نسبت به دایرکتوری خانگی کاربر. در مثال ما پوشهای به نام
nodejsapp
ساختهایم، بنابراین در این بخش بایدnodejsapp
وارد شود.
گزینهی Deployment Environment مشخص میکند که اپلیکیشن شما در حال توسعه است یا آمادهی اجرا در محیط Production.
در پایین جدول Application Configuration بخشی برای تنظیم متغیرهای محیطی قرار دارد. در بخش بعدی بهطور کامل به آنها میپردازیم.
فعلاً روی دکمهی Deploy در پایین صفحه کلیک کنید. سیپنل بهطور خودکار محیط و دامنهی اپلیکیشن شما را پیکربندی میکند. پس از پایان این فرآیند، میتوانید اپلیکیشن جدیدتان را در مرورگر و از طریق آدرسی که تنظیم کردهاید باز کنید؛ در مثال ما:
example.com/nodeapp
از آنجا که اپلیکیشن نمونهی ما یک فایل ساده است، هیچ وابستگی خارجی ندارد. اما اگر پروژهی شما وابستگیهایی داشته باشد، Application Manager دکمهای به نام Ensure Dependencies نمایش میدهد تا تنها با یک کلیک، تمام پکیجهای تعریفشده در فایل package.json
نصب شوند.
اگر میخواهید قابلیت Ensure Dependencies را در عمل ببینید، کافی است یک فایل به نام package.json
در پوشهی اپلیکیشن خود ایجاد کنید و محتوای زیر را در آن قرار دهید:
{
"name": "nodejsapp",
"version": "1.0.0",
"description": "A Node App",
"main": "app.js",
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
همانطور که مشاهده میکنید، در این فایل فریمورک Express بهعنوان یک وابستگی تعریف شده است. حالا در Application Manager دکمهی Ensure Dependencies ظاهر میشود. با کلیک روی این دکمه، سیپنل بهطور خودکار Express و تمام کتابخانهها و پکیجهایی که به آن نیاز دارد را نصب میکند.
افزودن متغیرهای محیطی به محیط اپلیکیشن Node.js
متغیرهای محیطی در واقع جفتهای نام–مقدار هستند که بخشی از اطلاعات را ذخیره میکنند. آنها شبیه متغیرهای معمولی در برنامهنویسی عمل میکنند، با این تفاوت که درون کد برنامه تعریف نمیشوند بلکه بخشی از محیط بیرونی آن هستند. سرورها از متغیرهای محیطی برای نگهداری دادههای پیکربندی مهم استفاده میکنند.
برای نمونه، در سیستمعامل CentOS متغیر محیطی PATH فهرستی از مسیرهایی را ذخیره میکند که شامل برنامههای خط فرمان هستند. وقتی دستوری مثل ls
را وارد میکنید، شل این مسیرها را جستوجو میکند تا فایل اجرایی مربوطه را پیدا کند. اگر چنین متغیری وجود نداشت، مجبور بودید همیشه مسیر کامل دستور را وارد کنید؛ مثلاً بهجای ls
بنویسید /usr/bin/ls
.
مدیر سرور میتواند مقدار متغیر PATH را تغییر دهد و مسیرهایی که شل در آنها به دنبال برنامهها میگردد را کنترل کند، بدون اینکه نیازی به تغییر در کد داخلی باشد. به همین شکل، در Application Manager سیپنل میتوانید متغیرهای محیطی دلخواه خود را به اپلیکیشن Node.js اضافه کنید تا رفتار آن را مطابق نیازتان پیکربندی کنید.
در فایل سادهی app.js
ما، این خط جاوااسکریپت مشخص میکند که اپلیکیشن روی کدام پورت به درخواستها گوش دهد:
const port = 3000;
اما در عمل، معمولاً توسعهدهنده هنگام نوشتن کد از قبل نمیداند که اپلیکیشن باید روی چه پورتی اجرا شود. برای انعطافپذیری بیشتر، میتوان اپلیکیشن را طوری نوشت که مقدار پورت را از محیط (Environment) دریافت کند.
در Node.js این کار به شکل زیر انجام میشود:
const PORT = process.env.PORT || 3000;
این خط باعث میشود متغیر داخلی PORT
در اپلیکیشن برابر با مقدار متغیر محیطی PORT
باشد. اگر چنین متغیری تعریف نشده باشد، بهطور پیشفرض مقدار 3000 استفاده میشود.
به این ترتیب، کاربر میتواند با تعریف یک متغیر محیطی به نام PORT
مشخص کند اپلیکیشن روی کدام پورت اجرا شود. برای انجام این کار در Application Manager سیپنل، کافی است در بخش Environment Variables که زیر جدول Application Configuration قرار دارد، روی Add Variable کلیک کنید و متغیر مورد نظر را اضافه نمایید.
یک نام و مقدار برای متغیر وارد کنید و سپس روی دکمهی Save کلیک کنید. به این ترتیب متغیر محیطی شما ذخیره میشود و اپلیکیشن میتواند از آن برای پیکربندی رفتار خود استفاده کند.
ویرایش اپلیکیشن Node.js
شما میتوانید تنظیمات مربوط به ثبت اپلیکیشن Node.js خود را در Application Manager ویرایش کنید. این بخش به شما اجازه میدهد جزئیاتی مثل مسیر اپلیکیشن، دامنهی متصل، فایل شروع و حتی متغیرهای محیطی را تغییر دهید تا اپلیکیشن مطابق نیازتان اجرا شود.
روی لینک Edit در ستون Actions کلیک کنید. در این بخش میتوانید تمام مقادیری را که هنگام ثبت اولیهی اپلیکیشن وارد کرده بودید ویرایش کنید؛ از جمله مسیر اپلیکیشن، دامنه، فایل شروع و همچنین متغیرهای محیطی.
حذف (Uninstall) اپلیکیشن Node.js
برای حذف یا Unregister کردن یک اپلیکیشن Node.js از سیپنل، کافی است در جدول Application Manager روی لینک Unregister که در ستون سمت راست قرار دارد کلیک کنید.
با این کار، اپلیکیشن از لیست ثبتشدهها خارج میشود و دیگر به دامنه یا مسیر مشخصشده متصل نخواهد بود. توجه داشته باشید که این عملیات فقط ثبت اپلیکیشن را لغو میکند؛ فایلهای کد اپلیکیشن همچنان در پوشهی کاربر باقی میمانند و در صورت نیاز میتوانید آنها را بهصورت دستی حذف کنید.
جمعبندی
در حالی که PHP همچنان پرکاربردترین زبان سمت سرور است، محبوبیت Node.js، جاوااسکریپت و فریمورکهایی مانند Express، Meteor و Nest بهسرعت در حال افزایش است. سیپنل و WHM با ابزار Application Manager این امکان را فراهم کردهاند که میزبانها بهسادگی از اپلیکیشنهای Node.js و کاربران علاقهمند به جاوااسکریپت پشتیبانی کنند.
این یعنی با وجود سلطهی PHP، روند آینده به سمت اپلیکیشنهای مدرن جاوااسکریپتی در حال حرکت است و سیپنل ابزار لازم برای این گذار را در اختیار مدیران سرور قرار داده است.