كيفية تثبيت حزمة Linux, nginx, MySQL, PHP: LEMP على أوبنتو 14.04

نشره Fahad في

حزمة LEMP

#مقدمة حزمة LEMP هي مجموعة من البرامج التي يمكن استعمالها من أجل خدمة صفحات الويب وتطبيقات الويب ديناميكيا. و هو اختصار الذي يصف نظام التشغيل لينكس مع خادم الويب Nginx و يتم تخزين البيانات في قاعدة بيانات MySQL وتتم معالجة الصفحات الديناميكية بواسطة PHP. في هذا الدليل، سوف نتعرف على كيفية تثبيت حزمة LEMP في خادم أبونتو 14.04. و سنقوم بشرح كيفية الحصول على بقية المكونات وتشغيلها.

#المتطلبات الأساسية قبل أن تبدأ مع هذا الدليل، يجب أن يكون لديك حساب مستخدم منفصل غير جذر non-root معد مسبقا على الخادم الخاص بك. يمكنك تعلم كيفية القيام بذلك من خلال استكمال الخطوات 1-4 في إعداد الخادم الأولي لأوبونتو 14.04

بعد ذلك سجل الدخول إلى الخادم الخاص بك مع هذا المستخدم. بعدها ستصبح جاهزا لبدء الخطوات الموضحة في هذا الدليل.

#الخطوة الأولى - تثبيت خادم ويب Nginx من أجل عرض صفحات الويب لزوار موقعنا سنستخدم خادم Nginx وهو خادم ويب حديث ومتطور.

ولأن هذا البرنامج يمكنك الحصول عليه من مستودعات أبونتو الافتراضية فهذا يعني أننا يمكن استخدام أمر apt لإكمال التثبيت.

وبما أن هذه المرة الأولى التي نستخدم فيها أمر apt في هذه الدورة فإنه يجب أن نبدأ بتحديث فهرس المستودع المحلي لدينا. ثم يمكننا تثبيت الخادم بالشكل التالي:

sudo apt-get update sudo apt-get install nginx

في أوبونتو 14.04، يتم إعداد Nginx ليصبح جاهزا للعمل بعد التثبيت مباشرة.

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

إذا لم يكن لديك اسم نطاق يؤشر لخادمك و لا تعرف عنوان IP العام لخادمك يمكنك العثور عليه عن طريق كتابة أحد الأوامر التالية في سطر الأوامر:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 111.111.111.111 fe80: 601:17ff:fe61:9801
أو يمكنك استخدام هذه:
curl http://icanhazip.com 111.111.111.111
جرب أحد السطور التي ظهرت لديك في متصفح الويب، يجب أن يأخذك إلى الصفحة الافتراضية لـNginx :
http://server_domain_name_or_IP
الصفحة الافتراضية Nginx ![الصفحة الافتراضية لـ Nginx][الصفحة الافتراضية لـ Nginx]

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

#الخطوة الثانية - تثبيت MySQL لإدارة بيانات الموقع الآن لدينا خادم الويب يمكن تشغيله ، لهذا حان الوقت لتثبيت ميسكل (MySQL ) وهي نظام إدارة قواعد البيانات.وبشكل مبسط تقوم بتنظيم وتوفير إمكانية للوصول إلى قواعد البيانات حيث يقوم موقعنا بتخزين البيانات فيها. مرة أخرى، يمكننا استخدام apt للحصول وتثبيت برنامجنا. هذه المرة سنقوم أيضا بتثبيت سلسلة من الحزم الأخرى "المساعدة" التي سوف تساعدنا في التواصل بين المكونات مع بعضها البعض:

