العودة إلى المدونة

كيفية تثبيت حزمة LEMP (Linux و Nginx و MySQL و PHP) على Ubuntu 20.04

كيفية تثبيت حزمة LEMP (Linux و Nginx و MySQL و PHP) على Ubuntu 20.04

مقدمة

في عالم الإنترنت، تجتمع تقنيات متعددة لتشكيل حل يُمكّن مستخدمي الإنترنت من الوصول إلى المحتوى الديناميكي على الشبكة العنكبوتية العالمية. حزمة LEMP هي أحد هذه الحلول. فهي تجمع بين أربع تقنيات تشكل حلاً كاملاً للخوادم من أجل مواقع الويب عالية الأداء والديناميكية. LEMP هو اختصار لـ Linux و Nginx و MySQL و PHP. نظام Linux هو نظام تشغيل الخادم. أما Nginx (والذي يُنطق Engine-X، ومن هنا جاء حرف E في الاختصار) فهو برنامج خادم الويب. بعد ذلك، MySQL هو نظام قاعدة البيانات الذي يحفظ بيانات موقع الويب والمستخدمين. وPHP هي لغة البرمجة النصية من جانب الخادم للمعالجة الديناميكية.

في هذا البرنامج التعليمي، سنرشدك إلى كيفية تثبيت وتهيئة حزمة LEMP، والتحقق من أن كل شيء يعمل كما هو متوقع. فلنبدأ!

الخطوة 1: تهيئة الخادم الخاص بك باستخدام Ubuntu 20.04

Ubuntu 20.04 هو نظام تشغيل يعتمد على Linux. هناك العديد من الخوادم القائمة على Linux أنظمة التشغيل المتاحة، بما في ذلك المجانية والمدفوعة. ينصب تركيز هذا الدليل على Ubuntu 20.04، وهو مجاني ومفتوح المصدر. تهتم هذه الخطوة بالمتطلب الأول في اختصار حزمة LEMP، وهو حرف L. يجب أن يكون لديك تثبيت فعلي لـ Ubuntu 20.04 على خادمك الافتراضي الخاص (VPS) للمتابعة في الخطوات اللاحقة. يمكنك اتباع دليلنا حول إعداد خادم Ubuntu الخاص بك. واختياريًا، إذا كنت تريد اتباع هذا الدليل على جهاز الكمبيوتر المحلي الخاص بك، فيمكنك تنزيل صورة تثبيت خادم Ubuntu 20.04 مباشرة من موقع Ubuntu الإلكتروني. يجب عليك تهيئة مستخدم عادي غير جذري (non-root) يتمتع بصلاحيات sudo لأننا سنقوم بتشغيل بعض الأوامر التي تتطلب أذونات sudo.

الخطوة 2: تثبيت وتهيئة خادم Nginx

تمكننا خوادم الويب من تقديم محتوى مثل صفحات الويب لزوار الموقع. Nginx هو خادم ويب شائع، ويظهر من بين أفضل خمسة خوادم ويب مفتوحة المصدر المفضلة لدى المطورين. تهتم هذه الخطوة بالمتطلب الثاني في حزمة LEMP، وهو حرف E لـ Nginx. يحتوي Ubuntu على مستودع حزم افتراضي حيث سنحصل على الحزم لاستخدامها في هذا الدليل. يعتمد Ubuntu على Debian، الذي يستخدم apt أو dpkg لإدارة حزمه. بالنسبة للحزم من المستودع الافتراضي، سنستخدم apt.

كقاعدة عامة، يجب عليك تشغيل أمر التحديث قبل البدء في أي تثبيت على نظام Linux. ابدأ بإدخال الأمر التالي في الطرفية (terminal):

بمجرد التحديث، يمكنك الآن تثبيت Nginx باستخدام الأمر التالي:

بمجرد اكتمال التثبيت، يبدأ Nginx في العمل تلقائيًا. الخطوة التالية هي تهيئة جدار الحماية للسماح بمرور حركة المرور. يستخدم Ubuntu حزمة ufw (جدار الحماية غير المعقد) لتهيئة جدران الحماية. بعد التثبيت، يسجل Nginx نفسه كخدمة لدى ufw. يبدأ Ubuntu خدمة جدار الحماية تلقائيًا عند تمهيد النظام، ولكن للتأكد، اكتب الأمر التالي لتمكينه:

