تثبيت LAMP (Linux، Apache، MySQL/MariaDB، و PHP/PhpMyAdmin) في Arch Linux

تقدم Arch Linux بيئة نظام مرنة وقاطعة حديثة وهي حلاً قويًا يتناسب تمامًا مع تطوير تطبيقات الويب على أنظمة صغيرة غير حرجة بسبب حقيقة أنها مفتوحة المصدر تمامًا وتوفر آخر الإصدارات على النوى والبرمجيات الويب للخوادم وقواعد البيانات.

Install LAMP in Arch Linux

الهدف الرئيسي من هذا البرنامج التعليمي هو أن يرشدك خطوة بخطوة من خلال تعليمات كاملة من شأنها في النهاية أن تؤدي إلى تثبيت أحد تركيبات البرمجيات الأكثر استخدامًا في تطوير الويب: LAMP (Linux، Apache، MySQL/MariaDB، و PHP/PhpMyAdmin) وسيقدم لك بعض الميزات الجيدة (نصوص Bash السريعة والوسخة) التي ليست متوفرة في نظام Arch Linux، ولكن يمكن أن تبسط العمل في إنشاء العديد من Virtual Hosts، توليد شهادات SSL و مفاتيح المطلوبة للمعاملات HTTS الآمنة.

المتطلبات

  1. التثبيت السابق لـ نظام Arch Linux – تخطي الجزء الأخير حول DHCP.
  2. التثبيت السابق لـ LEMP على Arch Linux – فقط الجزء المتعلق بتكوين عنوان IP ثابت والوصول عن بعد عبر SSH.

الخطوة 1: تثبيت البرمجيات الأساسية لـ LAMP

1. بعد تثبيت النظام الأساسي بعنوان IP ثابت والوصول البعيد إلى النظام باستخدام SSH، قم بترقية جهاز Arch Linux الخاص بك باستخدام أداة pacman.

$ sudo pacman -Syu

٢. عند الانتهاء من عملية الترقية، قم بتثبيت LAMP تحت كل نواقصه، أولاً قم بتثبيت مخدم ويب Apache وقم ببدء/التحقق من كل عملية خادم.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

٣. قم بتثبيت PHP لغة برمجة الخادم الديناميكية ووحدتها لـ Apache.

$ sudo pacman -S php php-apache

٤. في الخطوة الأخيرة، قم بتثبيت قاعدة بيانات MySQL، اختر 1 (MariaDB) نسخة مجتمعية لقاعدة البيانات ثم شغل وتحقق من حالة الخادم.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld
Install MySQL Database
Start MySQL Database

الآن لديك برنامج LAMP الأساسي مثبت ومشغل بتكوينات افتراضية حتى الآن.

الخطوة ٢: تأمين قاعدة بيانات MySQL

٥. الخطوة التالية هي تأمين قاعدة بيانات MySQL عن طريق تعيين كلمة مرور لحساب root، إزالة حسابات المستخدمين المجهولين، إزالة قاعدة بيانات الاختبار ومنع تسجيل الدخول عن بُعد لمستخدم root (اضغط [Enter] لكلمة مرور حساب root الحالية وأجب بـ Yes على جميع الأسئلة الأمنية).

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

٦. تحقق من توصيل قاعدة بيانات MySQL بتشغيل الأمر التالي ثم اغادر واجهة القاعدة بـ quit أو exit.

$ mysql -u root -p
Verify MySQL Database Connectivity

الخطوة ٣: تعديل ملف تكوين Apache الرئيسي

٧. تعديلات التكوين التالية تتعلق بمعظمها بـ مخدم ويب Apache لتوفير واجهة ديناميكية لـ استضافة افتراضية بلغة برمجة PHP، مضيفات افتراضية بـ SSL أو بدون SSL ويمكن تنفيذها عن طريق تعديل ملف خدمة httpd.

افتح أولاً ملف تكوين Apache الرئيسي بمحرر النص المفضل لديك.

$ sudo nano /etc/httpd/conf/httpd.conf

في الجزء الأسفل من الملف، أضف السطرين التاليين.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

