أستمع الى المقال

في هذا المقال سنشرح تنصيب مخّدم ويب محلي على أبونتو لينكس UBUNTU 20.10 باستخدام الحزمة LAMP.

المتطلبات:

  • حاسب مجهّز بنظام تشغيل لينكس(UBUNTU LINUX).
  • معرفة، بأوامر لينكس البسيطة ,وصول لسطر الأوامر terminal وصلاحيات المدير عبر الأمر sudo .
  • اتصال بالأنترنت.

ماهو مخدّم الويب Web Server:

تُقسم لغات وتقنيات برمجة التطبيقات ومواقع الإنترنت إلى قسمين، الأول يتم تنفيذه على حاسب المستخدم Client Side مثل HTML ,Javascript والثاني يتم تنفيذه جزئياً أو كُليّاً على مُخدّم Server الموقع وهو يُعرف بـ Server Side. لكن المستخدم بإمكانه تنفيذ الأكواد البرمجية التي تتطلب التنفيذ على المُخدّم المكتوبة بلغات مثل Php أو Python أو Perl أو Rupy مثلا من خلال مُخدّم الويب الذي يوجد على جهاز محلي (localhost) أو جهاز بعيد على الشبكة عبر نافذه المتصفّح.

تمتلك تطبيقات الويب حصّة متزايده من حصّة البرمجيات في كافة المجالات إلى جانب برامج سطح المكتب ,وفي العَقد الأخير تزايد تحوّل العديد من الشركات والمطوّرين من برامج سطح المكتب إلى تطبيقات الويب التي تؤدي ذات الوظيفة.
وعلى عكس تطبيقات سطح المكتب التّقليدية، التي يتم تخصيصها وتشغيلها من قِبل نظام التّشغيل الخاص ، يكفي الوصول إلى تطبيقات الويب من خلال المتصفّح, بغض النّظر عن نظام التشغيل أو المنصّة(الطرفية)التي يتفاعل بها المستخدم مع التّطبيق.وهذا يعني من وجهة نظر المطوّر أن يكتب برنامجه ليُنفّذه مخدّم الويب دون اهتمام بمنصّة نظام التّشغيل, و يعني للمستخدم انه سيحصل على تطبيق سيعمل بمجرد وجود متصفّح على جهازه بغض النّظر عن نظام التّشغيل والخصائِص الأخرى.

في هذا المقال سنشرح إعداد مُخدّم ويب محلي على توزيعة Ubuntu , يتيح المُخدّم المحلي اختبار التطبيقات قبل إرسالها لمُخدّم على الشبكة أو الإنترنت ,في الحقيقة أصبحت هناك تطبيقات كثيره بديلة لبرامج سطح المكتب يمكن أن تعمل وتستخدم على مُخدّم محلي أو مُخدّم أونلاين حسب حاجة المُستَخدم (مثال برامج محاسبة مستودعات , نقاط بيع ,محرّرات نصوص , الخ ..).

يمكن نظريا تثبيت مُخدّم محلي على أيّ حاسب ويندوز، لينكس و ماك , المكونات الأكثر شعبيه لتكوين مُخدّم هي مجموعة: Apache, MysQL(MariaDB), PHP, Perl ,توجد العديد من الحِزم الجاهزة والمجانية التي تُساعد بتنصيب وإعداد تلك المكوّنات كمُخدّم محلي, أو مُخدّم على الشبكة مثل XAMPP, MAMP بالإضافة إلى WAMP .


وأمّا في لينكس تتوفّر الأداة “LAMP” اختصار لـ Linux, Apache, MysQL(MariaDB),PHP حزمة برمجية تكوّن ما ندعوه مُخدّم ويب, يمكن تنصيبها محلّياً على حاسب محلي, أو على الشبكة على حاسبٍ بعيد.

سنشرح هنا تركيب LAMP يدويا على توزيعة أبونتو لينكس (UBUNTU 20.10).سنسرد طريقتين لتنصيب الحزمة في Ubuntu:

الطريقة الأولى: أداة tasksel.

