مقدمة
حزمة LAMP هي مجموعة من البرامج مفتوحة المصدر، تُثبّت عادةً لتمكين الخادم من استضافة مواقع ويب وتطبيقات ويب ديناميكية. يشير المصطلح إلى نظام تشغيل Linux مع خادم ويب Apache. تُخزّن بيانات الموقع في قاعدة بيانات MariaDB، ويُعالَج المحتوى الديناميكي باستخدام PHP.
على الرغم من أن مجموعة البرامج هذه تتضمن عادةً MySQL كنظام لإدارة قواعد البيانات، فإن بعض توزيعات Linux - بما في ذلك Debian - تستخدم MariaDB كبديل لـ MySQL.
في هذا الدليل، سوف تقوم بتثبيت حزمة LAMP على خادم Debian 10 باستخدام MariaDB كنظام إدارة قاعدة البيانات.
المتطلبات الأساسية
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى خادم Debian 10 مع حساب sudo غير جذر نشط وجدار حماية أساسي.
الخطوة 1 - تثبيت Apache وتحديث جدار الحماية
يُعد خادم الويب Apache أحد أشهر خوادم الويب في العالم. فهو مُوثَّق جيدًا، ويُستخدم على نطاق واسع على مرِّ تاريخ الإنترنت، مما يجعله خيارًا مثاليًا لاستضافة مواقع الويب.
ابدأ بتحديث ذاكرة التخزين المؤقت لمدير الحزم. إذا كانت هذه هي المرة الأولى التي تستخدم فيها sudo في هذه الجلسة، فسيُطلب منك إدخال كلمة مرور المستخدم للتحقق من امتلاكك الصلاحيات اللازمة لإدارة حزم النظام باستخدام apt:
sudo apt updateثم قم بتثبيت Apache باستخدام الأمر التالي:
sudo apt install apache2سيطلب منك هذا الأمر تأكيد تثبيت Apache. أكد بالضغط على Y ثم ENTER. بعد اكتمال التثبيت، ستحتاج إلى ضبط إعدادات جدار الحماية. بافتراض اتباعك لتعليمات إعداد الخادم الأولية لتثبيت جدار حماية UFW وتفعيله، تأكد من أن جدار الحماية يسمح بحركة مرور HTTP وHTTPS.
في Debian 10، يأتي UFW مُحمّلاً بملفات تعريف التطبيقات التي يمكنك استخدامها لضبط إعدادات جدار الحماية. اطلع على القائمة الكاملة لملفات تعريف التطبيقات بتشغيل:
sudo ufw app listيتم استخدام ملفات تعريف WWW لإدارة المنافذ التي تستخدمها خوادم الويب:
Output
Available applications:
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .إذا قمت بفحص ملف تعريف WWW الكامل، فسوف يظهر أنه يقوم بتمكين حركة المرور على المنفذين 80 و443:
sudo ufw app info "WWW Full"Output
Profile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
Ports:
80,443/tcpيُسمح بحركة المرور الواردة عبر HTTP وHTTPS لهذا الملف الشخصي:
sudo ufw allow in "WWW Full"يمكنك التأكد من أن كل شيء يسير وفقًا للخطة عن طريق زيارة عنوان IP العام لخادمك في متصفح الويب الخاص بك:
http://your_server_ipيؤدي هذا إلى إرجاع صفحة الويب الافتراضية لـ Debian 10 Apache، والتي توجد لأغراض إعلامية واختبارية:
إذا أعاد متصفحك هذه الصفحة، فهذا يعني أن خادم الويب لديك مثبت بشكل صحيح ويمكنك الوصول إليه من خلال جدار الحماية الخاص بك.
كيفية العثور على عنوان IP العام لخادمك
إذا كنت لا تعرف عنوان IP العام لخادمك، فهناك عدة طرق للعثور عليه. عادةً، هذا هو العنوان الذي تستخدمه للاتصال بخادمك عبر SSH.
هناك عدة طرق مختلفة للقيام بذلك عبر سطر الأوامر. أولًا، يمكنك استخدام أداة iproute2 للحصول على عنوان IP الخاص بك عن طريق تنفيذ الأمر التالي:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'سيعود هذا إلى سطرين أو ثلاثة. جميعها عناوين صحيحة، ولكن قد لا يتمكن جهاز الكمبيوتر الخاص بك من استخدام سوى واحد منها، لذا جرّب كل واحد منها.
طريقة بديلة لاستخدام الأداة حليقة هذا للتواصل مع جهة خارجية لإعلامك بكيفية رؤيتها لخادمك. يمكنك تشغيل الأمر التالي لسؤال خادم معين عن عنوان IP الخاص بك:
منذ أن تم إصدار Debian 10 حليقة إنه ليس افتراضيًا، يجب عليك تثبيته أولاً:
sudo apt install curlثم قم بتشغيل الأمر التالي لطلب عنوان IP الخاص بك من خادم معين:
curl http://icanhazip.comبغض النظر عن الطريقة، اكتب عنوان IP الخاص بك في متصفح الويب الخاص بك للتحقق من أن الخادم الخاص بك يقوم بتشغيل صفحة Apache الافتراضية.
الخطوة 2 – تثبيت MariaDB
الآن بعد أن أصبح لديك خادم ويب، فأنت بحاجة إلى تثبيت نظام قاعدة بيانات حتى تتمكن من تخزين البيانات وإدارتها لموقعك.
في ديبيان ١٠، استُبدلت حزمة MySQL-server meta-package، المستخدمة عادةً لتثبيت خادم MySQL، بحزمة MySQL-server الافتراضية. تشير هذه الحزمة إلى MariaDB، وهي نسخة مُشتقة من خادم MySQL الأصلي من Oracle، وهي الآن خادم قواعد البيانات الافتراضي المتوافق مع MySQL والمتوفر في مستودعات إدارة الحزم القائمة على ديبيان.
ومع ذلك، لتحقيق التوافق على المدى الطويل، يوصى بتثبيت MariaDB باستخدام حزمة التطبيق الفعلية، mariadb-server، بدلاً من استخدام الحزمة meta.
لتثبيت برنامج MariaDB، قم بتشغيل:
sudo apt install mariadb-serverبعد اكتمال التثبيت، يُنصح بتشغيل برنامج نصي أمني مُثبّت مسبقًا مع MariaDB. سيُزيل هذا البرنامج النصي بعض الإعدادات الافتراضية غير الآمنة ويُغلق الوصول إلى نظام قاعدة البيانات لديك. ابدأ تشغيل البرنامج النصي التفاعلي بتنفيذ ما يلي:
sudo mysql_secure_installationسيرشدك هذا النص البرمجي عبر سلسلة من الأوامر التي تتيح لك إجراء تغييرات على إعدادات MariaDB. سيطلب منك أول موجه إدخال كلمة مرور جذر قاعدة البيانات الحالية. يجب عدم الخلط بينه وبين جذر النظام. مستخدم جذر قاعدة البيانات هو مستخدم إداري يتمتع بصلاحيات كاملة على نظام قاعدة البيانات. بما أنك ثبّت MariaDB مؤخرًا ولم تُجرِ أي تغييرات على الإعدادات بعد، فستكون كلمة المرور فارغة، لذا اضغط على زر الإدخال (ENTER) عند ظهور الموجه.
سيسألك الموجه التالي عما إذا كنت تريد تعيين كلمة مرور جذر قاعدة البيانات. بما أن MariaDB تستخدم طريقة مصادقة خاصة للمستخدم الجذر، وهي عادةً أكثر أمانًا من استخدام كلمة مرور، فلن تحتاج إلى تعيين كلمة مرور الآن. اضغط N ثم ENTER.
من هناك، يمكنك الضغط على Y ثم ENTER لقبول الإعدادات الافتراضية لجميع الأسئلة اللاحقة. سيؤدي هذا إلى إزالة المستخدمين المجهولين وقاعدة بيانات الاختبار، وتعطيل تسجيل الدخول الجذر عن بُعد، وتحميل هذه القواعد الجديدة حتى تفي MariaDB بالتغييرات التي أجريتها فورًا.
عند الانتهاء، قم بتسجيل الدخول إلى وحدة التحكم MariaDB:
sudo mariadbسيؤدي هذا إلى الاتصال بخادم MariaDB كمستخدم جذر لقاعدة البيانات الإدارية، والذي يُستدل عليه باستخدام sudo عند تشغيل هذا الأمر. يجب أن تحصل على النتيجة التالية:
Output
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.3.36-MariaDB-0+deb10u2 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>لاحظ أنك لستَ بحاجة إلى إدخال كلمة مرور للاتصال كمستخدم جذر. هذا يعمل لأن طريقة المصادقة الافتراضية لمستخدم إدارة MariaDB هي كلمة مرور unix_socket. قد يبدو هذا مصدر قلق أمني للوهلة الأولى، إلا أنه يزيد من أمان خادم قاعدة البيانات لأن المستخدمين الوحيدين المسموح لهم بتسجيل الدخول كمستخدم جذر MariaDB هم مستخدمو النظام الذين يملكون صلاحيات sudo، والتي يمكن القيام بها من وحدة التحكم أو من خلال تطبيق قيد التشغيل بنفس الصلاحيات. عمليًا، هذا يعني أنه لا يمكنك استخدام مستخدم جذر إدارة قاعدة البيانات للاتصال من تطبيق PHP.
لتحسين الأمان، من الأفضل إعداد حسابات مستخدم مخصصة ذات امتيازات أقل لكل قاعدة بيانات، خاصة إذا كنت تخطط لاستضافة قواعد بيانات متعددة على الخادم الخاص بك.
يمكنك الخروج من وحدة التحكم MariaDB بالخطوات التالية:
exitتم الآن تثبيت خادم MariaDB وتأمينه. بعد ذلك، ستقوم بتثبيت PHP، المكون الأخير في حزمة LAMP.
الخطوة 3 – تثبيت PHP
لقد ثبّتتَ Apache لخدمة محتواك، وMariaDB لتخزين بياناتك وإدارتها. PHP هو جزء من إعداداتك، ويُعالج الشيفرة البرمجية لعرض محتوى ديناميكي للمستخدم النهائي. يُمكنه تنفيذ البرامج النصية، والاتصال بقواعد بيانات MariaDB لاسترداد المعلومات، وإرسال المحتوى المُعالَج إلى خادم الويب لعرضه.
بالإضافة إلى حزمة PHP، ستحتاج إلى php-mysql، وهي وحدة PHP تُمكّن PHP من التواصل مع قواعد بيانات MySQL مثل MariaDEB. ستحتاج أيضًا إلى libapache2-mod-php لتمكين Apache من التعامل مع ملفات PHP. تُثبّت حزم PHP الأساسية تلقائيًا كاعتماديات.
لتثبيت هذه الحزم، قم بتشغيل الأمر التالي:
sudo apt install php libapache2-mod-php php-mysqlبمجرد اكتمال التثبيت، يمكنك التحقق من إصدار PHP الخاص بك باستخدام الأمر التالي:
php -vOutput
PHP 7.3.31-1~deb10u2 (cli) (built: Dec 15 2022 09:39:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.31, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.31-1~deb10u2, Copyright (c) 1999-2018, by Zend Technologiesفي معظم الحالات، ستحتاج إلى تغيير طريقة عرض Apache للملفات. حاليًا، إذا طلب مستخدم دليلًا من الخادم، يبحث Apache أولًا عن ملف index.html. لإرشاد خادم الويب لإعطاء الأولوية لملفات PHP على غيرها، يمكنك تكوين Apache للبحث أولًا عن ملف 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>عند الانتهاء، احفظ الملف وأغلقه. إذا كنت تستخدم برنامج nano، يمكنك القيام بذلك بالضغط على CTRL+X، ثم Y، ثم ENTER للتأكيد.
الآن قم بإعادة تحميل تكوين Apache:
sudo systemctl reload apache2يمكنك التحقق من حالة خدمة apache2 باستخدام systemctl status:
sudo systemctl status apache2Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Active: active (running) since Fri 2023-01-20 22:21:24 UTC; 2min 12s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 13076 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCC
Process: 13097 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/
Main PID: 13080 (apache2)
Tasks: 6 (limit: 4915)
Memory: 13.7M
CGroup: /system.slice/apache2.service
├─13080 /usr/sbin/apache2 -k start
├─13101 /usr/sbin/apache2 -k start
├─13102 /usr/sbin/apache2 -k start
├─13103 /usr/sbin/apache2 -k start
├─13104 /usr/sbin/apache2 -k start
└─13105 /usr/sbin/apache2 -k startفي هذه المرحلة، تكون حزمة LAMP جاهزة للعمل بكامل طاقتها، ولكن قبل اختبار إعداداتك باستخدام نص PHP، يُنصح بإعداد مُضيف Apache افتراضي مناسب لتخزين ملفات ومجلدات موقعك الإلكتروني. سيتم إعداد هذا في الخطوة التالية.
الخطوة 4 – إنشاء مضيف افتراضي لموقع الويب الخاص بك
عند استخدام خادم الويب Apache، يمكنك إنشاء مضيفين افتراضيين (يشبهون كتل الخوادم في Nginx) لتغليف تفاصيل التكوين واستضافة أكثر من نطاق من خادم واحد. في هذا القسم، يمكنك إعداد نطاق باسم your_domain، ولكن يجب استبداله باسم نطاقك.
افتراضيًا، يُقدّم Apache محتواه من الدليل الموجود في /var/www/html، باستخدام ملف التكوين في /etc/apache2/sites-available/000-default.conf. بدلًا من تغيير ملف تكوين موقع الويب الافتراضي، يُفضّل إنشاء مُضيف افتراضي جديد لاختبار بيئة PHP. تُتيح لك المُضيفات الافتراضية استضافة مواقع ويب متعددة على خادم Apache واحد. كما يُمكنك إنشاء هيكل دليل في /var/www لنطاقك، مع ترك /var/www/html كمجلد افتراضي في حال عدم تطابق طلب العميل مع أي موقع آخر.
ابدأ بإنشاء دليل الويب الجذر لنطاقك على النحو التالي:
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>باستخدام هذا التكوين للمضيف الافتراضي، ستُخبر 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بعد ذلك، ستقوم بإنشاء برنامج نصي PHP لاختبار ما إذا تم تثبيت PHP وتكوينه بشكل صحيح على الخادم الخاص بك.
الخطوة 5 – اختبار معالجة PHP على خادم الويب الخاص بك
الآن بعد أن أصبح لديك موقع مخصص لاستضافة ملفات ومجلدات موقع الويب الخاص بك، قم بإنشاء برنامج نصي اختبار PHP للتحقق من قدرة Apache على التعامل مع طلبات ملفات PHP ومعالجتها.
ابدأ بإنشاء ملف جديد يسمى info.php داخل مجلد جذر الويب المخصص الخاص بك:
nano /var/www/your_domain/info.phpسيؤدي هذا إلى فتح ملف فارغ. أضف النص التالي، وهو كود PHP صالح، إلى الملف:
<?php
phpinfo();عندما تنتهي، احفظ الملف وأغلقه.
لاختبار البرنامج النصي، انتقل إلى متصفح الويب الخاص بك وقم بالوصول إلى اسم المجال الخاص بخادمك أو عنوان IP، ثم أدخل اسم البرنامج النصي، والذي في هذه الحالة هو info.php:
http://your_domain/info.phpفيما يلي مثال لصفحة ويب PHP افتراضية:
توفر هذه الصفحة معلومات أساسية عن خادمك من منظور PHP. وهي مفيدة لتصحيح الأخطاء والتأكد من تطبيق إعداداتك بشكل صحيح.
إذا حصلت على هذه الصفحة في متصفحك، فهذا يعني أن تثبيت PHP يعمل كما هو متوقع.
بعد مراجعة معلومات خادم PHP الخاص بك عبر تلك الصفحة، يُفضّل حذف الملف الذي أنشأته، إذ يحتوي على معلومات حساسة حول بيئة PHP وخادم Debian. يمكنك استخدام الأمر rm للقيام بذلك:
sudo rm /var/www/your_domain/info.phpيمكنك دائمًا إعادة إنشاء هذه الصفحة إذا كنت بحاجة إلى الوصول إلى المعلومات مرة أخرى.
الخطوة 6 – اختبار اتصال قاعدة البيانات من PHP (اختياري)
لاختبار قدرة PHP على الاتصال بـ MariaDB وتنفيذ استعلامات قاعدة البيانات، يمكنك إنشاء جدول اختبار ببيانات الاختبار والاستعلام عن محتواه من خلال نص PHP. قبل ذلك، يجب إنشاء قاعدة بيانات MariaDB جديدة ومستخدم مُهيأ للوصول إليها بشكل صحيح.
أولاً، قم بالاتصال بوحدة التحكم MariaDB باستخدام حساب الجذر:
sudo mariadbلإنشاء قاعدة بيانات جديدة، قم بتشغيل الأمر التالي من وحدة التحكم MariaDB الخاصة بك:
CREATE DATABASE example_database;
الآن قم بإنشاء مستخدم جديد ومنحه صلاحيات كاملة على قاعدة البيانات المخصصة التي قمت بإنشائها.
يُنشئ الأمر التالي مستخدمًا جديدًا باسم example_user، ويُصادق عليه بكلمة مرور. نُعرّف كلمة مرور هذا المستخدم بـ "password"، ولكن يُنصح باستبدال هذه القيمة بكلمة مرور آمنة من اختيارك:
CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';بعد ذلك، امنح هذا المستخدم الإذن لاستخدام قاعدة البيانات example_database:
GRANT ALL ON example_database.* TO 'example_user'@'%';يتيح هذا للمستخدم example_user امتيازات كاملة لقاعدة البيانات example_database، بينما يمنع المستخدم من إنشاء أو تعديل قواعد بيانات أخرى على الخادم الخاص بك.
بعد ذلك، قم بمسح الامتيازات للتأكد من حفظها وتوافرها في الجلسة الحالية:
FLUSH PRIVILEGES;بعد ذلك، قم بالخروج من غلاف MariaDB:
exitيمكنك اختبار ما إذا كان المستخدم الجديد لديه الأذونات المناسبة عن طريق تسجيل الدخول إلى وحدة تحكم MariaDB مرة أخرى، هذه المرة باستخدام بيانات اعتماد المستخدم المخصصة:
mariadb -u example_user -pلاحظ علامة -p في هذا الأمر، والتي تُطالبك بإدخال كلمة المرور المُستخدمة عند إنشاء example_user. بعد تسجيل الدخول إلى وحدة تحكم MariaDB، تأكد من إمكانية وصولك إلى example_database:
SHOW DATABASES;سيعطيك هذا النتيجة التالية:
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)ثم أنشئ جدول اختبار باسم todo_list. من وحدة تحكم MariaDB، شغّل العبارة التالية:
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;سوف تحصل على النتيجة التالية:
+---------+--------------------------+
| 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)بعد التأكد من وجود بيانات صالحة في جدول الاختبار الخاص بك، يمكنك الخروج من وحدة التحكم MariaDB:
exitيمكنك الآن إنشاء نص PHP الذي سيتصل بقاعدة بيانات MariaDB ويستعلم عن محتواك. أنشئ ملف PHP جديدًا في المجلد الجذر لموقعك الإلكتروني المخصص باستخدام محرر النصوص المفضل لديك. يُستخدم Nano في هذا المثال:
nano /var/www/your_domain/todo_list.phpيتصل البرنامج النصي PHP التالي بقاعدة بيانات MariaDB، ويبحث في محتويات جدول todo_list، ويعرض النتائج في قائمة. يُلقي البرنامج استثناءً في حال وجود مشكلة في الاتصال بقاعدة البيانات.
أضف هذا المحتوى إلى البرنامج النصي todo_list.php الخاص بك، وتذكر استبدال قيم example_user وpassword بقيمك الخاصة:
<?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/todo_list.phpستعرض صفحة الويب هذه للزائر المحتوى الذي قمت بتضمينه في جدول الاختبار الخاص بك:
وهذا يعني أن بيئة PHP الخاصة بك جاهزة للاتصال والتفاعل مع خادم MariaDB الخاص بك.
نتيجة
في هذا الدليل، قمت بإنشاء أساس مرن لتقديم مواقع الويب والتطبيقات PHP لزوارك باستخدام Apache كخادم ويب وMariaDB كنظام قاعدة بيانات.
كخطوة تالية مباشرة، يجب عليك التأكد من أمان اتصالاتك بخادم الويب عبر HTTPS. يمكنك استخدام Let's Encrypt للقيام بذلك. يمكنك أيضًا قراءة دليلنا حول كيفية تثبيت Composer واستخدامه لإدارة التبعيات والحزم في PHP.












