LAMP , طريقة تنصيب Apache وملحقاته على لينكس

LAMP , طريقة تنصيب Apache وملحقاته على لينكس

شارك هذا المقال:



عند قيامك بشراء او استئجار سيرفر جديد , أو حتى تنصيب لينكس كنظام تشغيل اساسي على جهازك , فلا تكون كل البرامج جاهزة لبدء العمل عليها بل عليك تنصيب بعض البرامج وتجهيز بيئة عمل مناسبة لك , سنتحدث اليوم عن طريقة انشاء بيئة عمل خاصة بمبرمجي الويب , سنجيب في هذا المقال عن سؤال : كيف يمكنني تنصيب سيرفر محلي LAMP على جهاز يعمل بنظام تشغيل لينكس.

و نؤكد لك انها مهمة سهلة طالما فهمت المبدأ الذي يعمل به لينكس , فكل ما عليك فعله هو تنصيب بعض الحزم وتفعيلها في نظام التشغيل , هذا كل ما عليك فعله.

يمكنك اتباع هذا المقال لتنصيب Apache على جهازك الخاص , او على سيرفر فعلي متصل بالانترنت ك Digital Ocean و Linode وغيرها

ما هو السيرفر المحلي LAMP ؟

LAMP هو البرنامج الذي سنقوم بتنصيبه , فعلياً ما سنقوم به هو تنصيب عدة حزم وهذه الحزم عند جمعها معاً يصبح لدينا برنامج يسمى LAMP , و هو برنامج بناء سيرفر محلي يعمل على جهازك , وترمز الحروف الى Linux Apache MySQL PHP .

1- Linux لينكس هو نظام التشغيل الذي يعمل عليه البرنامج

2- Apache اباتشي هو خادم (سيرفر) ويب

3- MySQL ماي اس كيو ال هو محرك قواعد بيانات

4 PHP بي اتش بي , لغة برمجة لمواقع الويب تعد الأشهر و الأكثر استخداماً

المتطلبات الأساسية لتشغيل برنامج LAMP

متطلبات بسيطة جداً , الخطوات القادمة لا تعمل الا على نظام تشغيل لينكس , وسنأخد توزيعة أبونتو كمثال للعمل عليه , ان كنت غير متأكد من التوزيعة الأمثل لك يمكنك قراءة هذا المقال : ما هي توزيعة لينكس الأمثل للمبرمجين ؟ اعرف الاجابة , اذاً يعتبر الطلب الوحيد هنا هو توافر نظام تشغيل لينكس ويفضل أن يكون توزيعة أبونتو أو اي من التوزيعات المبنية عليه ليمكنك المتابعة مع المقال والتجربة بشكل مباشر , بالنسبة للمتطلبات أﻷخرى كالرام والمعالج وغيره فالبرنامج يعمل على جميع الامكانيات.

1- تنصيب أباتشي وتحديث جدار الحماية

تنصيب أباتشي Apache

كما ذكرنا , اباتشي هو سيرفر ويب مشهور وقديم جداً , يتمتع بتوثيق جيد للمبتدئين ويمكن الاعتماد عليه في كل المشاريع ومختلف أنواعها وأحجامها ( توثيق أباتشي ) , ولتنصيب أباتشي علينا ادخال الأمر التالي في سطر الأوامر Terminal (في لينكس , يمكن الضغط على ctrl + alt + t للوصول السريع ل Terminal).

sudo apt update
sudo apt-get install apache2
 

الأمر الأول سيقوم بتحديث الحزم في نظام التشغيل , أما الأمر الثاني فسيقوم بتنصيب سيرفر أباتشي Apache على نظام التشغيل. وبما أنك استخدمت أمر sudo فسيتم تنفيذ العملية بصلاحيات المستخدم الجذر root , لذا سيطلب منك ادخال كلمة المرور , قم بادخالها و اضغط enter للمتابعة.

بمجرد ادخال كلمة المرور , سيظهر لك نافذة تأكيد قبل تنصيب الحزمة توضح لك حجم الحزمة وبعض المعلومات عنها ويطلب منك تأكيد التنصيب , لتأكيد التنصيب اكتب y ثم اضغط على enter.

تحديث جدار الحماية

الآن سنقوم بتحديث بعض المعلومات في جدار الحماية للسماح لأباتشي Apache بارسال البيانات للمستخدمين عبر شبكة الويب , يجب علينا تنفيذ هذه الخطوة باعتبار ان لينكس لديه هوس مفرط بالحماية .

أولاً سنتأكد من أن تنصيب أباتشي تم بشكل صحيح وأيضاً تم اضافة ملف شخصي له في جدار الحماية , نفعل ذلك عبر الأمر التالي في سطر الأوامر :

sudo ufw app list
 

النتيجة المتوقعة :

#Output
 Apache
 Apache Full
 Apache Secure
 OpenSSH
 

بعد ان تأكدنا من صحة التنصيب , سنقوم بالسماح باتصالات HTTP / HTTPS للوصول الى هذا الملف الشخصي

sudo ufw allow in "Apache Full"
 