لسرد تهيئة التطبيقات التي يسمح بها ufw، أدخل الأمر التالي:

فيما يلي لقطة شاشة توضح مخرجات الأمر أعلاه:

ufw app list

كما ترى، تم تسجيل Nginx بالفعل لدى ufw، ولديه ثلاثة ملفات تعريف كما هو موضح أدناه:

  • Nginx Full – يفتح كلا المنفذين 80 و 443. المنفذ 80 مخصص لحركة المرور العادية/غير المشفرة، أي HTTP. المنفذ 443 مخصص لحركة المرور المشفرة بـ TLS/SSL، أي https.
  • Nginx HTTP – يفتح المنفذ 80 فقط – حركة مرور غير مشفرة.
  • Nginx HTTPS – يفتح المنفذ 443 فقط – حركة مرور مشفرة بـ TLS/SSL.

بينما يسجل Nginx نفسه تلقائيًا لدى ufw، لا يُسمح بأي حركة مرور إلى خادمك حتى تقوم بذلك بنفسك. يمكنك اختيار السماح بجميع ملفات التعريف أو أي منها، ومع ذلك، فمن الأفضل السماح بملف التعريف الأكثر تقييدًا والذي سيظل يسمح بحركة المرور التي قمت بتهيئتها لخادم الويب الخاص بك. نظرًا لأننا لم نقم بتهيئة SSL في هذا البرنامج التعليمي، فسنسمح فقط بحركة مرور HTTP على المنفذ 80. إذا كان لديك فضول، فلدينا دليل حول تهيئة SSL على خادم Nginx من Let's Encrypt باستخدام Certbot.

دعنا نمكّن حركة المرور على المنفذ 80 عن طريق إدخال الأمر التالي:

للتحقق من نجاح التغيير، اكتب الأمر التالي:

check status

يوضح المخرج أعلاه من تشغيل الأمر أن حركة مرور HTTP مسموح بها الآن. يمكنك التحقق مما إذا كان الخادم يعمل عن طريق الوصول إلى نطاقك أو عنوان IP العام للخادم في المتصفح. إذا لم تكن قد قمت بتكوين اسم نطاق ولست متأكدًا من عنوان IP العام لخادمك، فيمكنك العثور عليه باستخدام curl عن طريق تشغيل الأمر التالي:

انسخ مخرج الأمر أعلاه، وهو عنوان IP العام الخاص بك، في شريط عنوان المتصفح. عند تحميل الصفحة، سترى صفحة الهبوط الافتراضية لـ Nginx:

nginx start page

تشير الصفحة أعلاه إلى أنك قمت بتثبيت Nginx بنجاح.

الخطوة 3: تثبيت نظام إدارة قواعد البيانات MySQL

تعد إدارة البيانات جزءًا بالغ الأهمية في أي موقع ويب ديناميكي. MySQL هو نظام إدارة قواعد بيانات يقوم بتخزين بيانات موقع الويب وإدارتها. تتولى هذه الخطوة المتطلب الثالث في حزمة LEMP، وهو M. أدخل الأمر التالي لتثبيت MySQL:

بعد اكتمال تثبيت MySQL، يجب عليك تكوينه قبل أن يصبح جاهزًا للاستخدام. يتضمن جزء من التكوين تأمين خادم قاعدة البيانات. يأتي MySQL مع برنامج نصي لإرشادك في تأمين وإعداد كلمات المرور. الأمر التالي يبدأ تشغيل البرنامج النصي:

mysql secure installation

يسألك البرنامج النصي عما إذا كنت ترغب في إعداد مكون VALIDATE PASSWORD أو الضغط على أي حرف للمتابعة دون تمكين المكون.

مكون VALIDATE PASSWORD هو ميزة تُستخدم للتحقق مما إذا كانت كلمة المرور التي أدخلتها لمستخدم معين على خادم قاعدة البيانات الخاص بك تطابق معيارًا محددًا. يمكنك تكوينه للتحقق من أشياء مثل الطول، والأرقام، وتوفر الأحرف الكبيرة أو الصغيرة، وما إلى ذلك. إذا لم يتم تمكينه، فيمكنك تكوين أي كلمة مرور من اختيارك. ومع ذلك، إذا تم تمكينه، فيجب عليك استخدام كلمة مرور تطابق المعايير التي حددتها. قد يؤدي تمكينه إلى حدوث مشكلات مع الحزم التي تقوم بتكوين بيانات اعتماد مستخدم MySQL تلقائيًا مثل حزمة phpMyAdmin لنظام Ubuntu. يعد تمكينه من عدمه خيارًا شخصيًا. لا تزال قاعدة بياناتك آمنة إذا لم تقم بتمكينه، فقط تأكد من استخدام كلمات مرور قوية وفريدة.