tasksel هي أداة توفّر تنصيب عدّة حِزمٍ خاصة بديبيان او ابونتو لينكس بشكل سريع ,من بينها تنصيب مُخدّم محلي LAMP server أو بيئة سطح مكتب مختلفه الخ ..

$ sudo tasksel

سنقوم باستخدام أداة tasksel لتنصيب حِزمة LAMP بإعدادات افتراضية (مُخدّم محلي), عبر سَطرِ أوامر واحد.

بدايةً يجب تنصيب أداة tasksel من خلال الأمر التّاليفي حالَ عدمِ تنصيبها سابقاً :

$ sudo apt-get install tasksel

الآن سنستخدم ألأداة tasksel وتنصيب LAMP عبر سَطر الأوامر التالي:

$ sudo tasksel install lamp-server
install tasksel  lamp-server
Install tasksel

بعد اكتمال التّحميل سيُطلَب مِنك إدخال كلمة مرور لقواعد البيانات ,يمكنك إدخالُ كلمة المرور أو تركها فارغه حالياً .
بأي حال إذا لم تُدخِل كلمة المرور سيكون علينا تحديد كلمة مرور لاحقاً من خلال الأمر التالي:

 $ sudo mysql_secure_installation

يُفترض أن يكون LAMP بإعدادات افتراضيه قد أصبح جاهزاً لديك .


لاختبار ذلك على سيرفر –مخدم- محلي بإعدادات افتراضية أُدخل في المتصفح: localhost or 127.0.0.1 ,يجب أن تشاهد صفحة مشابهه للتالي:

Apache2 Ubuntu Default Page

رغم سهولةِ استخدام الأداة tasksel ,إلا أنّها ليست الخيار المفضّل للمطوّرين ,تتطلب بعض تطبيقات الويب تخصيصاً أكثر للمُخدّم ,

كمثال : قد نتطلب إصداراً محدّداً من PHP غير الافتراضي ,أو تمكين مكتبة محدّدة من مكتباتها لا يتم تركيبها افتراضيا ,ليعمل تطبيق ما , لهذا سنشرح هنا عملية التّنصيب بشكل آخر في الخطوات التالية.

الطريقة 2: تنصيب يدوي أكثر تفصيلاً:

الخطوة1:

لنبدأ من سطر الأوامر التالي :

$ sudo apt update
$ sudo apt install apache2 php-mysql libapache2-mod-php mysql-server

بهذه المرحلة نظرياً , تكون حزمة LAMP اكتمل تنصيبها بإعدادات مكوّناتها الافتراضية .


لنقم ببعض التخصيص ,في سطور الأوامر السابقة , لم نحدّد رقم أصدار PHP ,هكذا سيتم الاعتماد على القيمة الافتراضية الموافقة لرقم توزيعة UBUNTU على جهازك , مثلاً سنحصل على php 7.4 على UBUNTU 20.10 ,بينما سنحصل على php 8.x على UBUNTU 21.10 .

لو أردنا تخصيصاً محدّداً, لنقل أني أردت تحديداً إصدار php 7.4 (قد يكون لدي تطبيق ويب لا يدعم الإصدارات الأحدث بعد مثلا) تحديداً بغض النظر عن التوزيعة ,وأردتُ معها مكتبات محدّدة مثلا: php-gd , php-intl , عندها سيكون سطر التعليمة التالي مناسبا لتنصيب php7.4 وبعض المكتبات المحددة باختيارنا:

$ sudo apt install php7.4 php7.4-mysql php-common php7.4-cli php7.4-json php7.4-common php7.4-opcache libapache2-mod-php7.4 php-gd php-intl

الخطوة 2:

لتشغيل خدمات LAMP أوتوماتيكياً في كل مرّة تقوم بتشغيل لينكس ubuntu فيها,نحتاج لتفعيل خدمتي Apache ,MySQL في systemd (ضمن نواة النظام) عبر التالي :

$ sudo systemctl enable --now mysql
$ sudo systemctl enable --now apache2

الخطوة 3:

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

