محتوای آموزشی وبلاگ نتآرام
برنامه Node.js روی رایانه بالا میآید، اما بعد از انتقال به هاست صفحه باز نمیشود یا پنل خطای شروع برنامه میدهد. ممکن است ریشه برنامه اشتباه باشد، فایل شروع پیدا نشود، وابستگیها در محیط دیگری نصب شده باشند یا روش اجرای برنامه با Passenger سرویس سازگار نباشد.
نام و تنظیمات پنلها یکسان نیستند. ابتدا از پشتیبانی یا اطلاعات سرویس مشخص کنید واقعاً از Passenger استفاده میشود و پنل چه فایل و نسخهای میخواهد. روی هاست اشتراکی تغییر تنظیم اصلی Apache یا بازکردن پورت در فایروال معمولاً در اختیار حساب کاربر نیست.
۱. ریشه و فایل شروع را در پنل پیدا کنید
در بخش برنامه Node.js پنل، نام دامنه،
Application root، نسخه Node و Application startup file یا گزینههای معادل را یادداشت کنید. ریشه معمولاً پوشه برنامه است و فایل شروع نسبت به آن تفسیر میشود؛ راهنمای همان پنل را ملاک قرار دهید.در Terminal یا SSH به کپی آزمایشی همان پوشه بروید:
کد / دستورcd ~/node-app-test
pwd
ls -la
ls -la package.json app.js
node --version
npm --version
مسیر و نام
app.js نمونهاند. اگر پنل فایل دیگری را میخواهد، همان نام واقعی را بررسی کنید. بزرگ و کوچک بودن حروف در لینوکس مهم است. اگر برنامه در زیرپوشه استخراج شده، تغییر ریشه پنل بدون بررسی فایلهای دیگر میتواند تنظیمات را بشکند؛ ابتدا یک برنامه آزمایشی مستقل بسازید.۲. نمونه کوچک را از پروژه واقعی جدا کنید
برای فهم رفتار، فایل آزمایشی
کد / دستورapp.js زیر یک پاسخ ساده میدهد:const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Hello from the test app');
});
server.listen(3000, '127.0.0.1');
این کد فقط برای اجرای محلی یک نمونه مستقل است؛ آن را جای برنامه موجود قرار ندهید. در ترمینال همان محیط آزمایشی:
کد / دستورnode app.js
در ترمینال دوم همان سیستم، اگر پورت واقعاً در اختیار نمونه است:
کد / دستورcurl -i http://127.0.0.1:3000/
پس از دیدن پاسخ نمونه، با
Ctrl+C اجرای محلی را متوقف کنید. این آزمایش فقط مفسر و کد را در همان محیط میسنجد و اثبات سازگاری پنل یا دسترسی عمومی نیست. پورت مثال را روی سرویس عمومی باز نکنید.۳. تفاوت اجرای محلی و Passenger را بشناسید
در اجرای عادی Node، برنامه معمولاً خود روی یک پورت گوش میدهد. Passenger در حالت Node میتواند کنترل اتصال را در دست بگیرد و به جای پورت درخواستی برنامه از یک Unix socket مدیریتشده استفاده کند. بنابراین درخواست به پورت ثابت رایانه یا اجبار به بازکردن آن پورت، روش عمومی بررسی Passenger نیست.
Passenger منتظر فراخوانی
listen() روی سرور HTTP برنامه است، ولی جزئیات فایل شروع و تنظیمات به نسخه و پنل بستگی دارد. اگر سرویس به جای Passenger از روشی استفاده میکند که PORT را از محیط میدهد، از راهنمای همان سرویس پیروی کنید. عدد 3000 نمونه محلی، دستور تنظیم پورت سایت شما نیست.۴. خطای واقعی شروع را از گزارش بخوانید
گزارش برنامه یا بخش خطاهای پنل را در زمان شروع باز کنید. اگر
Cannot find module میبینید، محیط و نصب وابستگی را طبق راهنمای ماژول پیدا نشده بررسی کنید. اگر فایل dist پیدا نشده، ابتدا build و مسیر خروجی را طبق راهنمای TypeScript درست کنید. اگر متغیر محیطی خالی است، مقدار آن را در محل امن پنل تنظیم کنید و خود رمز را در گزارش قرار ندهید.نسخه Node پنل را با نسخه پروژه و فایل قفل مقایسه کنید. نصب تمیز در کپی آزمایشی ممکن است لازم باشد، اما
npm ci پوشه node_modules همان مسیر را حذف میکند و نباید بیبرنامه روی نسخه فعال اجرا شود.اگر پیام به جای نبود ماژول، از دسترسی فایل شروع یا پوشه نام میبرد، نام حساب اجرای برنامه و مجوز خواندن فایل و عبور از پوشههای والد را بررسی کنید. تغییر همه فایلها به حالت نوشتن برای همه کاربران یا اجرای برنامه با دسترسی مدیر، راهحل مناسبی نیست. در صورت محدودیت پنل، مسیر فایل و متن خطا را بدون اطلاعات محرمانه به پشتیبانی بدهید.
همچنین ممکن است فایل شروع، برنامه را از یک زیرپوشه import کند اما مسیر نسبی با ریشه تنظیمشده هماهنگ نباشد. در کپی آزمایشی، فایل واقعی، تنظیم ریشه و importهای مربوط را با هم تطبیق دهید. اگر فایل شروع با موفقیت خوانده میشود ولی خطای بعدی از اتصال پایگاه داده است، اکنون باید همان اتصال را بررسی کنید، نه تغییر دوباره پورت وب.
۵. با نشانی پنل نتیجه را بسنجید
پس از ثبت فایل و تنظیمات پشتیبانیشده، برنامه آزمایشی را با دکمه یا روش پنل راهاندازی کنید. گزارش شروع و نشانی عمومی اختصاصیافته را بخوانید؛ صفحه نمونه، مسیر کاربردی و در صورت وجود اتصال پایگاه داده را جدا امتحان کنید. اگر ترمینال موفق و پنل ناموفق است، ریشه، نسخه و تنظیم محیط دو اجرا را کنار هم بگذارید.
اطلاعات هاست Node.js نتآرام و توضیح مدیریت پورت در Passenger را ببینید.
برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