هنئياً لك , تم تنصيب أباتشي الآن بنجاح على جهازك , يمكنك التأكد من صحة التنصيب اما عبر الدخول الى http://localhsot او عنوان الانترنت ip الخاص بالسيرفر الخاص بك ان كنت تنفذ هذه الخطوات في سيرفر فعلي وليس فقط على جهازك الخاص , وسنجد النتيجة التالية:

ان رأيت هذه الصفحة , فهذا يعني أن السيرفر تم تنصيبه بشكل سليم وتم تحديث جدار الحماية بنجاح , مما يكمل الخطوة الأولى وينقلنا للخطوة الثانية , تنصيب MySQL

2- تنصيب MySQL

الآن بعد ان انتهينا من تنصيب سيرفر أباتشي , سنبدأ الآن في تنصيب محرك قواعد البيانات , و الفكرة هنا ببساطة هي اتاحة الامكانية لتنصيب قواعد البيانات على جهازك عبر MySQL.

لتنصيب MySQL , أدخل الأمر التالي في سطر الأوامر Terminal :

sudo apt-get install mysql-server
 

ولاحظ هذه المرة لن نحتاج الى تحديث الحزم عبر أمر sudo apt update لأننا قمنا بذلك قبل فترة وجيزة عند تنصيب سيرفر أباتشي .

تماماً كما الأمر السابق , قد يطلب منك كلمة المرور بعد ادخالها سيظهر لك طلب تأكيد التنصيب , قم بكتابة y في سطر الأوامر ثم enter وسيبدأ التنصيب.

وبعد أن يتم تنصيب MySQL , سنقوم بتشغيل أمر للحماية وهو مضمن في حزمة تنصيب MySQL , الهدف منه هو الغاء بعض الاعدادت الأساسية الخطيرة وتجهيز بيئة العمل , في سطر الأوامر أكتب الأمر التالي :

sudo mysql_secure_installation
 

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

بعد أن قمنا بكتابة n , سيطلب منا الآن ادخال كلمة مرور للمستخدم root في MySQL , تأكد من ادخال كلمة مرور قوية وفريدة من نوعها , لا تترك هذا الحقل فارغ أبداً.

سيطلب منك كلمة المرور , ومن ثم تأكيد كلمة المرور مرة أخرى , سيطرح عليك الآن سلسة من الأسئلة عليك بكتابة y ثم enter عليها جميعاً واتمام عملية التنصيب.

سنقوم الآن بتعديل بعض المعلومات والقواعد في MySQL لتسهيل عملية تسجيل الدخول , في MySQL 5.7 وما يليها من اصدارات لا يتم استخدام كلمة المرور لتسجيل الدخول بل بتم استخدام auth_socket وهي اضافة تعطي الكثير من الحماية ولها استخدامات عدة , لكن تصبح الامور معقدة خاصة عندما نريد السماح لبرامج خارجية بتسجيل الدخول الى قاعدة البيانات ك phpMyAdmin مثلاً , لذلك سنقوم الآن بتعديل هذه النقطة وتحويلها من auth_socket الى mysql_native_password كي يصبح تسجيل الدخول أبسط , اسم مستخدم وكلمة مرور.

في سطر الأوامر , نكتب الأمر التالي :

sudo mysql
#in some cases you may need to write sudo mysql -u username -p and then will ask you for password
 

الان , سنتعرف على أي خاصية تستخدم لتسجيل الدخول عبر كتابة الأمر التالي :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
 

النتيجة المتوقعة :

#Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

كما تلاحظ , للمستخدم root يوجد اضافة تسمى auth_socket , الآن سنقوم بتعديل هذا الى طريقة تسجيل الدخول العادية لتسهيل الأمور لاحقاً , يمكننا عمل ذلك عبر أمر ALTER USER في سطر الأوامر , تأكد من كتالة كلمة مرور قوية بدلاً من 'password'

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
 

ثم سنقوم بتحديث الصلاحيات عبر أمر FLUSH PRIVILEGES

mysql> FLUSH PRIVLEGES
 

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

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
 

النتيجة المتوقعة :

Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

كما تشاهد هنا فالآن المستخدم root يستخدم طريقة تسجيل دخول mysql_native_password , ان كان هذا ما تشاهده على شاشتك أيضاً فامكانك الآن الخروج من MySQL عبر الأمر التالي:

mysql> exit
 

3- تنصيب PHP

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

sudo apt install php libapache2-mod-php php-mysql
 

الأمر السابق سيقوم بتنصيب بعض الحزم الأساسية لتشغيل php و كالعادة سيطلب منك كلمة المرور والموافقة على التنصيب , اضغط y ثم enter للموافقة على التنصيب.

يفترض أن هذا الأمر قام بتنصيب php على جهازك بدون مشاكل , وسنختبر هذا خلال دقيقة , لكن قبل ذلك يجب توضيح نقطة صغيرة لكن مهمة و أساسية , سيرفر اباتشي عند ارسال اي أمر له , يقوم أولاً بالبحث عن ملف بأسم index.html , في معظم الاحوال لن تريد ذلك عند العمل على مشروع php لذا سنقوم بتعديل أمور بسيطة في اعدادت اباتشي لتفضيل ملفات index.php على index.html.

