المختبر 5.6 - تثبيت WordPress وGLPI على خادم Linux (Ubuntu 24.04)
الأهداف
في نهاية هذا المختبر، ستكون قادرًا على:
- تثبيت وتكوين Apache مع عدة VirtualHosts
- تثبيت وتكوين MariaDB مع عدة قواعد بيانات
- تثبيت WordPress وGLPI على منافذ مختلفة
- تكوين الأذونات والأمان
- استخدام سكربتات shell لأتمتة التثبيت
- إدارة خدمات الويب وقواعد البيانات
المتطلبات المسبقة
- تثبيت Ubuntu 24.04
- وصول sudo/root
- على الأقل 2 جيجابايت من الذاكرة المتاحة
- على الأقل 5 جيجابايت من مساحة القرص الحرة
- اتصال بالإنترنت
نظرة عامة
يوفر هذا الدليل التعليمات وسكربتات shell لتثبيت WordPress وGLPI على خادم Linux Ubuntu 24.04. ستستخدم كلتا التطبيقين منافذ ومستخدمين مختلفين لتجنب أي تعارض.
الهيكلية:
- WordPress: المنفذ 8080، قاعدة البيانات
wordpressdb، المستخدمwordpressuser - GLPI: المنفذ 8081، قاعدة البيانات
glpidb، المستخدمglpiuser
الجزء 1: تثبيت WordPress
الخطوة 1: إنشاء سكربت التثبيت
قم بإنشاء ملف سكربت لـ WordPress:
nano install_wordpress.sh
الخطوة 2: محتوى السكربت
انسخ المحتوى التالي في الملف:
#!/bin/bash
# تحديث الحزم وتثبيت المكونات اللازمة
sudo apt update
sudo apt install -y apache2 php php-{mysql,xml,mbstring,curl,zip,gd} libapache2-mod-php mariadb-server wget
# تأمين تثبيت MariaDB
sudo mysql_secure_installation
# الاتصال بـ MariaDB وإنشاء قاعدة بيانات WordPress والمستخدم
sudo mysql -u root <<EOF
CREATE DATABASE wordpressdb;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'securepassword1';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
# تنزيل واستخراج WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
sudo tar xzvf latest.tar.gz -C /var/www/html/
# تكوين الأذونات
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 775 /var/www/html/wordpress
# إنشاء ملف تكوين لـ WordPress في Apache
sudo bash -c 'cat <<EOT > /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:8080>
ServerName localhost
DocumentRoot /var/www/html/wordpress
<Directory /var/www/html/wordpress>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>
EOT'
# تكوين المنفذ 8080
echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf
# تفعيل التكوين وإعادة تشغيل Apache
sudo a2ensite wordpress.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
# تعليمات التثبيت عبر الواجهة الويب
echo "التثبيت عبر الواجهة الويب:"
echo "افتح متصفحًا وانتقل إلى http://127.0.0.1:8080/wordpress"
echo "اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:"
echo "اسم قاعدة البيانات: wordpressdb"
echo "اسم المستخدم: wordpressuser"
echo "كلمة المرور: securepassword1"
echo "مضيف قاعدة البيانات: localhost"
الخطوة 3: جعل السكربت قابلاً للتنفيذ وتشغيله
chmod +x install_wordpress.sh
./install_wordpress.sh
الخطوة 4: الردود على mysql_secure_installation
أثناء تشغيل السكربت، ستتم مطالبتك بالإجابة على الأسئلة لتأمين MariaDB. إليك الردود الموصى بها:
Enter current password for root : [اضغط على إدخال]
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
الخطوة 5: التثبيت عبر الواجهة الويب
-
افتح متصفحًا وانتقل إلى http://127.0.0.1:8080/wordpress
-
اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:
- اسم قاعدة البيانات:
wordpressdb - اسم المستخدم:
wordpressuser - كلمة المرور:
securepassword1 - مضيف قاعدة البيانات:
localhost
- اسم قاعدة البيانات:
-
أكمل التثبيت بإنشاء حساب مدير WordPress
الخطوة 6: التحقق
# تحقق من أن Apache يستمع على المنفذ 8080
sudo netstat -tulnp | grep :8080
# تحقق من حالة Apache
sudo systemctl status apache2
# تحقق من السجلات
sudo tail -f /var/log/apache2/wordpress_access.log
الجزء 2: تثبيت GLPI
الخطوة 1: إنشاء سكربت التثبيت
قم بإنشاء ملف سكربت لـ GLPI:
nano install_glpi.sh
الخطوة 2: محتوى السكربت
انسخ المحتوى التالي في الملف:
#!/bin/bash
# تحديث الحزم وتثبيت المكونات اللازمة
sudo apt update
sudo apt install -y apache2 php php-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,bz2} libapache2-mod-php mariadb-server wget
# تأمين تثبيت MariaDB (إذا لم يتم بالفعل)
# sudo mysql_secure_installation
# الاتصال بـ MariaDB وإنشاء قاعدة بيانات GLPI والمستخدم
sudo mysql -u root <<EOF
CREATE DATABASE glpidb;
CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'securepassword2';
GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
# تنزيل واستخراج GLPI
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.7/glpi-10.0.7.tgz
sudo tar xvf glpi-10.0.7.tgz -C /var/www/html/
# تكوين الأذونات
sudo chown -R www-data:www-data /var/www/html/glpi
sudo chmod -R 775 /var/www/html/glpi
# إنشاء ملف تكوين لـ GLPI في Apache
sudo bash -c 'cat <<EOT > /etc/apache2/sites-available/glpi.conf
<VirtualHost *:8081>
ServerName localhost
DocumentRoot /var/www/html/glpi/public
<Directory /var/www/html/glpi/public>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
EOT'
# تكوين المنفذ 8081
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf
# تفعيل التكوين وإعادة تشغيل Apache
sudo a2ensite glpi.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
# تعليمات التثبيت عبر الواجهة الويب
echo "التثبيت عبر الواجهة الويب:"
echo "افتح متصفحًا وانتقل إلى http://127.0.0.1:8081/glpi"
echo "اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:"
echo "اسم قاعدة البيانات: glpidb"
echo "اسم المستخدم: glpiuser"
echo "كلمة المرور: securepassword2"
echo "مضيف قاعدة البيانات: localhost"
الخطوة 3: جعل السكربت قابلاً للتنفيذ وتشغيله
chmod +x install_glpi.sh
./install_glpi.sh
الخطوة 4: التثبيت عبر الواجهة الويب
-
افتح متصفحًا وانتقل إلى http://127.0.0.1:8081/glpi
-
اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:
- اسم قاعدة البيانات:
glpidb - اسم المستخدم:
glpiuser - كلمة المرور:
securepassword2 - مضيف قاعدة البيانات:
localhost
- اسم قاعدة البيانات:
-
قم بتسجيل الدخول باستخدام بيانات الاعتماد الافتراضية:
- المستخدم:
glpi - كلمة المرور:
glpi
- المستخدم:
-
مهم: قم بتغيير كلمات المرور الافتراضية فورًا
-
احذف ملف التثبيت لأسباب أمنية:
sudo rm /var/www/html/glpi/install/install.php
الجزء 3: الأوامر المتقدمة والتأمين
إدارة الأذونات
# تعيين أذونات الملفات بشكل متكرر
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
sudo find /var/www/html/glpi -type f -exec chmod 644 {} \;
# تعيين أذونات الدلائل
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/glpi -type d -exec chmod 755 {} \;
تكوين الجدار الناري (UFW)
# السماح بالمنافذ اللازمة
sudo ufw allow 8080/tcp
sudo ufw allow 8081/tcp
# التحقق من الحالة
sudo ufw status
المراقبة في الوقت الحقيقي
# مراقبة سجلات Apache
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/wordpress_access.log
sudo tail -f /var/log/apache2/glpi_access.log
# مراقبة العمليات النظامية
htop
# مراقبة حالة MySQL/MariaDB
sudo mysqladmin -u root -p status
الجزء 4: حل المشاكل
خطأ في تكوين Apache
إذا واجهت خطأ في تكوين Apache:
# تحقق من صحة التكوين
sudo apache2ctl configtest
# عرض السجلات التفصيلية
sudo journalctl -xeu apache2.service
# تحقق من ملفات التكوين
sudo nano /etc/apache2/sites-available/wordpress.conf
sudo nano /etc/apache2/sites-available/glpi.conf
تحقق من أن المنافذ حرة
# تحقق من المنافذ المستمعة
sudo netstat -tulnp | grep :8080
sudo netstat -tulnp | grep :8081
# بديل مع ss
sudo ss -tulnp | grep :8080
sudo ss -tulnp | grep :8081
تحقق من الأذونات
# تحقق من أذونات الدلائل
ls -ld /var/www/html/wordpress
ls -ld /var/www/html/glpi
# تحقق من المالك
ls -la /var/www/html/
الجزء 5: تمارين عملية
التمرين 1: إضافة تعليقات إلى السكربتات
- افتح السكربتات
install_wordpress.shوinstall_glpi.sh - أضف تعليقات (
#) تشرح كل قسم من السكربت - اشرح ما تفعله كل أمر مهم
التمرين 2: تغيير المنافذ
قم بتعديل المنافذ لاستخدام 8080 و8082 بدلاً من 8080 و8081:
- قم بتعديل ملفات تكوين Apache
- قم بتعديل ملف
ports.conf - أعد تشغيل Apache
- اختبر الوصول إلى التطبيقات
الأوامر لاستخدامها:
# تعديل المنفذ في تكوين GLPI
sudo nano /etc/apache2/sites-available/glpi.conf
# تغيير *:8081 إلى *:8082
# إضافة المنفذ 8082
echo "Listen 8082" | sudo tee -a /etc/apache2/ports.conf
# إعادة تشغيل Apache
sudo systemctl restart apache2
# تحقق
sudo netstat -tulnp | grep :8082
التمرين 3: المراقبة والرصد
- استخدم
htopلمراقبة الموارد أثناء التثبيت - راقب سجلات Apache في الوقت الحقيقي
- تحقق من حالة MariaDB باستخدام
mysqladmin
أسئلة للتفكير
أجب عن الأسئلة التالية في وثيقة منفصلة:
-
ما أهمية تكوين مستخدمين وقواعد بيانات منفصلة لـ WordPress وGLPI؟
- اشرح المخاطر الأمنية إذا كانت كلا التطبيقين تشاركان نفس قاعدة البيانات
-
ماذا سيحدث إذا استخدم كل من WordPress وGLPI المنفذ 80؟
- اشرح الآثار التقنية والحلول الممكنة
-
لماذا من الضروري تأمين تثبيت MariaDB أثناء التكوين الأولي؟
- اشرح المخاطر إذا تم تجاهل هذه الخطوة
-
ما الرابط بين قاعدة البيانات والملفات الخاصة بـ WordPress/GLPI المحملة على الخادم؟
- اشرح كيف يتفاعلان
-
اشرح ما يحدث عندما تصل إلى WordPress أو GLPI عبر متصفح بعد التثبيت.
- صف تدفق الطلب من المتصفح إلى قاعدة البيانات
الملحق 1: طرق تكوين المنافذ
الطريقة 1: ملف تكوين منفصل (موصى به)
# إنشاء ملف تكوين للمنفذ
sudo bash -c 'echo "Listen 8080" > /etc/apache2/conf-available/port8080.conf'
sudo bash -c 'echo "Listen 8081" > /etc/apache2/conf-available/port8081.conf'
# تفعيل التكوينات
sudo a2enconf port8080
sudo a2enconf port8081
# إعادة تشغيل Apache
sudo systemctl restart apache2
المزايا:
- أكثر تنظيمًا
- يسهل إدارة التكوينات
- لا يعدل الملفات الرئيسية
الطريقة 2: الإضافة المباشرة في ports.conf
# الإضافة مباشرة في ports.conf
echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf
# إعادة تشغيل Apache
sudo systemctl restart apache2
المزايا:
- بسيط وسريع
- جميع تكوينات المنافذ في مكان واحد
العيوب:
- يعدل الملف الرئيسي
- أقل تنظيمًا
الفرق بين tee وbash -c
echo "Listen 8081" | sudo tee -a /etc/apache2/ports.conf :
- يعدل مباشرة ملف التكوين الرئيسي
- بسيط ولكنه أقل تنظيمًا
- جميع التكوينات في مكان واحد
sudo bash -c 'echo "Listen 8080" > /etc/apache2/conf-available/port8080.conf' :
- ينشئ ملف تكوين منفصل
- أكثر تنظيمًا وهيكلية
- يسمح بالتفعيل/التعطيل بسهولة
- لا يعدل الملفات الرئيسية
الملحق 2: التأمين المتقدم
حذف ملفات التثبيت
# WordPress (إذا كان موجودًا)
sudo rm -rf /var/www/html/wordpress/wp-admin/install.php
# GLPI
sudo rm /var/www/html/glpi/install/install.php
تكوين الأذونات الصارمة
# الأذونات لـ WordPress
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
# الأذونات لـ GLPI
sudo chown -R www-data:www-data /var/www/html/glpi
sudo find /var/www/html/glpi -type d -exec chmod 755 {} \;
sudo find /var/www/html/glpi -type f -exec chmod 644 {} \;
تكوين النسخ الاحتياطية
# سكربت النسخ الاحتياطي لقاعدة بيانات WordPress
sudo mysqldump -u wordpressuser -p wordpressdb > /backup/wordpress_$(date +%Y%m%d).sql
# سكربت النسخ الاحتياطي لقاعدة بيانات GLPI
sudo mysqldump -u glpiuser -p glpidb > /backup/glpi_$(date +%Y%m%d).sql
ملخص الأوامر المهمة
| الأمر | الوصف |
|---|---|
sudo systemctl status apache2 | تحقق من حالة Apache |
sudo systemctl restart apache2 | إعادة تشغيل Apache |
sudo apache2ctl configtest | اختبار تكوين Apache |
sudo netstat -tulnp | grep :8080 | تحقق مما إذا كان المنفذ مستمعًا |
sudo tail -f /var/log/apache2/access.log | مراقبة السجلات في الوقت الحقيقي |
htop | مراقبة العمليات النظامية |
sudo mysqladmin -u root -p status | تحقق من حالة MariaDB |
sudo ufw allow 8080/tcp | السماح بالمنفذ في الجدار الناري |
التحقق النهائي
تحقق من أنك نجحت في:
- تثبيت WordPress على المنفذ 8080
- تثبيت GLPI على المنفذ 8081
- تكوين قواعد بيانات منفصلة
- الوصول إلى كلا التطبيقين عبر المتصفح
- تكوين الجدار الناري (UFW)
- فهم الفرق بين طرق تكوين المنافذ
- إضافة تعليقات إلى السكربتات
- الإجابة على أسئلة التفكير
الخطوات التالية
- الوحدة 7: الشبكة والتكوين (لتعميق تكوين الشبكة)
- الوحدة 8: الخدمات والشيطان (لأتمتة مع systemd)
- الوحدة 9: أمان النظام (لتأمين التثبيتات بشكل أكبر)
الموارد الإضافية
تم إنشاء المختبر في: ديسمبر 2024