إذا ضغطت على Y لتمكين المكون، فسيطلب منك البرنامج النصي تحديد مستوى التحقق من صحة كلمة المرور:

password strength

يوفر البرنامج النصي 3 مستويات للتحقق من صحة كلمة المرور. يتطلب المستوى LOW أن تتضمن كلمة المرور الخاصة بك 8 أحرف أو أكثر فقط. يتطلب المستوى MEDIUM أن تتضمن كلمة المرور الخاصة بك 8 أحرف أو أكثر، والتي يجب أن تكون مزيجًا من الأحرف الكبيرة والأحرف الصغيرة والرموز الخاصة. يتطلب المستوى STRONG كلمة مرور معقدة تحتوي على 8 أحرف أو أكثر، والتي يجب أن تكون مزيجًا من الأحرف الكبيرة والأحرف الصغيرة والرموز الخاصة والكلمات، ويجب ألا تعتمد على كلمات القاموس الشائعة، وإلا فستتلقى أخطاء. دعنا نذهب مع المستوى المنخفض، اكتب 0، واضغط على enter.

يطالبك البرنامج النصي بإدخال كلمة المرور وإعادة إدخالها:

set password

اكتب y واضغط enter لقبول كلمة المرور التي كتبتها ككلمة مرور root الخاصة بك. المطالبات اللاحقة مخصصة لتحسين أمان خادم MySQL. بدءًا من إزالة المستخدمين المجهولين الافتراضيين الذين يأتون مع كل تثبيت لـ MySQL، وتعطيل تسجيل دخول root من اتصال عن بُعد، وإزالة قواعد البيانات التجريبية. تطلب منك المطالبة الأخيرة إعادة تحميل جدول الامتيازات لتفعيل الأوامر. اكتب y واضغط على enter لجميع المطالبات:

mysql secure installation

تم الانتهاء من التكوين الأمني الأولي.

يمكنك التحقق من إصدار MySQL الذي قمت بتثبيته عن طريق تشغيل الأمر:

إليك الإصدار الذي نستخدمه في هذا البرنامج التعليمي:

mysql version

بالنسبة لأنظمة Ubuntu التي تقوم بتشغيل إصدارات MySQL من 5.7 والإصدارات الأحدث، تم تكوين مستخدم root للمصادقة باستخدام المكون الإضافي auth_socket وليس باستخدام كلمة المرور. يضمن ذلك أمانًا أكبر، ومع ذلك، قد يمثل مشكلة مع الحزم الخارجية مثل حزمة phpMyAdmin. إذا كنت تفضل المتابعة في استخدام المكون الإضافي auth_socket، فانتقل إلى الخطوة 4.

إذا كنت تريد الاتصال باستخدام كلمة مرور بدلاً من ذلك، فيجب عليك تكوين طريقة المصادقة لاستخدام mysql_native_password.

ابدأ تشغيل موجه MySQL عن طريق إدخال الأمر التالي:

تأتي MySQL مع العديد من قواعد البيانات الافتراضية. يمكنك عرض قائمة بقواعد البيانات الافتراضية عن طريق إدخال الاستعلام التالي على الطرفية الخاصة بك:

mysql dbs LEMP stack

تخزن قاعدة البيانات المسماة mysql العديد من التكوينات المتعلقة بـ MySQL. تحتوي قاعدة البيانات هذه على جدول يسمى users يحتوي على تفاصيل المستخدم وطريقة المصادقة لكل منهم. يمكننا استخدام استعلامات SQL لاسترداد المعلومات وتعديلها وحذفها من جدول. أدخل الاستعلام التالي على الطرفية الخاصة بك للحصول على تفاصيل حول طريقة المصادقة التي يستخدمها كل مستخدم:

user authentication check