لعمل ذلك علينا تعديل ملف dir.conf من اعدادت أباتشي , اكتب في سطر الأوامر :

sudo nano /etc/apache2/mods-enabled/dir.conf
 

النتيجة المتوقعة :

#Output
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
 

كل ما عليك فعله هو تغيير هذا الجزء من الملف الى التالي :

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
 

لحفظ الملف اضغط على ctrl + x ومن ثم y ثم enter.

الآن , سنقوم باعادة تشغيل اباتشي لتصبح الاعدادت الجديدة فعالة , يمكن عمل ذلك عبر الأمر التالي في سطر الأوامر :

sudo systemctl restart apache2
 

بعد ذلك , وللتأكد فقط من حالة أباتشي قم بكتابة الأمر التالي :

sudo systemctl status apache2
 

النتيجة المتوقعة :

#Output
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago #Apache is Active !
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start
 

اضغط على Q للخروج من هذه الشاشة.

ملاحظات حول تنصيب php

تأتي php بعدد كبير من الحزم , لم نقم الآن بتنصيبها كلها , ان كنت من مستخدمي ويندوز وتعاملت سابقاً مع برنامج XAMPP فأنت تعلم ان هذا البرنامج يقوم بتنصيب جميع حزم PHP تلقائياً , لكن في لينكس فعليك تنصيب ما تحتاجه يدوياً , يمكن البحث عن حزم PHP المتوفرة عبر الأمر التالي واختيار ما تحتاجه :

apt search php- | less
 

يمكنك التنقل بالأسهم والخروج من القائمة باستخدام Q

ستشاهد جميع الحزم أمامك مع شرح مبسط لها , لمعرفة المزيد عن الحزمة استخدم الأمر التالي (سنأخذ حزمة php-cli كمثال ) :

apt show php-cli
 

النتيجة المتوقعة :

#Output
Description: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Ubuntu's default
 PHP version (currently 7.2).


ان كانت هذه الحزمة تناسب احتياجك , يمكنك تنصيبها عبر أمر install :

sudo apt install php-cli
#You can install multiple packages like this :
sudo apt install php-cli package_name2 packge_name3 #... etc

4- اختبار PHP على السيرفر

لقد قمنا بنجاح باتمام تنصيب السيرفر , سنقوم الآن بعمل بعض الاختبارات و توضيح بعض النقاط.

يمكنك وضع مشاريعك في مجلد html

يعمل هذا المجلد كمجلد htdocs في ويندوز عند العمل مع برنامج XAMPP , والمسار الكامل له هو : /var/www/html

يمكنك انشاء مشروع جديد عبر انشاء مجلد هنا , ليكن باسم test او اي اسم كان , وسنعمل في سطر الاوامر لكي لا نواجه اي مشاكل بخصوص الصلاحيات , في سطر الأوامر اكتب الأوامر التالية:

#Navigate to html Folder
cd /var/www/html
#Create New Folder
sudo mkdir test
#Jump in
cd test
#create a .php file for test 
sudo nano index.php
 

اذاً , قمنا بانشاء مجلد جديد في مجلد html حيث جميع مشاريعنا , يمكنن الوصول للمجلد الجديد عبر localhost/test او أياً كان اسم المجلد الذي قمت بانشائه , الان بعد أن قمنا بانشاء ملف index.php سنقوم بكتابة كود بسيط في للاختبار , يمكنك ذلك عبر محرر nano في سطر الأوامر او أي محرر أكواد آخر , لكن تأكد من اعطاء صلاحيات القراءة و الكتابة للملف قبل فتحه خارج سطر الأوامر , سنكتب في الملف مثلاً :

<?php echo phpinfo(); ?> 
 

ستقوم هذه الدالة بعرض معلومات ملف php.ini , وبكل الأحوال الهدف منها هو التأكد من أن السيرفر ولغة php يعملان بشكل سليم .

الآن بعد ان قمت باضافة الكود السابق الى ملف index.php , سنفتح الملف في المتصفح لنشاهد ما الذي سيظهر

النتيجة المتوقعة :

اذاً في حال ظهور هذه الشاشة فكل شيئ يعمل بشكل سليم ! من المهم أن نذكر هنا ان كنت تعمل في سيرفر متصل بالانترنت , اي سيرفر فعلي وليس فقط سيرفر تجريبي في جهازك فتأكد من ازالة الملف السابق لما فيه من خطر أمني .

في النهاية ...

نامل أن المقال كان واضحاً بما يكفي لمساعدتك على البدء في تطوير مشروعك على لينكس , يعد لينكس باتفاق معظم المطورين أفضل بيئة عمل متوفرة , وأعتقد انه من الرائع دائماً تعلم شيئ جديد !



ما رأيك في هذا المقال؟

كيف تقييم نوعية المحتوى في نقرة؟

5 4 3 2 1