sudo apt-get install mysql-server
ملاحظة: في هذه الحالة، لا توجد حاجة لتشغيل sudo apt-get update. لأنه قمنا بتنفيذه في الأوامر أعلاه عند تثبيت Nginx. لهذا يجب أن يكون فهرس الحزم محدثا في جهاز الكمبيوتر حتى الآن. أثناء التثبيت، سوف يطلب منك الخادم الخاص بك تحديد وتأكيد كلمة مرور ميسكل للمستخدم "root". حيث أن هذا هو الحساب الإداري في ميسكل (MySQL ) الذي يمتلك امتيازات أعلى. لهذا يجب التفكير في الأمر بأنه يشبه حساب root للخادم نفسه ( والذي تعده هو مخصصا لـ MySQL فقط على كل حال). عند اكتمال التثبيت، نحن بحاجة لتشغيل بعض الأوامر إضافية للحصول على بيئة ميسكل (MySQL ) آمنة بشكل أفضل. أولا، نحن بحاجة لنخبر ميسكل (MySQL ) بأن تنشي هيكل لمجلدات قواعد البيانات حيث ستخزن معلوماتك الخاصة. يمكنك القيام بذلك عن طريق كتابة:
sudo mysql_install_db
بعد ذلك نريد تشغيل برنامج أمني بسيط من شأنه إزالة بعض الإعدادات الافتراضية الخطيرة وتأمين الوصول إلى نظام قاعدة البيانات الخاصة بنا قليلا. بدء تشغيل البرنامج النصي التفاعلي:
sudo mysql_secure_installation
سيطلب منك إدخال كلمة المرور التي قمت بتعيينها لحساب ميسكل (MySQL ). بعد ذلك، سوف يسالك إذا كنت ترغب في تغيير كلمة المرور. إذا كنت راضيا مع كلمة المرور الحالية، اكتب  "n" . بالنسبة لبقية الأسئلة، يجب عليك ببساطة ضغط على زر"ENTER" لقبول القيم الافتراضية. سيؤدي هذا إلى إزالة بعض المستخدمين و قواعد البيانات ، وتعطيل ميزة الوصول عن عن بعد لإدارة ميسكل (MySQL ) ، وكذلك تحميل هذه القواعد الجديدة بحيث ان ميسكل (MySQL ) تحترم التغييرات التي قمنا بها فورا. عند هذه النقطة، سيكون خادم قاعدة البيانات الخاصة بك جاهز للعمل والآن يمكننا المضي قدما.

#الخطوة الثالثة – تثبيت معالج PHP
الآن لدينا Nginx لخدمة صفحاتنا و MySQL لتخزين وإدارة البيانات، ولكن ما زلنا بحاجة إلى شيء لتوصيل هذاين الجزأين معا وتوليد المحتوى الديناميكي. يمكننا استخدام PHP لهذا الغرض.

وبما أن Nginx لا يحتوي على قدرة لمعالجة PHP بشكل أصلي مثل بعض خوادم الويب الأخرى، سنحتاج إلى تثبيت معالج php5-fpm والتي ترمز إلى "مدير عملية fastCGI". و سنخبر خادم Nginx بأن يمرر طلبات PHP إلى هذا البرنامج لمعالجتها. يمكننا تثبيت هذه الوحدة وسنقوم أيضا بتثبيت حزم مساعدة إضافية من شأنها أن تسمح PHP بالتواصل مع قاعدة البيانات في الخلفية. ستقوم عملية التثبيت بجلب ملفات PHP الأساسية اللازمة. للقيام بذلك يجب كتابة:

sudo apt-get install php5-fpm php5-mysql
إعداد معالج PHP

لدينا الآن عناصر PHP مثبتة، ولكن نحن بحاجة إلى إجراء تغيير طفيف لجعل الإعدادات لدينا أكثر أمنا.

افتح ملف إعدادات php5-fpm مع امتيازات root:

sudo nano /etc/php5/fpm/php.ini

ما نتطلع إليه في هذا الملف هو المتغير الذي يحدد cgi.fix_pathinfo. حيث ستجدده محددا كتعليق بواسطة (;) ومضبوط إلى "1" بشكل افتراضي.

هذا المتغير غير آمن للغاية لأنه يخبر PHP بأن تشغل أقرب (في التسمية) ملف تجده إذا لم تجد ملف PHP المتطابق. هذا في الأساس من شأنه أن يسمح للمستخدمين بصياغة طلبات PHP بطريقة تسمح لهم بتنفيذ البرامج النصية التي لا ينبغي السماح لهم بتنفيذها.