$ sudo mysql_secure_installation
اختيار كلمة مرور قاعدة البيانات ومستوى صعوبتها

لنقم باختبار php عبر إنشاء ملف phpinfo.php في المسار /var/www/html بالأمر التالي :

$ echo '<?php phpinfo(); ?>' | sudo tee -a /var/www/html/phpinfo.php > /dev/null

لنجرّب تصفح localhost أو 127.0.0.1 مع إضافة أسم الملف phpinfo.php :

phpinfo.php

هنا يمكننا اعتبار تنصيب LAMP مُكتملاً.

اختبار قاعدة البيانات

سنقوم بإنشاء أسم مستخدم وقاعدة بيانات جديده , ونربط بينهما .

$ sudo mysql
mysql> CREATE DATABASE exvar;
mysql> CREATE USER `admin`@`localhost` IDENTIFIED WITH mysql_native_password BY 'ABC##13cd';
mysql> GRANT ALL ON exvar.* TO `admin`@`localhost`;
mysql> FLUSH PRIVILEGES;
mysql> exit
creat database user and pass
إنشاء قاعدة بيانات واسم مستخدم وألحاقه بها

هكذا تم إنشاء قاعدة بيانات جديدة exvar مع اسم مستخدم جديد admin وكلمة مرور ,وتم منح المستخدم صلاحيات كامله مع قاعدة البيانات exvar
تذكّر أن سطور الأوامر حساسة لحالة الأحرف , وإن كلمة المرور يجب أن تخضع للشروط التي تم فرضها عند إعداد MySQL

لنقم الآن باختبار ذلك عبر إنشاء ملف باسم mysql-test.php في المسار/var/www/html/mysql-test.php

ونضيف الكود التالي عَبر محرّر النصوص vi أو Gedit طبعا بصلاحيات المدير :

$ sudo gedit
<?php $conn = new mysqli("localhost", "admin", "ABC##13cd", "exvar"); if ($conn->connect_error) { die("ERROR: Unable to connect: " . $conn->connect_error); } echo 'Connected to the database.
'; $conn->close(); ?>
code mysql-test.php

الآن لنختبر ما سبق, يجب أن تظهر النتيجة في المتصفح كالتالي:

كلُّ شيءٍ يعمل بشكل صحيح .

إعداد جدار الحماية للنظام :

في حال استخدام ssh للوصول للمخدّم نحتاج لإعداد جدار الحماية لفتح المنفذ 22 , 443 و 80 كالتالي:

$ sudo ufw allow ssh
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw enable

بهذه المرحلة نكون أكملنا تنصيب وإعداد حزمة LAMP.

ملحق:

  • سطور الأوامر التالية توجز تنصيب عناصر LAMP يدوياً :
$ sudo apt install apache2
$ sudo systemctl status apache2
$ sudo apt install php7.4 php7.4-mysql php-common php7.4-cli php7.4-json php7.4-common php7.4-opcache libapache2-mod-php7.4
$ sudo systemctl restart apache2
$ sudo apt install mariadb-server mariadb-client
$ sudo systemctl status mariadb
$ sudo mysql_secure_installation
  • ذكرنا أن الأداة LAMP هي اختصار لـ Linux,Apache,MysQL(MariaDB),PHP , تتوفر عدة أدوات مشابهه على أنظمة تشغيل اخزي , WAMP لويندوز و MAMP لأجهزة آبل ماكنتوش.
  • تتوفّر حزمة XAMPP كخيار آخر جيد لتنصيب مُخدّم ويب محلي أو على الشبكة ,تدعم أنطمه تشغيل Linux,Windows,MacOS , تتميز بخيار تنصيب لغة البرمجه Perl مع php و MysQL .
  • يعتبر Apache مُخدّم ويب الأكثر شعبية , لكن تتوفر عدّة مخدمات أُخرى تقوم بذات الوظيفة مثل Lighttpd
    أو nginx وغيرهم , في ويندوز يعتبر مُخدّم IIS شائعا أيضأ .

انتهى.

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.