مقدمة
حزمة "LAMP" هي مجموعة من البرامج مفتوحة المصدر، تُثبّت عادةً معًا لتمكين الخادم من استضافة مواقع ويب ديناميكية وتطبيقات ويب مكتوبة بلغة PHP. يشير المصطلح إلى نظام تشغيل Linux مع خادم ويب Apache. تُخزّن بيانات الموقع في قاعدة بيانات MySQL، ويُعالَج المحتوى الديناميكي بلغة PHP.
في هذا الدليل، ستُنشئ حزمة LAMP على خادم Ubuntu 22.04. هذه الخطوات مُطابقة لإصدار Ubuntu 18.04 وما فوق.
المتطلبات الأساسية
لإكمال هذا البرنامج التعليمي، ستحتاج إلى خادم يعمل بنظام أوبونتو، بالإضافة إلى مستخدم غير جذر بصلاحيات sudo، وجدار حماية نشط. للحصول على تعليمات حول كيفية إعداد هذه الإعدادات، يُرجى اختيار توزيعتك من هذه القائمة واتباع دليل التثبيت الأولي للخادم.
الخطوة 1 - تثبيت Apache وتحديث جدار الحماية
يُعد خادم الويب Apache أحد أشهر خوادم الويب في العالم. فهو مُوثَّق جيدًا، ولديه مجتمع مستخدمين نشط، وقد استُخدم على نطاق واسع على مر تاريخ الإنترنت، مما يجعله خيارًا ممتازًا لاستضافة مواقع الويب.
ابدأ بتحديث ذاكرة التخزين المؤقت لمدير الحزم. إذا كانت هذه هي المرة الأولى التي تستخدم فيها sudo في هذه الجلسة، فسيُطلب منك إدخال كلمة مرور المستخدم للتحقق من امتلاكك الصلاحيات اللازمة لإدارة حزم النظام باستخدام apt:
sudo apt updateثم ابدأ تشغيل Apache باستخدام:
sudo apt install apache2سيُطلب منك تأكيد تثبيت Apache. أكّد بالضغط على Y ثم ENTER.
بعد اكتمال التثبيت، ستحتاج إلى ضبط إعدادات جدار الحماية للسماح بحركة مرور HTTP. أداة تكوين جدار الحماية الافتراضية في أوبونتو هي جدار الحماية غير المعقد (UFW). تحتوي هذه الأداة على ملفات تعريف تطبيقات متنوعة يمكنك استخدامها. لعرض جميع ملفات تعريف تطبيقات UFW المتاحة، شغّل هذا الأمر:
sudo ufw app listOutput
Available applications:
Apache
Apache Full
Apache Secure
OpenSSHفيما يلي ما يعنيه كل من هذه الملفات الشخصية:
- Apache: يفتح هذا الملف الشخصي المنفذ 80 فقط (حركة مرور ويب عادية وغير مشفرة).
- Apache Full: يفتح هذا الملف الشخصي كل من المنفذ 80 (حركة مرور ويب عادية غير مشفرة) والمنفذ 443 (حركة مرور مشفرة باستخدام TLS/SSL).
- Apache Secure: يفتح هذا الملف الشخصي المنفذ 443 فقط (حركة مرور مشفرة عبر TLS/SSL).
في الوقت الحالي، من الأفضل السماح بالاتصالات على المنفذ 80 فقط، نظرًا لأن هذا تثبيت Apache جديد ولم تقم بعد بتكوين شهادة TLS/SSL للسماح بحركة مرور HTTPS على الخادم الخاص بك.
للسماح بحركة المرور على المنفذ 80 فقط، استخدم ملف تعريف Apache:
sudo ufw allow in "Apache"تأكيد التغيير بـ:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)يُسمح الآن بحركة المرور على المنفذ 80 عبر جدار الحماية.
يمكنك إجراء فحص سريع على الفور للتأكد من أن كل شيء سار وفقًا للخطة من خلال زيارة عنوان IP العام لخادمك في متصفح الويب (راجع الملاحظة الموجودة أسفل العنوان التالي لمعرفة عنوان IP العام الخاص بك إذا لم تكن لديك هذه المعلومات. سابقًا، سابقًا):
http://your_server_ipصفحة الويب الافتراضية لأباتشي أوبونتو مخصصة لأغراض المعلومات والاختبار. فيما يلي مثال لصفحة أباتشي الافتراضية لأوبونتو 22.04:
إذا تمكنت من رؤية هذه الصفحة، فهذا يعني أن خادم الويب الخاص بك مثبت بشكل صحيح ويمكنك الوصول إليه من خلال جدار الحماية الخاص بك.
كيفية العثور على عنوان IP العام لخادمك
إذا كنت لا تعرف عنوان IP العام لخادمك، فهناك عدة طرق للعثور عليه. عادةً، هذا هو العنوان الذي تستخدمه للاتصال بخادمك عبر SSH.
هناك عدة طرق مختلفة للقيام بذلك عبر سطر الأوامر. أولًا، يمكنك استخدام أداة iproute2 للحصول على عنوان IP الخاص بك بكتابة ما يلي:
ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'سيؤدي هذا إلى إرجاع سطرين أو ثلاثة. جميعها عناوين صالحة، ولكن قد لا يتمكن جهاز الكمبيوتر لديك إلا من استخدام واحد منها، لذا جرّب كل واحد منها.
هناك طريقة بديلة وهي استخدام أداة curl للتواصل مع جهة خارجية وإخبارها بكيفية رؤية خادمك. يتم ذلك بسؤال خادم معين عن عنوان IP الخاص بك:
curl http://icanhazip.comمهما كانت الطريقة التي تختارها، اكتب عنوان IP الخاص بك في متصفح الويب الخاص بك للتحقق من تشغيل الخادم لديك.
الخطوة 2 – تثبيت MySQL
الآن وقد أصبح لديك خادم ويب، عليك تثبيت نظام قاعدة بيانات لتخزين بيانات موقعك وإدارتها. MySQL هو نظام إدارة قواعد بيانات شائع الاستخدام في بيئات PHP.
استخدم apt مرة أخرى للحصول على هذا البرنامج وتثبيته:
sudo apt install mysql-serverعند المطالبة، قم بتأكيد التثبيت عن طريق كتابة Y ثم يدخل يتأكد.
بعد اكتمال التثبيت، يُنصح بتشغيل برنامج نصي أمني مُثبّت مسبقًا مع MySQL. سيُزيل هذا البرنامج النصي بعض الإعدادات الافتراضية غير الآمنة ويُقيّد الوصول إلى نظام قاعدة البيانات لديك.
ابدأ البرنامج النصي التفاعلي عن طريق تشغيل الأمر التالي:
sudo mysql_secure_installationهذا السؤال يسألك إذا كنت تريد مكون إضافي للتحقق من صحة كلمة المرور تكوين.
للمتابعة بدون تفعيل، أجب بـ Y أو نعم أو أي شيء آخر.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:إذا أجبت بـ "نعم"، فسيُطلب منك تحديد مستوى التحقق من كلمة المرور. يُرجى العلم أنه في حال إدخال 2 لأقوى مستوى، ستتلقى أخطاءً عند محاولة تعيين كلمة مرور لا تحتوي على أرقام، أو أحرف كبيرة وصغيرة، أو رموز خاصة.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1بغض النظر عمّا إذا اخترتَ إعداد إضافة التحقق من كلمة المرور، سيطلب منك خادمك بعد ذلك اختيار كلمة مرور وتأكيدها لمستخدم MySQL الجذر. يجب عدم الخلط بينه وبين مستخدم النظام الجذر. مستخدم قاعدة البيانات الجذر هو مستخدم إداري يتمتع بصلاحيات كاملة على نظام قاعدة البيانات. مع أن طريقة المصادقة الافتراضية لمستخدم MySQL الجذر لا تتضمن استخدام كلمة مرور، إلا أنه حتى عند تعيين كلمة مرور، يُنصح بتحديد كلمة مرور قوية كإجراء أمني إضافي.
إذا كانت ميزة التحقق من كلمة المرور مُفعّلة، فسيتم عرض قوة كلمة مرور الجذر التي أدخلتها للتو، وسيسألك خادمك عما إذا كنت ترغب في الاستمرار باستخدامها. إذا كنت راضيًا عن كلمة مرورك الحالية، فأدخل Y للإشارة إلى "نعم" عند المطالبة.
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yبالنسبة لبقية الأسئلة، اضغط Y ثم ENTER عند كل سؤال. سيؤدي هذا إلى إزالة بعض المستخدمين المجهولين وقاعدة بيانات الاختبار، وتعطيل تسجيلات الدخول الجذرية عن بُعد، وتحميل هذه القواعد الجديدة حتى يلتزم MySQL بالتغييرات التي أجريتها فورًا.
عندما تنتهي، اختبر ما إذا كان بإمكانك تسجيل الدخول إلى وحدة التحكم MySQL عن طريق كتابة ما يلي:
sudo mysqlيتصل هذا بخادم MySQL كمستخدم قاعدة بيانات إداري جذر، والذي يُستنتج باستخدام sudo عند تشغيل هذا الأمر. فيما يلي مثال على الناتج:
Output
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>للخروج من وحدة التحكم MySQL، اكتب:
exitلاحظ أنك لستَ بحاجة إلى إدخال كلمة مرور للاتصال كمستخدم جذر، حتى لو حدّدتَ كلمة مرور عند تشغيل سكربت تثبيت mysql_secure_installation. ويرجع ذلك إلى أن طريقة المصادقة الافتراضية لمستخدم MySQL الإداري هي unix_socket بدلاً من كلمة مرور. ورغم أن هذا قد يبدو مصدر قلق أمني، إلا أنه يزيد من أمان خادم قاعدة البيانات، لأن المستخدمين الوحيدين المسموح لهم بتسجيل الدخول كمستخدم جذر في MySQL هم مستخدمو النظام الذين يملكون امتيازات sudo والذين يتصلون من وحدة التحكم أو من خلال برنامج يعمل بنفس الامتيازات. عمليًا، هذا يعني أنه لا يمكنك استخدام مستخدم جذر قاعدة البيانات الإداري للاتصال من تطبيق PHP. يُعدّ تعيين كلمة مرور لحساب جذر MySQL بمثابة حماية في حال تغيير طريقة المصادقة الافتراضية من unix_socket إلى password.
لتحسين الأمان، من الأفضل إعداد حسابات مستخدم مخصصة ذات امتيازات أقل لكل قاعدة بيانات، خاصة إذا كنت تخطط لاستضافة قواعد بيانات متعددة على الخادم الخاص بك.
تم الآن تثبيت خادم MySQL وتأمينه. بعد ذلك، ستقوم بتثبيت PHP، المكون الأخير في حزمة LAMP.
الخطوة 3 – تثبيت PHP
لقد ثبّتتَ Apache لخدمة محتواك وMySQL لتخزين بياناتك وإدارتها. PHP هو جزء من إعداداتنا الذي يُعالج الكود لعرض محتوى ديناميكي للمستخدم النهائي. بالإضافة إلى حزمة PHP، ستحتاج إلى php-mysql، وهي وحدة PHP تُمكّن PHP من التواصل مع قواعد بيانات MySQL. ستحتاج أيضًا إلى libapache2-mod-php لتمكين Apache من التعامل مع ملفات PHP. يتم تثبيت حزم PHP الأساسية تلقائيًا كاعتماديات.
لتثبيت هذه الحزم، قم بتشغيل الأمر التالي:
sudo apt install php libapache2-mod-php php-mysqlبمجرد اكتمال التثبيت، قم بتشغيل الأمر التالي للتحقق من إصدار PHP الخاص بك:
php -vOutput
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologiesتغيير دليل Apache (اختياري)
في بعض الحالات، قد ترغب في تغيير طريقة عرض Apache للملفات عند طلب دليل. حاليًا، إذا طلب مستخدم دليلًا من الخادم، يبحث Apache أولًا عن ملف يُسمى index.html. نريد توجيه خادم الويب لإعطاء الأولوية لملفات PHP على غيرها، بحيث يبحث Apache أولًا عن ملف index.php. إذا لم تفعل ذلك، فسيكون لملف index.html الموجود في جذر مستند التطبيق الأولوية دائمًا على ملف index.php.
لإجراء هذا التغيير، افتح ملف إعدادات dir.conf في محرر نصوص من اختيارك. هنا، سنستخدم nano:
sudo nano /etc/apache2/mods-enabled/dir.conf
وسوف تبدو مثل هذا:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>انقل ملف فهرس PHP (المحدد أعلاه) إلى الموضع الأول بعد مواصفات DirectoryIndex، مثل هذا:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>عند الانتهاء، احفظ الملف وأغلقه بالضغط على CTRL+X. أكّد الحفظ بكتابة Y، ثم اضغط على ENTER لتأكيد مكان حفظ الملف.
بعد ذلك، أعد تشغيل خادم الويب Apache لتطبيق التغييرات. يمكنك القيام بذلك باستخدام الأمر التالي:
sudo systemctl restart apache2يمكنك أيضًا التحقق من حالة خدمة apache2 باستخدام systemctl:
sudo systemctl status apache2Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
Main PID: 3719 (apache2)
Tasks: 55 (limit: 2361)
CGroup: /system.slice/apache2.service
├─3719 /usr/sbin/apache2 -k start
├─3721 /usr/sbin/apache2 -k start
└─3722 /usr/sbin/apache2 -k start
Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.للخروج من هذا الوضع، س يضعط .
تثبيت ملحقات PHP (اختياري)
لتوسيع وظائف PHP، يمكنك تثبيت بعض الوحدات النمطية الإضافية. للاطلاع على الخيارات المتاحة لوحدات PHP ومكتباتها، أدخل نتائج بحث apt في less، وهو مُرشِّح يتيح لك استعراض مخرجات الأوامر الأخرى:
apt search php- | lessاستخدم مفاتيح الأسهم للتحرك لأعلى ولأسفل واضغط على زر Q للخروج.
النتائج هي جميع المكونات الاختيارية التي يمكنك تثبيتها. ستجد وصفًا موجزًا لكل منها:
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php-l10n
…لمعرفة المزيد عن وظيفة كل وحدة، يمكنك البحث عنها على الإنترنت. كما يمكنك الاطلاع على وصف الحزمة المفصل بكتابة:
apt show package_nameسيكون هناك قدر كبير من النتائج، مع وجود حقل يسمى الوصف والذي يوفر شرحًا إضافيًا لوظيفة الوحدة.
على سبيل المثال، لمعرفة ما تفعله وحدة 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).
…إذا قررت، بعد إجراء بحث، أنك تريد تثبيت حزمة، فيمكنك القيام بذلك باستخدام الأمر apt install، تمامًا كما تفعل مع أي برنامج آخر.
إذا قررت أن php-cli هو ما تحتاجه، يمكنك كتابة:
sudo apt install php-cliإذا كنت تريد تثبيت أكثر من وحدة، فيمكنك القيام بذلك عن طريق إدراج كل وحدة، مفصولة بمسافة، متبوعة بأمر apt install، مثل هذا:
sudo apt install package1 package2 ...في هذه المرحلة، تم تثبيت حزمة LAMP وتكوينها. قبل أي شيء آخر، نوصي بإعداد مُضيف Apache افتراضي لتخزين تفاصيل تكوين الخادم.
في هذه المرحلة، تكون مجموعة LAMP الخاصة بك جاهزة للتشغيل بالكامل، ولكن قبل اختبار إعدادك باستخدام البرنامج النصي PHP، من الجيد إعداد مضيف Apache افتراضي مناسب لحمل ملفات ومجلدات موقع الويب الخاص بك.
الخطوة 4 – إنشاء مضيف افتراضي لموقع الويب الخاص بك
عند استخدام خادم الويب Apache، يمكنك إنشاء مضيفين افتراضيين (يشبهون كتل الخوادم في Nginx) لتغليف تفاصيل التكوين واستضافة أكثر من نطاق من خادم واحد. في هذا الدليل، سننشئ نطاقًا باسم your_domain، ولكن يُنصح باستبداله باسم نطاقك الخاص.
يحتوي Apache على Ubuntu على مضيف افتراضي مُفعّل افتراضيًا، وهو مُهيأ لعرض المستندات من مجلد /var/www/html. يعمل هذا بشكل جيد لموقع واحد، ولكنه قد يُصبح مُرهقًا عند استضافة مواقع متعددة. بدلًا من تغيير /var/www/html، سنُنشئ بنية مجلد في /var/www لموقع your_domain، ونترك /var/www/html كمجلد افتراضي للعرض ما لم يطلب العميل ذلك. تطابق أي موقع آخر.
قم بإنشاء دليل لـ your_domain على النحو التالي:
sudo mkdir /var/www/your_domainبعد ذلك، قم بتعيين ملكية الدليل باستخدام متغير البيئة $USER، والذي سيشير إلى المستخدم الحالي على نظامك:
sudo chown -R $USER:$USER /var/www/your_domainبعد ذلك، افتح ملف تكوين جديد في مجلد Apache sites-available باستخدام محرر سطر الأوامر المفضل لديك. هنا، سنستخدم nano:
sudo nano /etc/apache2/sites-available/your_domain.confسيؤدي هذا إلى إنشاء ملف فارغ جديد. أضف التكوين الأساسي التالي مع اسم نطاقك:
<VirtualHost *:80>
ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>عند الانتهاء، احفظ الملف وأغلقه. إذا كنت تستخدم برنامج nano، فاضغط على CTRL+X، ثم Y، ثم ENTER.
باستخدام هذا التكوين للمضيف الافتراضي، نطلب من Apache تقديم نطاقك باستخدام /var/www/your_domain كدليل جذر للويب. إذا كنت ترغب في اختبار Apache بدون اسم نطاق، يمكنك إزالة خياري ServerName وServerAlias أو التعليق عليهما بإضافة علامة (#) في بداية كل سطر.
الآن، استخدم a2ensite لتنشيط المضيف الافتراضي الجديد:
sudo a2ensite your_domainقد ترغب في تعطيل موقع الويب الافتراضي المُثبّت مع Apache. هذا ضروري إذا لم تكن تستخدم اسم نطاق مُخصّصًا، ففي هذه الحالة، سيتجاوز Apache إعدادات مُضيفك الافتراضي. لتعطيل موقع Apache الافتراضي، اكتب:
sudo a2dissite 000-default
لتتأكد من أن ملف التكوين الخاص بك لا يحتوي على أخطاء نحوية، قم بتشغيل الأمر التالي:
sudo apache2ctl configtestأخيرًا، أعد تحميل Apache لكي تسري هذه التغييرات:
sudo systemctl reload apache2موقعك الإلكتروني الجديد متاح الآن، لكن جذر الويب /var/www/your_domain لا يزال فارغًا. أنشئ ملف index.html في هذا الموقع للتحقق من عمل المضيف الافتراضي كما هو متوقع:
nano /var/www/your_domain/index.htmlضع المحتوى التالي في هذا الملف:
<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>احفظ الملف وأغلقه، ثم انتقل إلى متصفحك وقم بالوصول إلى اسم المجال أو عنوان IP الخاص بخادمك:
http://server_domain_or_IPينبغي أن تعكس صفحتك على الويب محتويات الملف الذي قمت بتحريره للتو:
يمكنك ترك هذا الملف كصفحة وصول مؤقتة لتطبيقك حتى تُنشئ ملف index.php ليحل محله. بعد ذلك، تذكّر إزالة ملف index.html أو إعادة تسميته من جذر المستند، لأنه له الأولوية على ملف index.php افتراضيًا.
ملاحظة حول DirectoryIndex في Apache
مع إعدادات DirectoryIndex الافتراضية في Apache، يكون لملف index.html الأولوية دائمًا على ملف index.php. يُفيد هذا في إعداد صفحات الصيانة في تطبيقات PHP، وذلك بإنشاء ملف index.html مؤقت يحتوي على رسالة إعلامية للزوار. ولأن هذه الصفحة لها الأولوية على صفحة index.php، فإنها تُصبح صفحة الهبوط للتطبيق. بعد اكتمال الصيانة، يُعاد تسمية index.html أو يُحذف من جذر المستند، مما يُعيد صفحة التطبيق إلى حالتها الطبيعية.
إذا كنت تريد تغيير هذا السلوك، فأنت بحاجة إلى تحرير الملف /etc/apache2/mods-enabled/dir.conf وتغيير ترتيب الفهرسة لملف index.php في التوجيه DirectoryIndex:
sudo nano /etc/apache2/mods-enabled/dir.conf<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>بعد حفظ الملف وإغلاقه، تحتاج إلى إعادة تحميل Apache لكي تسري التغييرات:
sudo systemctl reload apache2بعد ذلك، سنقوم بإنشاء نص PHP لاختبار ما إذا تم تثبيت PHP وتكوينه بشكل صحيح على الخادم الخاص بك.
الخطوة 5 – اختبار معالجة PHP على خادم الويب الخاص بك
الآن بعد أن أصبح لديك موقع مخصص لاستضافة ملفات ومجلدات موقع الويب الخاص بك، قم بإنشاء برنامج نصي اختبار PHP للتحقق من قدرة Apache على التعامل مع طلبات ملفات PHP ومعالجتها.
قم بإنشاء ملف جديد باسم info.php في مجلد جذر الويب المخصص لديك:
nano /var/www/your_domain/info.phpسيؤدي هذا إلى فتح ملف فارغ. أضف النص التالي، وهو كود PHP صالح، إلى الملف:
<?php
phpinfo();عندما تنتهي، احفظ الملف وأغلقه.
لاختبار هذا البرنامج النصي، انتقل إلى متصفح الويب الخاص بك وقم بالوصول إلى اسم المجال الخاص بخادمك أو عنوان IP، متبوعًا باسم البرنامج النصي، والذي في هذه الحالة هو info.php:
http://server_domain_or_IP/info.phpفيما يلي مثال لصفحة ويب PHP افتراضية:
توفر هذه الصفحة معلومات حول خادمك من منظور PHP. وهي مفيدة لتصحيح الأخطاء والتأكد من تطبيق إعداداتك بشكل صحيح.
إذا رأيت هذه الصفحة في متصفحك، فهذا يعني أن تثبيت PHP يعمل كما هو متوقع.
بعد مراجعة معلومات خادم PHP الخاص بك عبر تلك الصفحة، يُفضّل حذف الملف الذي أنشأته، إذ يحتوي على معلومات حساسة حول بيئة PHP وخادم Ubuntu. للقيام بذلك، استخدم الأمر rm:
sudo rm /var/www/your_domain/info.phpيمكنك دائمًا إعادة إنشاء هذه الصفحة إذا كنت بحاجة إلى الوصول إلى المعلومات مرة أخرى.
الخطوة 6 – اختبار اتصال قاعدة البيانات من PHP (اختياري)
لاختبار قدرة PHP على الاتصال بـ MySQL وتنفيذ استعلامات قاعدة البيانات، يمكنك إنشاء جدول اختبار ببيانات الاختبار والاستعلام عن محتواه من خلال نص PHP. قبل ذلك، يجب إنشاء قاعدة بيانات اختبار ومستخدم MySQL جديد مُهيأ بشكل صحيح للوصول إليها.
أنشئ قاعدة بيانات باسم example_database ومستخدمًا باسم example_user. يمكنك استبدال هذه الأسماء بقيم مختلفة.
أولاً، قم بالاتصال بوحدة التحكم MySQL باستخدام حساب الجذر:
sudo mysqlلإنشاء قاعدة بيانات جديدة، قم بتشغيل الأمر التالي من وحدة التحكم MySQL الخاصة بك:
CREATE DATABASE example_database;الآن قم بإنشاء مستخدم جديد ومنحه كامل الامتيازات على قاعدة البيانات المخصصة التي قمت بإنشائها للتو.
يُنشئ الأمر التالي مستخدمًا جديدًا باسم example_user، مُصادقًا عليه باستخدام دالة caching_sha2_password. نُعرّف كلمة المرور لهذا المستخدم بـ "password"، ولكن يُنصح باستبدال هذه القيمة بكلمة مرور آمنة من اختيارك.
CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';الآن قم بمنح هذا المستخدم الأذونات على قاعدة بيانات example_database:
GRANT ALL ON example_database.* TO 'example_user'@'%';
يتيح هذا للمستخدم example_user امتيازات كاملة لقاعدة البيانات example_database، بينما يمنع المستخدم من إنشاء أو تعديل قواعد بيانات أخرى على الخادم الخاص بك.
الآن قم بالخروج من MySQL shell:
exitاختبر ما إذا كان المستخدم الجديد لديه الأذونات المناسبة عن طريق تسجيل الدخول إلى وحدة تحكم MySQL مرة أخرى، هذه المرة باستخدام بيانات اعتماد المستخدم المخصصة:
mysql -u example_user -pلاحظ علامة -p في هذا الأمر، والتي تطلب منك اختيار كلمة المرور التي استخدمتها عند إنشاء مستخدم example_user. بعد تسجيل الدخول إلى وحدة تحكم MySQL، تأكد من إمكانية وصولك إلى قاعدة بيانات example_database:
SHOW DATABASES;سيعطيك هذا النتيجة التالية:
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)ثم أنشئ جدول اختبار باسم todo_list. من وحدة تحكم MySQL، شغّل العبارة التالية:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);أدخل بعض صفوف البيانات في جدول الاختبار. كرّر الأمر التالي عدة مرات باستخدام قيم مختلفة لملء جدول الاختبار:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");للتأكد من حفظ البيانات بنجاح في الجدول الخاص بك، قم بتشغيل:
SELECT * FROM example_database.todo_list;والنتيجة هي كما يلي:
Output
+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)بعد التأكد من وجود بيانات صالحة في جدول الاختبار، قم بالخروج من وحدة التحكم MySQL:
exitيمكنك الآن إنشاء نص PHP الذي سيتصل بـ MySQL ويستعلم عن محتواك. أنشئ ملف PHP جديدًا في المجلد الجذر لموقعك الإلكتروني المخصص باستخدام محررك المفضل:
nano /var/www/your_domain/todo_list.phpيتصل نص PHP التالي بقاعدة بيانات MySQL، ويبحث في محتويات جدول todo_list، ويعرض النتائج في قائمة. يُلقي النص استثناءً في حال وجود مشكلة في اتصال قاعدة البيانات.
أضف هذا المحتوى إلى البرنامج النصي todo_list.php الخاص بك، وتذكر استبدال example_user وكلمة المرور الخاصة بك:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}احفظ الملف وأغلقه عند الانتهاء من التحرير.
يمكنك الآن الوصول إلى هذه الصفحة في متصفح الويب الخاص بك عن طريق زيارة اسم المجال أو عنوان IP العام المخصص لموقع الويب الخاص بك متبوعًا بـ /todo_list.php:
http://your_domain_or_IP/todo_list.phpيجب أن تعرض صفحة الويب هذه المحتوى الذي قمت بتضمينه في جدول الاختبار الخاص بك للزائر الخاص بك:
وهذا يعني أن بيئة PHP الخاصة بك جاهزة للاتصال والتفاعل مع خادم MySQL الخاص بك.
نتيجة
في هذا الدليل، قمت بإنشاء أساس مرن لتقديم مواقع الويب والتطبيقات PHP لزوارك باستخدام Apache كخادم ويب وMySQL كنظام قاعدة بيانات.
كخطوة تالية مباشرة، يجب عليك التأكد من أمان اتصالاتك بخادم الويب، وذلك باستخدام HTTPS. للقيام بذلك، يمكنك استخدام Let's Encrypt على Ubuntu 22.04 / 20.04 / 18.04 لتأمين موقعك بشهادة TLS/SSL مجانية.