وألان سوف نقوم بتغيير uncommenting في السطر وكتابة "0" مثل هذا:

cgi.fix_pathinfo=0

احفظ وأغلق الملف عند الانتهاء.

نحن بحاجة فقط إلى إعادة تشغيل معالج PHP بكتابة:

sudo service php5-fpm restart

وهذا سيفعّل التغيير الجديد.

#الخطوة الرابعة - تكوين Nginx لاستخدام معالج PHP الآن، لدينا كل المكونات المطلوبة مثبتة لكن الإعداد الوحيد الذي ما يزال عليك القيام به هو إخبار Nginx بأن يستخدم معالج PHP للمحتوى الديناميكي.

ونحن نفعل ذلك على مستوى كتلة الخادم (كتلة الخادم تشابه virtual hosts في أباتشي). من أجل فتح كتلة إعدادات Nginx :

sudo nano /etc/nginx/sites-available/default
حاليا، بعد إزالة التعليقات من ملف كتلة الخادم الافتراضي Nginx يبدو مثل هذا:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on;
    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}
نحن بحاجة إلى إجراء بعض التغييرات على هذا الملف لموقعنا.
  • -أولا، نحن بحاجة إلى إضافة خيارindex.php كقيمة الأولى من التوجيه index للسماح بتشغيل ملفات index PHP عند طلب الدليل.
  • كذلك نحتاج لتعديل التوجيه server_name للإشارة إلى اسم نطاق الخادم أو عنوان IP العام.
  • يتضمن ملف التكوين الفعلي على إعدادات لمعالجة الطلبات عند وقوع خطأ. سنقوم بإزالة التعليق لتفعيل هذه الإعدادات.
  • ولتجهيز PHP الفعلي، سوف نحتاج إلى إزالة علامات التعليق من قسم آخر.و سنحتاج أيضا إلى إضافة توجيه try_files للتأكد من Nginx لا يمرر طلبات سيئة لمعالج PHP لدينا.

التغييرات التي نحتاجها ستكون على النحو التالي:

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on;
    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name server_domain_name_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

عندما تقوم بهذه التغييرات المذكورة أعلاه، يمكنك حفظ وإغلاق الملف.

قم بإعادة تشغيل Nginx لتفعيل التغييرات الجديدة:

sudo service nginx restart

#الخطوة الخامسة - إنشاء ملف PHP لاختبار الإعدادات ينبغي الآن أن تكون حزمة LEMP جاهزة. ولكن يجب عمل اختبار للتأكد من أن Nginx يمكنه تسليم ملفات .php بشكل صحيح لمعالج PHP.

يمكننا القيام بذلك عن طريق إنشاء ملف PHP في مجلد الجذرroot (المحدد في كتلة الإعدادات) لدينا.لهذا ينبغي فتح ملف جديد باسم info.php ضمن مجلد الجذر الخاص بك في محرر النصوص الخاص بك:

sudo nano /usr/share/nginx/html/info.php

ويمكننا أن نكتب هذا في ملف جديد. حيث أن هذا رمز PHP صالح يرجع بمعلومات منسقه حول خادمنا:

<?php phpinfo(); ?>

عند الانتهاء، احفظ وأغلق الملف.

والآن، يمكنك زيارة هذه الصفحة في متصفح الويب الخاص بك عن طريق زيارة اسم نطاق الخادم الخاص بك أو عنوان IP العام تليها/info.php:

http://server_domain_name_or_IP/info.php
ويجب أن تشاهد صفحة الويب التي تم إنشاؤها بواسطة PHP بمعلومات عن الخادم الخاص بك:

صفحة معلومات php

إذا رأيت الصفحة التي تبدو مثل هذه، فإنك قد قمت بإعداد وتجهيز PHP مع Nginx بنجاح.

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

الآن، قم بإزالة الملف عن طريق كتابة:

sudo rm /usr/share/nginx/html/info.php

#خاتمة الآن أصبحت تمتلك حزمة LEMP جاهزة على خادم أوبونتو 14.04 وهذا يعطيك أساسا مرنا جدا لخدمة محتوى الويب للزائرين.

هذه المقالة مترجمة من الانجليزية.