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

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

٣. قم بتثبيت PHP لغة برمجة الخادم الديناميكية ووحدتها لـ Apache.
$ sudo pacman -S php php-apache
٤. في الخطوة الأخيرة، قم بتثبيت قاعدة بيانات MySQL، اختر 1 (MariaDB) نسخة مجتمعية لقاعدة البيانات ثم شغل وتحقق من حالة الخادم.
$ sudo pacman -S mysql $ sudo systemctl start mysqld $ sudo systemctl status mysqld


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


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

الخطوة ٣: تعديل ملف تكوين 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 هنا هو إعلام أباتشي بأنه ابتداءً من الآن، يجب عليه قراءة تكوينات إضافية من جميع الملفات الموجودة في /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

الآن قم بإنشاء ملف سكربت باش 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

10. بعد إنشاء الملفات، قم بتخصيص أذونات التنفيذ وانسخها إلى دليل تنفيذي $PATH لجعلها متاحة على نطاق النظام.
$ sudo chmod +x a2ensite a2dissite $ sudo cp a2ensite a2dissite /usr/local/bin/

الخطوة 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>

أهم البيانات هنا هي التوجيهات Port و ServerName التي توجه أباتشي لفتح اتصال شبكة على المنفذ 80 وإعادة توجيه جميع الاستعلامات باسم localhost لخدمة الملفات الموجودة في المسار /srv/http/.
12. بعد إنشاء ملف localhost، قم بتنشيطه ثم أعد تشغيل خادم httpd لعرض التغييرات.
$ sudo a2ensite localhost $ sudo systemctl restart httpd

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

الخطوة 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

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>

بالإضافة إلى التوجيهات 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

$ sudo chmod +x apache_gen_ssl
إذا كنت ترغب في جعل النصي متاحًا للنظام بشكل عام، قم بنسخه إلى مسار $PATH القابل للتنفيذ.
$ sudo cp /apache_gen_ssl /usr/local/bin/
18. الآن، قم بإنشاء الشهادة والمفاتيح الخاصة بك عن طريق تشغيل النصي. حدد خيارات SSL الخاصة بك ولا تنسى اسم الشهادة والاسم الشائع لتتناسب مع نطاقك الرسمي (FQDN).
$ sudo ./apache_gen_ssl


بعد إنشاء الشهادة والمفاتيح، لا تنسى تعديل تكوينات شهادة ومفاتيح الاستضافة الافتراضية SSL الخاصة بك لتتوافق مع اسم هذه الشهادة.
19. الخطوة الأخيرة هي تنشيط استضافة الخادم الافتراضية SSL الجديدة وإعادة تشغيل الخادم لتطبيق التكوينات.
$ sudo a2ensite localhost-ssl $ sudo systemctl restart httpd

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

الخطوة 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

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

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

هذا كل شيء! إذا كان كل شيء شبيه بالصورة أعلاه، فلديك الآن لغة برمجة خادمية ديناميكية 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

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

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>

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

27. إذا رأيت، بعد تسجيل الدخول الى PhpMyAdmin، خطأ أسفليا يتعلق بـ blowfish_secret، قم بفتح وتحرير ملف /etc/webapps/phpmyadmin/config.inc.php وأدخل سلسلة عشوائية مثل تلك الموجودة في البيان التالي، ثم قم بتحديث الصفحة.
$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

الخطوة 9: تفعيل نظام LAMP على مستوى النظام
28. إذا كنت ترغب في بدء تشغيل حزمة LAMP تلقائيا بعد إعادة تشغيل النظام، قم بتشغيل الأوامر التالية.
$ sudo systemctl enable httpd mysqld

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