عند إنشاء تطبيق جديد لـ Node.js في cPanel/WHM على CloudLinux أو AlmaLinux 9، قد تواجه رسالة خطأ: الدليل "public_html" غير مسموح به. يحدث هذا الخطأ عندما تحاول تعيين جذر التطبيق إلى دليل public_html، وهو غير مسموح به لتطبيقات Node.js.
لماذا يحدث الخطأ
دليل public_html مخصص عادة لملفات المواقع الثابتة مثل HTML وCSS وJavaScript. في cPanel/WHM، يتم تطبيق بعض القيود على هذا الدليل، مما يمنع استخدامه كجذر لتطبيق Node.js. يساعد هذا القيد في ضمان أن تظل البنية آمنة ومعزولة بين المحتوى الثابت والديناميكي.
كيفية حل المشكلة
لحل هذه المشكلة، ستحتاج إلى إنشاء دليل منفصل لتطبيق Node.js الخاص بك خارج مجلد public_html. اتبع الخطوات أدناه لإعداد تطبيق Node.js الخاص بك بشكل صحيح.
الخطوة 1: إنشاء دليل جديد لتطبيق Node.js الخاص بك
- قم بتسجيل الدخول إلى cPanel.
- انتقل إلى مدير الملفات.
- في دليل المنزل الخاص بك (مثلًا، /home/username/)، أنشئ مجلدًا جديدًا حيث ستضع تطبيق Node.js الخاص بك. يمكنك تسميته مثل nodeapp أو app.
- انقل جميع ملفات مشروع Node.js الخاص بك إلى هذا الدليل الجديد (مثل /home/username/nodeapp).
الخطوة 2: تكوين تطبيق Node.js في cPanel
- ارجع إلى مدير تطبيقات Node.js في cPanel.
- في حقل جذر التطبيق، أدخل المسار إلى الدليل الجديد الخاص بك (مثل /home/username/nodeapp).
- تأكد من أن عنوان URL للتطبيق يشير إلى النطاق أو النطاق الفرعي الصحيح.
- بالنسبة إلى ملف بدء تشغيل التطبيق، تأكد من توفير ملف نقطة الدخول الصحيح، مثل app.js أو index.js، بناءً على إعدادك.
- اضغط على إنشاء لإكمال الإعداد.
الخطوة 3: إعداد وكيل عكسي اختياري
إذا كنت تريد تشغيل تطبيق Node.js الخاص بك تحت النطاق الجذر (مثل whatmas.linkysoft.com)، يمكنك إعداد وكيل عكسي باستخدام Apache.
- انتقل إلى مدير الملفات > public_html وأنشئ ملف .htaccess (إذا لم يكن موجودًا بالفعل).
- أضف الأسطر التالية لتكوين وكيل عكسي لنطاقك:
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?whatmas\.linkysoft\.com$ [NC] RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L] # استبدل 3000 بمنفذ تطبيق Node.js الخاص بك
- احفظ الملف وسيتم تشغيل تطبيق Node.js الخاص بك الآن عبر Apache أثناء تشغيله في الخلفية على المنفذ المحدد.
الخاتمة
تم تقييد دليل public_html لأنواع معينة من التطبيقات مثل Node.js، لضمان الفصل المناسب بين المحتوى الثابت والديناميكي. من خلال إنشاء دليل منفصل وتكوين تطبيق Node.js الخاص بك خارج public_html، يمكنك حل المشكلة. بالإضافة إلى ذلك، يتيح إعداد وكيل عكسي إمكانية تشغيل تطبيق Node.js الخاص بك عبر النطاق المطلوب.