في هذه المقالة ، سأغطي استضافة تطبيق Node.js على خوادم الاستضافة المشتركة Namecheapà  ¢ à  à s s s s cPanel. لن أناقش إعداد خادم قاعدة البيانات أو واجهة React الأمامية لتطبيق الويب الخاص بك في هذه المقالة. بدلاً من ذلك ، أريد التركيز على التحديات التي قد تواجهها عند تشغيل تطبيق Node في بيئة استضافة مشتركة. == Donà  ¢ à  à  t تأخير ، استضف اليوم! == قبل الشروع في تطوير تطبيق الويب الخاص بك ، من الجيد وضع إصدار ثابت على الإنترنت. قد يكون هذا في بيئة الإنتاج الخاصة بك ، أو في بيئة مرحلية مشابهة لبيئة الإنتاج الخاصة بك. سينتظر معظم الأشخاص حتى يكتمل تطبيقهم تقريبًا قبل استضافته عبر الإنترنت à  ¢ à  à  وهذا ما فعلته عند تطوير تطبيق الويب الأول الخاص بي من React و Node. ومع ذلك ، في هذه المرحلة ، واجهت الكثير من التحديات في تشغيل خادم Node API الخاص بي واضطررت أيضًا إلى إجراء الكثير من التغييرات على تطبيق React الخاص بي. لهذا السبب أوصي بوضع إصدار على الإنترنت مبكرًا حتى تتمكن من إجراء تعديلات قبل كتابة الكثير من التعليمات البرمجية. == استخدام خدمة الاستضافة المشتركة == تستخدم خوادم الاستضافة المشتركة Namecheapà  ¢ à  à لوحة cPanel كواجهة لوحة تحكم لإدارة خادم Apache. يجب أن تساعد هذه التعليمات أيضًا أي شخص يستخدم خدمة استضافة مشتركة مع cPanel مثل A2 Hosting و GoDaddy. لدي أيضًا خادم Namecheap الذي تم إعداده باستخدام شهادة SSL ويقوم cPanel افتراضيًا بإعادة توجيه جميع حركات مرور HTTP إلى HTTPS. لذا فإن كل حركة المرور إلى الخادم الخاص بي آمنة. ستجد العديد من الأدلة التي ترشدك حول كيفية استضافة تطبيق Node على خدمة استضافة VPS (خادم خاص افتراضي) مثل DigitalOcean. إذا كنت تبدأ من الصفر ، فإن الاستضافة باستخدام خدمة كهذه ستمنحك مزيدًا من التحكم. لكنها عادة ما تكون أكثر تكلفة من الاستضافة المشتركة. وفي حالتي ، كنت قد دفعت بالفعل مقابل خدمة الاستضافة المشتركة Namecheap. بعض مزايا استخدام cPanel والاستضافة المشتركة: - تدار من خلال وحدة تحكم إدارة ويب بسيطة - سهل التكوين - رخيص ، خاصة إذا كنت تستضيف بالفعل موقعًا / مجالًا - يمكنك بسهولة إعداد مواقع ويب ديناميكية باستخدام تقنيات أخرى مثل PHP ، وما إلى ذلك ، إذا كنت تستكشف تقنيات مختلفة بعض العيوب: - أقل à  ¢ à  à  controlà  ¢ à  à  كما لا يمكنك الوصول إلى نظام التشغيل الأساسي - غير قابل للتطوير == أين يذهب كل شيء؟ == تحتاج أولاً إلى إنشاء مجلد لجميع الملفات المصدر لتطبيقات Node الخاصة بك. لقد أنشأت مجلدًا يسمى à  ¢ à  à  nodejsà  ¢ à  à  في دليل / home / username وداخل هذا المجلد ثم أقوم بإنشاء مجلد فرعي لكل تطبيق. الآن قم بتحميل جميع ملفات المصدر الخاصة بك في هذا المجلد الفرعي. تأكد من تضمين ملف package.json أيضًا. لا تقم بتحميل مجلد à  ¢ à  à  node_modulesà  ¢ à  à  حيث سيتم إنشاؤه باستخدام مدير الحزم لاحقاً. تذكر أننا نستضيف فقط خادم Node API في مثال هندسة تطبيق الويب الخاص بنا. لن نستضيف تطبيق React باستخدام Node (المزيد حول هذا الموضوع في المقالة التالية). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg يُظهر تخطيط المجلد ملفات مصدر Node ضمن مجلد / home / username / nodejs / mynodeapi وهناك ملف .htaccess في المجلد / home / username / public_html / myapi == المشكلة à  ¢ à  à  لا يمكن لتطبيق Node  ¢ à  à  الوصول إلى المنافذ == كان التحدي الأكبر هو تشغيل تطبيق Node API الخاص بي. كانت المشكلة أن نموذج التعليمات البرمجية المعطى في وثائق دعم Namecheap  ¢ à  à à à à  à  à Â! يحاول إنشاء httpserver للاستماع على المنفذ 80 وخادم http ** s ** على المنفذ 443. ومع ذلك ، فقد تلقيت دائمًا خطأ EACCESS يفيد بأنني لم أحصل على إذن لاستخدام تلك المنافذ. == الحل à  ¢ à  à  العقدة لا تحتاج إلى الوصول إلى المنفذ! == في النهاية وجدت الحل من خلال قراءة تعليق من قبل المستخدم SibProgrammer في سلسلة رسائل حول Plesk ، لوحة تحكم استضافة أخرى. تستخدم cPanel خادم تطبيق Phusion Passenger لاستضافة تطبيقات Node ، كما يفعل Plesk. في ملخص: عندما ترسل طلبًا من متصفحك ، فإنه ينتقل إلى خادم Apache ، ثم إلى Phusion Passenger ، ثم إلى تطبيق Node الخاص بك. لا يحتاج تطبيق Node الخاص بك إلى امتلاك المنفذ حيث يتم التعامل معه بشكل أكبر من قبل خوادم تطبيق Apache و Phusion Passenger. يعمل هذا على تبسيط التعليمات البرمجية لإنشاء httpserver في ملف www.js (أو app.js) الخاص بك: * www.js * اختبار إنشاء خادم http لـ Namecheap. * Dave * / const http = تتطلب ('http http.createServer (وظيفة (طلب ، استجابة) {response.writeHead (200، {'Content-Type ':'text / html response.endh1>Hello Worldh1 listen (process.env .PORT) ؛ console.log ("التطبيق قيد التشغيل هناك عدد قليل من الأشياء ملاحظة: - استمع على process.env.PORT (بدلاً من ضبط 80 أو 443 يدويًا). عند الاختبار لاحظت أن process.env.PORT غير محدد! لكن المثير للاهتمام أن هذا لا يهم في هذه الحالة. - استخدم خادم http حتى إذا كان لديك إعداد SSL. قامت cPanel بتهيئة Apache لإعادة توجيه كل حركة مرور HTTP إلى HTTPS وبالتالي الاستجابة لجميع الطلبات من خلال HTTPS. لا تحتاج إلى تكوين تطبيق Node يدويًا لإعداد خادم https وقراءة شهادات SSL الخاصة بك. == الخطوات النهائية لخادم Node API == الآن يجب أن تكون العملية البسيطة نسبيًا المتمثلة في اتباع الإرشادات لإعداد تطبيق العقدة الخاص بك. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg لقطة شاشة لصفحة تكوين cPanelà  ¢ à  à  s Node.js - اختر الإصدار المناسب من Node.js ووضع التطبيق (يوصى بالإنتاج). - سيكون à  ¢ à  à  جذر التطبيق ¢ ¢ à  à  هو المجلد الذي قمت بتحميل ملفات المصدر فيه مسبقًا (à  ¢ à  à  nodejs / mynodeapià  ¢ à  à  في المثال أعلاه). - سيكون à  ¢ à  à  عنوان URL للتطبيق  ¢ à  à  هو عنوان URL المستخدم للوصول إلى واجهة برمجة التطبيقات (API) الخاصة بك (à  ¢ à  à  myapià  ¢ à  à  في المثال). سيتم استخدام الاسم الذي تقدمه في هذا المربع لإنشاء مجلد فرعي في مجلد / home / username / public_html الخاص بك. لا يجب أن يكون نفس اسم المجلد à  ¢ à  à  جذر التطبيق  ¢ à  à  (ولكن غالبًا ما يكون). - سيكون ملف بدء تشغيل التطبيق à  ¢ à  à  ¢ à  à  www.js أو app.js اعتمادًا على كيفية إنشاء تطبيق Node الخاص بك. - الأمر متروك لك في الطريقة التي تريد بها تكوين ملف سجل Passenger. - بمجرد إنشاء التطبيق ، سترى الزر لـ à  ¢ à  à Run NPM Installà  ¢ à  à Â. قم بتشغيل هذا وسيتم إنشاء مجلد à  ¢ à  à  node_modulesà  ¢ à  à  مع جميع الوحدات التابعة التي يحتاجها تطبيقك. بمجرد إعداد تطبيق Node الخاص بك وتشغيله ، سيتم إنشاء المجلد الفرعي في مجلد / home / public_html الخاص بك. ستحتاج الآن إلى الانتقال إلى هذا المجلد وتحرير ملف htaccess وإضافة السطر التالي: أعد كتابة المحرك هذا يمنع خادم Apache من إعادة كتابة (أو إعادة توجيه) أي من الطلبات التي تحتاج إلى الانتقال إلى خادم API الخاص بك كما هو. وهذا كل شيء! الآن يجب أن يكون تطبيق Node API الخاص بك قيد التشغيل والاستجابة لمكالمات API الخاصة بك. == إذن ما هو التالي؟ == الآن بعد أن قمنا بإعداد خادم Node API ، يمكننا تغيير واجهة React الأمامية في بيئة التطوير الخاصة بنا للإشارة إلى خادم API هذا. أو يمكننا استخدام Postman لاختبار مكالمات API الخاصة بنا. في المقالة التالية سنلقي نظرة على استضافة تطبيق React على Namecheap و cPanel.