انتقل إلى المحتوى الرئيسي

المختبر 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: التثبيت عبر الواجهة الويب​

  1. افتح متصفحًا وانتقل إلى http://127.0.0.1:8080/wordpress

  2. اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:

    • اسم قاعدة البيانات: wordpressdb
    • اسم المستخدم: wordpressuser
    • كلمة المرور: securepassword1
    • مضيف قاعدة البيانات: localhost
  3. أكمل التثبيت بإنشاء حساب مدير 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: التثبيت عبر الواجهة الويب​

  1. افتح متصفحًا وانتقل إلى http://127.0.0.1:8081/glpi

  2. اتبع معالج التثبيت بتقديم معلومات قاعدة البيانات:

    • اسم قاعدة البيانات: glpidb
    • اسم المستخدم: glpiuser
    • كلمة المرور: securepassword2
    • مضيف قاعدة البيانات: localhost
  3. قم بتسجيل الدخول باستخدام بيانات الاعتماد الافتراضية:

    • المستخدم: glpi
    • كلمة المرور: glpi
  4. مهم: قم بتغيير كلمات المرور الافتراضية فورًا

  5. احذف ملف التثبيت لأسباب أمنية:

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: إضافة تعليقات إلى السكربتات​

  1. افتح السكربتات install_wordpress.sh وinstall_glpi.sh
  2. أضف تعليقات (#) تشرح كل قسم من السكربت
  3. اشرح ما تفعله كل أمر مهم

التمرين 2: تغيير المنافذ​

قم بتعديل المنافذ لاستخدام 8080 و8082 بدلاً من 8080 و8081:

  1. قم بتعديل ملفات تكوين Apache
  2. قم بتعديل ملف ports.conf
  3. أعد تشغيل Apache
  4. اختبر الوصول إلى التطبيقات

الأوامر لاستخدامها:

# تعديل المنفذ في تكوين 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: المراقبة والرصد​

  1. استخدم htop لمراقبة الموارد أثناء التثبيت
  2. راقب سجلات Apache في الوقت الحقيقي
  3. تحقق من حالة MariaDB باستخدام mysqladmin

أسئلة للتفكير​

أجب عن الأسئلة التالية في وثيقة منفصلة:

  1. ما أهمية تكوين مستخدمين وقواعد بيانات منفصلة لـ WordPress وGLPI؟

    • اشرح المخاطر الأمنية إذا كانت كلا التطبيقين تشاركان نفس قاعدة البيانات
  2. ماذا سيحدث إذا استخدم كل من WordPress وGLPI المنفذ 80؟

    • اشرح الآثار التقنية والحلول الممكنة
  3. لماذا من الضروري تأمين تثبيت MariaDB أثناء التكوين الأولي؟

    • اشرح المخاطر إذا تم تجاهل هذه الخطوة
  4. ما الرابط بين قاعدة البيانات والملفات الخاصة بـ WordPress/GLPI المحملة على الخادم؟

    • اشرح كيف يتفاعلان
  5. اشرح ما يحدث عندما تصل إلى 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