يكون دور تصريحات Include هنا هو إعلام أباتشي بأنه ابتداءً من الآن، يجب عليه قراءة تكوينات إضافية من جميع الملفات الموجودة في /etc/httpd/conf/sites-enabled/ (للـ استضافة افتراضية) و /etc/httpd/conf/mods-enabled/ (للـ تكوينات الخادم المُفعّلة) المسارات النظامية التي تنتهي بامتداد .conf.

8. بعد أن يتم تعليم أباتشي بهاتين التوجيهتين، قم بإنشاء الدلائل النظامية الضرورية باستخدام الأوامر التالية.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

المسار sites-available يحتوي على جميع ملفات تكوينات الاستضافة الافتراضية التي لم يتم تنشيطها على أباتشي، لكن سيستخدم البرنامج النصي القادم للدمج وتفعيل المواقع الإلكترونية التي توجد هناك.

الخطوة 4: إنشاء أوامر أباتشي a2ensite و a2dissite

9. الآن حان الوقت لإنشاء سكربتات أباتشي a2ensite و a2dissite التي ستعمل كأوامر لتمكين أو تعطيل ملف تكوين الاستضافة الافتراضية. اكتب الأمر cd للرجوع إلى مسار المستخدم $HOME الخاص بك وقم بإنشاء سكربتات باش a2eniste و a2dissite باستخدام محررك المفضل.

$ sudo nano a2ensite

أضف المحتوى التالي في هذا الملف.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi
Create a2eniste Apache Script

الآن قم بإنشاء ملف سكربت باش a2dissite.

$ sudo nano a2dissite

ألصق المحتوى التالي.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi
Create a2dissite Apache Script

10. بعد إنشاء الملفات، قم بتخصيص أذونات التنفيذ وانسخها إلى دليل تنفيذي $PATH لجعلها متاحة على نطاق النظام.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Set Execute Permissions

الخطوة 5: إنشاء استضافات افتراضية في أباتشي

11. يتم توفير ملف تكوين الافتراضي لمضيف افتراضي للخادم الويب Apache على Arch Linux من خلال ملف httpd-vhosts.conf الموجود في المسار /etc/httpd/conf/extra/ ولكن إذا كان لديك نظام يستخدم العديد من المضيفين الافتراضيين قد يكون من الصعب تتبع أي موقع ويب هو مُفعل أو لا. إذا أردت تعطيل موقع ويب يجب عليك تعليق أو حذف جميع التوجيهات الخاصة به، وهذا قد يكون مهمة صعبة إذا كان نظامك يوفر العديد من المواقع الويب ولديك موقع ويب به المزيد من التوجيهات.

باستخدام مسارات sites-available و sites-enabled، يتم تبسيط العمل الخاص بـ تمكين أو تعطيل المواقع الويب وأيضًا يحفظ جميع ملفات تكوين مواقعك حتى لو كانت مفعلة أو غير مفعلة.