يوضح المخرج أعلاه أن مستخدم root يقوم بالمصادقة فعليًا باستخدام المكون الإضافي auth_socket. لتغيير طريقة المصادقة لمستخدم root، أدخل العبارة التالية في الطرفية الخاصة بك. تذكر التغيير ليتوافق مع قوة كلمة المرور للمستوى المتوسط الذي قمنا بتعيينه في خطوة سابقة، وإلا فسيؤدي ذلك إلى حدوث خطأ:

بمجرد تنفيذ الاستعلام بنجاح، قم بتشغيل أمر flush privileges لتصبح التغييرات سارية المفعول على الفور:

قم بتشغيل عبارة select أدناه مرة أخرى للتحقق مما إذا كانت التغييرات قد دخلت حيز التنفيذ:

updated user authentication check

من المخرج، سيقوم مستخدم root الآن بالمصادقة باستخدام mysql_native_password. يمكنك الخروج من موجه mysql عن طريق كتابة exit والضغط على enter.

يمكنك محاولة تسجيل الدخول باستخدام كلمة المرور التي قمت بتعيينها عن طريق إدخال الأمر التالي:

سيطلب منك الموجه إدخال كلمة المرور الخاصة بك. إذا كانت متطابقة، فسترى موجه MySQL. لقد قمت بإعداد خادمك بنجاح باستخدام MySQL. بعد ذلك، اخرج من موجه MySQL.

الخطوة 4: تثبيت PHP وإعداد Nginx لاستخدام معالج PHP

PHP هي اختصار لـ PHP: Hypertext Preprocessor. وهي لغة برمجة نصية مفتوحة المصدر وشائعة الاستخدام من جانب الخادم لمواقع الويب وتطبيقات الويب. تتولى PHP المتطلب الرابع في حزمة LEMP. تساعد PHP في إنشاء محتوى ديناميكي على موقع الويب. ويمكن استخدامها كوسيط بين صفحات الويب الخاصة بك ونظام قاعدة البيانات. فهي تقرأ البيانات من قاعدة البيانات وتعرضها لزوار موقعك الإلكتروني. علاوة على ذلك، يمكنها إدراج البيانات وتحديثها وحذفها من قاعدة البيانات.

يفتقر Nginx إلى مكونات معالجة PHP الأصلية مثل خوادم الويب الأخرى، لذا يجب عليك تثبيت php-fpm لتمرير الطلبات من Nginx إلى PHP لمعالجتها. أولاً، أضف مستودع Ubuntu universe الذي يحتوي على برمجيات مجانية ومفتوحة المصدر يديرها مجتمع Ubuntu. أدخل الأمر التالي في الطرفية الخاصة بك:

بعد ذلك، قم بتثبيت حزمة php-fpm مع حزمة php-msql المساعدة لتمكين PHP من الاتصال بـ MySQL، باستخدام الأمر التالي:

في وقت كتابة هذا الدليل، إصدار PHP المثبت من الأمر أعلاه هو 7.2.24. وبالتالي، فإنه يقوم بتثبيت حزمة php-fpm7.2. ضع ذلك في الاعتبار عند تحديث كتل الخادم (server blocks)، وتأكد من إدخال الإصدار الصحيح، وإلا فلن يتم تحميل صفحتك.

يمكنك التحقق من إصدار PHP عن طريق إدخال الأمر التالي:

php version

في هذه المرحلة، تم تثبيت جميع مكونات حزمة LEMP. ما عليك القيام به بعد ذلك هو تكوين Nginx لتوجيه الطلبات إلى معالج PHP. في Nginx، يتم التكوين داخل كتل الخادم. كتل الخادم تعادل المضيفات الافتراضية لـ Apache. لمزيد من المعلومات، يمكنك إلقاء نظرة على برنامجنا التعليمي حول كتل خادم Nginx.

في هذا البرنامج التعليمي، لنقم بإنشاء كتلة خادم لنطاق test.com بنفس الاسم، ولديك الحرية في اختيار الاسم الذي تريده. توجد كتل الخادم في دليل /etc/nginx/sites-available/. استخدم nano لإنشاء ملف كتلة الخادم عن طريق إدخال الأمر التالي:

اكتب السكربت التالي في الملف:

فيما يلي وصف موجز لما تفعله كل توجيه:

  • listen – يحدد المنفذ الذي سيستمع إليه Nginx. المنفذ 80 هو المنفذ الافتراضي، ومع ذلك، إذا قمت بإعداد SSL، فستضع 443.
  • root – يحتوي على الدليل الذي سيتم تخزين دليل الموقع فيه.
  • index – يوجه Nginx لإعطاء الأولوية لتقديم ملفات index.php، إذا كانت متاحة عند الطلب.
  • server_name – يحدد اسم كتلة الخادم، ويحتوي على عنوان IP العام أو اسم النطاق الخاص بخادمك.
  • location/ – تحتوي كتلة الموقع الأولى على التوجيه try_files. حيث تتحقق من وجود ملفات تطابق طلب URI، وإذا لم يتم العثور عليها، يتم إرجاع خطأ 404.
  • location ~ \.php$ – يتعامل هذا التوجيه مع معالجة PHP عن طريق توجيه طلبات Nginx عبر ملف fastcgi-php.conf وملف php7.2-fpm.sock الذي يحدد المقبس الذي يجب ربطه بـ php-fpm. يتحقق هذا الأمر من حالة php-fpm، ونحدد الإصدار كـ 7.2، وهو ما لدينا. تأكد من التحقق من أي إصدار لديك:
php status

  • location ~ /\.ht – يتعامل هذا التوجيه مع ملفات .htaccess، والتي لا تتم معالجتها بواسطة Nginx. يضمن التوجيه deny all عدم تقديم أي ملف htaccess للزوار.

بعد إضافة السكربت إلى ملف test.com الخاص بك، اضغط على Ctrl + O، ثم اضغط على Enter لحفظ الملف. اضغط على Ctrl + X لإغلاق المحرر.

بعد ذلك، يجب عليك تمكين كتلة الخادم عن طريق إدخال الأمر التالي لإنشاء رابط رمزي إلى /etc/nginx/sites-enabled:

بعد ذلك، قم بإلغاء ربط كتلة الخادم الافتراضية من sites-enabled عن طريق إدخال الأمر التالي:

اختبر التكوين الجديد الخاص بك عن طريق إدخال الأمر التالي:

إذا كانت الصيغة صحيحة، فأعد تحميل Nginx باستخدام الأمر التالي:

في هذه الخطوة، تم تثبيت حزمة LEMP وتكوينها. في الخطوة التالية، سنقوم بإنشاء ملف اختبار للتأكد من اتصال المكونات المختلفة بشكل جيد.

الخطوة 5: إنشاء ملف PHP لاختبار حزمة LEMP الخاصة بك

في هذه الخطوة، سنقوم بإنشاء ملف .php وتشغيله على خادم Nginx للتحقق مما إذا كان يعمل بشكل صحيح. سنستخدم دالة phpinfo() العامة للتحقق من حزم php المتاحة. أدخل الأمر التالي لفتح ملف .php في nano:

في محرر nano، اكتب مقتطف الكود التالي:

احفظ الملف وأغلقه. لزيارة الصفحة التي أنشأتها للتو في متصفحك، ابحث عن نطاقك أو عنوان IP الخاص بك وانتقل إليه على النحو التالي:

يجب أن تكون قادرًا على رؤية صفحة معلومات PHP:

php info page

توضح الصفحة أعلاه أنك قمت بإعداد Nginx بنجاح. نظرًا لأن الملف الذي أنشأته للاختبار يحتوي على تفاصيل دقيقة حول خادمك، يجب أن تتذكر إزالته. أدخل الأمر التالي لإزالة الملف:

 

إذا احتجت في أي وقت إلى اختبار تكويناتك في المستقبل، فيمكنك دائمًا إعادة إنشاء الملف.

الخاتمة

في هذا البرنامج التعليمي، قمت بتكوين حزمة LEMP على نظام التشغيل Ubuntu 20.04، وهي واحدة من أقوى حزم تطوير تطبيقات الويب المتاحة. من هنا، يجب أن تكون قادرًا على استضافة أي موقع ويب أو تطبيقات ويب أو منطق جانب الخادم لتطبيق الهاتف المحمول الخاص بك. لضمان تقديم موقع الويب الخاص بك للمحتوى عبر اتصال SSL آمن، لدينا برنامج تعليمي حول تكوين شهادات SSL على خادم Nginx نوصيك بإلقاء نظرة عليه.

حوسبة سعيدة!

author

Akshay Nagpal

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.