في الخطوة التالية سنقوم بإنشاء أول مضيف افتراضي يشير إلى مضيف محلي افتراضي بالمسار الافتراضي DocumentRoot لخدمة ملفات المواقع الويب (/srv/http.

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

أضف التوجيهات الخاصة بأباتشي هنا.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create Virtual Hosts in Apache

أهم البيانات هنا هي التوجيهات Port و ServerName التي توجه أباتشي لفتح اتصال شبكة على المنفذ 80 وإعادة توجيه جميع الاستعلامات باسم localhost لخدمة الملفات الموجودة في المسار /srv/http/.

12. بعد إنشاء ملف localhost، قم بتنشيطه ثم أعد تشغيل خادم httpd لعرض التغييرات.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

13. ثم قم بتوجيه متصفحك إلى http://localhost، إذا كنت تقوم بتشغيله من نظام Arch أو http://Arch_IP إذا كنت تستخدم نظامًا عن بعد.

Browse Apache

الخطوة 6: تمكين SSL مع الإستضافة الافتراضية على LAMP

SSL (Secure Sockets Layer) هو بروتوكول مصمم لتشفير اتصالات HTTP عبر الشبكات أو الإنترنت، مما يجعل تدفق البيانات يتم نقله عبر قناة آمنة باستخدام مفاتيح تشفير تقارنية/غير تقارنية ويتم توفيره في Arch Linux من خلال حزمة OpenSSL.

14. بشكل افتراضي ، لا يتم تمكين وحدة SSL على Apache في Arch Linux ويمكن تنشيطها عن طريق فك تعليق وحدة mod_ssl.so من ملف التكوين الرئيسي httpd.conf وملف Include httpd-ssl.conf الموجود في مسار httpd الإضافي.

ولكن لتبسيط الأمور ، سنقوم بإنشاء ملف وحدة جديد لـ SSL في مسار mods-enabled ونترك ملف تكوين Apache الرئيسي دون تغيير. أنشئ الملف التالي لوحدة SSL وأضف المحتوى التالي.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

ألصق المحتوى التالي.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Enable SSL with Virtual Hosting

15. الآن قم بإنشاء ملف استضافة افتراضي يشير إلى نفس اسم localhost ولكن باستخدام تكوينات خادم SSL هذه المرة ، وقم بتغيير اسمه قليلاً لتذكيرك بأنه يمثل localhost مع SSL.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

أضف المحتوى التالي في هذا الملف.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create SSL Virtual Host

بالإضافة إلى التوجيهات Port و ServerName ، فإن التوجيهات الأخرى المهمة هنا هي تلك التي تشير إلى ملف شهادة SSL وملف المفتاح SSL واللذان لم يتم إنشاؤهما بعد ، لذا لا تقم بإعادة تشغيل خادم Apache Web أو ستحصل على بعض الأخطاء.

16. لإنشاء ملف شهادة SSL المطلوب والمفاتيح ، قم بتثبيت حزمة OpenSSL عبر إصدار الأمر أدناه.

$ sudo pacman -S openssl

17. ثم قم بإنشاء النصي التالي باستخدام Bash الذي ينشئ ويخزن تلقائيًا كل شهادات Apache والمفاتيح الخاصة بك في مسار النظام /etc/httpd/conf/ssl/.

$ sudo nano apache_gen_ssl

أضف محتوى الملف التالي ثم احفظه واجعله قابلاً للتنفيذ.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

إذا كنت ترغب في جعل النصي متاحًا للنظام بشكل عام، قم بنسخه إلى مسار $PATH القابل للتنفيذ.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. الآن، قم بإنشاء الشهادة والمفاتيح الخاصة بك عن طريق تشغيل النصي. حدد خيارات SSL الخاصة بك ولا تنسى اسم الشهادة والاسم الشائع لتتناسب مع نطاقك الرسمي (FQDN).

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

بعد إنشاء الشهادة والمفاتيح، لا تنسى تعديل تكوينات شهادة ومفاتيح الاستضافة الافتراضية SSL الخاصة بك لتتوافق مع اسم هذه الشهادة.

19. الخطوة الأخيرة هي تنشيط استضافة الخادم الافتراضية SSL الجديدة وإعادة تشغيل الخادم لتطبيق التكوينات.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

هذا كل شيء! للتحقق من ذلك، افتح متصفح الويب وأضف عنوان IP على علامة التبويب باستخدام بروتوكول HTTPS: https://localhost أو https://system_IP.

Browse Apache over SSL

الخطوة 7: تمكين PHP على Apache

20. بشكل افتراضي، يخدم Apache فقط محتوى ملفات HTML الثابتة في Arch Linux دون دعم لغات البرمجة النصية الديناميكية. لتنشيط PHP، افتح أولاً ملف التكوين الرئيسي لـ Apache ثم ابحث وقم بإلغاء تعليق البيان الآتي LoadModule (php-apache لا يعمل مع mod_mpm_event في Arch Linux).

$ sudo nano /etc/httpd/conf/httpd.conf

استخدم [Ctrl]+[w] للبحث والتعليق في السطر التالي ليبدو مثل هذا.

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

21. ثم قم بإنشاء ملف جديد لوحدة PHP في المسار mods-enabled بالمحتوى التالي.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

أضف المحتوى التالي بالضبط (يجب استخدام mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf
Enable mod_mpm_prefork Module

22. للتحقق من الإعداد، قم بإنشاء ملف PHP بالاسم info.php في DocumnetRoot (/srv/http/) الخاص بك، ثم أعد تشغيل Apache وقم بتوجيه متصفحك إلى ملف info.php: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

هذا كل شيء! إذا كان كل شيء شبيه بالصورة أعلاه، فلديك الآن لغة برمجة خادمية ديناميكية PHP مُمكّنة على Apache ويمكنك الآن تطوير مواقع الويب باستخدام نظام إدارة المحتوى مفتوح المصدر مثل WordPress على سبيل المثال.

إذا كنت ترغب في التحقق من تكوينات بناء جملة Apache ورؤية قائمة بالوحدات المحملة دون إعادة تشغيل خدمة httpd، قم بتشغيل الأوامر التالية.

$ sudo apachectl configtest
$ sudo apachectl -M

الخطوة 8: تثبيت وتكوين PhpMyAdmin

23. إذا كنت لا تجيد سطر أوامر MySQL وترغب في الوصول البعيد البسيط إلى قاعدة بيانات MySQL عبر واجهة ويب، فإنك بحاجة إلى تثبيت حزمة PhpMyAdmin على جهازك Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. بعد تثبيت الحزم، ستحتاج إلى تمكين بعض الامتدادات PHP (mysqli.so، mcrypt.so – للمصادقة الداخلية) ويمكنك، أيضا تمكين وحدات أخرى مطلوبة لمنصات نظام إدارة المحتوى مثل openssl.so، imap.so or iconv.so الخ.

$ sudo nano /etc/php/php.ini

ابحث عن الامتدادات السابقة وقم بتعليقها.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so
Install and Configuring PhpMyAdmin

أيضًا، في نفس الملف، ابحث وحدد البيان الخاص بـ open_basedir وأضف مسار النظام PhpMyAdmin (/etc/webapps/ و /usr/share/webapps/) لضمان أن يستطيع PHP الوصول إلى الملفات تحت تلك الدلالات (إذا غيرت أيضًا مسار DocumentRoot الخاص بالمضيف الافتراضي الى /srv/http/ بموقع آخر فيجب عليك إضافة المسار الجديد هنا أيضًا).

Enable open_basedir

25. آخر ما عليك فعله للوصول الى واجهة PhpMyAdmin على الويب هو إضافة بيانات Apache PhpMyAdmin على المضيف الافتراضي. كإجراء أمني، تأكد أن واجهة PhpMyAdmin على الويب يمكن الوصول اليها فقط من localhost (أو عنوان IP للنظام) باستخدام بروتوكول HTTPS وليس من مضيفين افتراضيين مختلفين. لذا، افتح ملف Apache localhost-ssl.conf وفي الأسفل، قبل البيان الأخير، أضف المحتوى التالي.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>
Create PhpMyAdmin Virtual Host Configuration

26. بعد ذلك، أعد تشغيل ساحر Apache وحدد متصفحك الى العنوان التالي، ويجب أن تتمكن من الوصول الى واجهة PhpMyAdmin على الويب: https://localhost/phpmyadmin أو https://system_IP/phpmyadmin.

Access PhpMyAdmin Web Interface

27. إذا رأيت، بعد تسجيل الدخول الى PhpMyAdmin، خطأ أسفليا يتعلق بـ blowfish_secret، قم بفتح وتحرير ملف /etc/webapps/phpmyadmin/config.inc.php وأدخل سلسلة عشوائية مثل تلك الموجودة في البيان التالي، ثم قم بتحديث الصفحة.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;
Fix blowfish_secret Error

الخطوة 9: تفعيل نظام LAMP على مستوى النظام

28. إذا كنت ترغب في بدء تشغيل حزمة LAMP تلقائيا بعد إعادة تشغيل النظام، قم بتشغيل الأوامر التالية.

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

هذه بعض إعدادات التكوين الرئيسية على LAMP اللازمة لتحويل نظام Arch Linux إلى منصة ويب بسيطة وقوية وسريعة وقوية مع برامج خوادم متطورة للبيئات الصغيرة غير الحرجة، ولكن إذا كنت عنيدًا وترغب في استخدامه في بيئة إنتاجية كبيرة، فيجب عليك تزويد نفسك بالكثير من الصبر وإيلاء اهتمام إضافي لتحديث الحزم وإنشاء صور النسخ الاحتياطي النظامية بانتظام لاستعادة النظام بسرعة في حالة فشل النظام.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/