كيفية إنشاء خادم ويب آمن وفعال على Ubuntu: تثبيت Apache وSSL خطوة بخطوة

目次

1. المقدمة

ما هو خادم الويب Ubuntu؟

خادم الويب هو نظام يُستخدم لتقديم مواقع الإنترنت عبر الشبكة. من بين أشهر برامج خوادم الويب هناك Apache، Nginx، وLiteSpeed، ولكن الأكثر استخدامًا على Ubuntu هو Apache.
Ubuntu يُعَد من الأنظمة الخفيفة والمستقرة والمفتوحة المصدر، ولذلك يتم اعتماده من قبل الأفراد والشركات. خصوصاً عند بناء بيئة LAMP (Linux, Apache, MySQL/MariaDB, PHP)، يكون Ubuntu خياراً ممتازاً لإدارة مواقع الإنترنت وتطبيقات الويب.

الفئة المستهدفة لهذا المقال

هذا المقال موجه إلى المبتدئين الذين يقومون بإنشاء خادم ويب لأول مرة. نشرح فيه خطوة بخطوة كيفية إعداد خادم Ubuntu، وتثبيت Apache، وتكوين الاستضافة الافتراضية (Virtual Host) وشهادة SSL، بالإضافة إلى كيفية تحسين الأداء وتعزيز الأمان.

ما الذي ستتعلمه في هذا المقال

  • كيفية إنشاء خادم ويب على Ubuntu (تثبيت وإعداد Apache الأساسي)
  • إعداد الاستضافة الافتراضية وتشغيل عدة مواقع في نفس الوقت
  • تثبيت شهادة SSL مجانية باستخدام Let’s Encrypt
  • تعزيز الأمان وتحسين أداء خادم الويب
  • حل مشاكل شائعة في إدارة الخادم وكيفية معالجتها

2. تثبيت Ubuntu والإعدادات الأولية

متطلبات النظام الأساسية

لتشغيل Ubuntu كخادم ويب، يُوصى بالمواصفات التالية:

البندالمتطلبات الدنياالمتطلبات الموصى بها
نظام التشغيلUbuntu 22.04 LTSUbuntu 22.04 LTS
المعالج (CPU)1GHz أو أكثر2GHz أو أكثر
الذاكرة (RAM)512MB2GB أو أكثر
التخزين10GB أو أكثر20GB أو أكثر
الشبكةاتصال بالإنترنتموصى به اتصال عالي السرعة

تحميل وتثبيت Ubuntu

يمكنك تنزيل Ubuntu من الموقع الرسمي (https://ubuntu.com/download/server). بعد تحميل ملف ISO، يمكنك إنشاء بيئة افتراضية باستخدام VirtualBox أو VMware أو تثبيته على خادم فعلي أو VPS.

خطوات التثبيت:

  1. إنشاء وسائط التثبيت
  • استخدام USB (عبر أداة مثل Rufus)
  • تركيب ملف ISO في جهاز افتراضي
  1. اتباع معالج التثبيت لإعداد النظام
  • تعيين اللغة (اختر اللغة المناسبة)
  • تأكيد الاتصال بالشبكة
  • تعيين اسم المستخدم وكلمة المرور
  • تثبيت خادم SSH (يمكنك تركيبه لاحقًا)
  1. بعد انتهاء التثبيت، أعد تشغيل الجهاز
  2. تسجيل الدخول وبدء الإعدادات الأولية

الإعدادات الأولية الأساسية

فيما يلي أهم الخطوات التي يجب تنفيذها بعد تثبيت النظام:

  1. تحديث الحزم للنظام
   sudo apt update && sudo apt upgrade -y

→ لتثبيت أحدث التحديثات وتصحيح الأمان.

  1. تعيين المنطقة الزمنية
   sudo timedatectl set-timezone Asia/Tokyo

→ تعيين الوقت حسب منطقتك (مثال: طوكيو لليابان).

  1. تفعيل جدار الحماية (UFW)
   sudo ufw enable

→ لحماية الخادم من الهجمات.

  1. إعداد SSH للإدارة عن بُعد
  • تأكد أن SSH مفعل:
    sudo systemctl status ssh
  • إن لم يكن، فعّله:
    sudo systemctl enable --now ssh

بعد هذه الإعدادات، سيكون Ubuntu جاهزًا للاستخدام كخادم ويب.

3. تثبيت Apache والإعدادات الأساسية

ما هو Apache؟

Apache (الاسم الكامل: Apache HTTP Server) هو برنامج خادم ويب مفتوح المصدر يتميز بالاستقرار، وسهولة التوسعة، والأمان العالي. يستخدم حوالي 30% من خوادم العالم Apache.

الميزات الرئيسية:

  • مجاني ومفتوح المصدر
  • هيكلية الموديولات التي تسهل التوسعة
  • دعم SSL/TLS لإمكانية تفعيل HTTPS
  • إدارة استضافة افتراضية (Virtual Host) لتشغيل عدة مواقع بنفس الخادم

تثبيت Apache

يمكن تثبيت Apache على Ubuntu بسهولة باستخدام مدير الحزم apt.

تثبيت Apache

نفذ الأوامر التالية:

sudo apt update
sudo apt install apache2 -y

تأكيد نجاح التثبيت

بعد التثبيت، تحقق من إصدار Apache:

apache2 -v

مثال على المخرجات:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

إذا ظهرت معلومات الإصدار فهذا يعني أن التثبيت تم بنجاح.

تشغيل/إيقاف/إعادة تشغيل Apache

يمكنك إدارة Apache باستخدام أوامر systemctl.

تشغيل Apache

sudo systemctl start apache2

تفعيل التشغيل التلقائي عند الإقلاع

sudo systemctl enable apache2

التحقق من حالة Apache

sudo systemctl status apache2

إذا كان يعمل، ستظهر رسالة تفيد بأن الخدمة نشطة (active).

إعادة تشغيل/إيقاف Apache

لإعادة تشغيل Apache بعد تغيير الإعدادات:

sudo systemctl restart apache2

لإيقاف الخدمة مؤقتًا:

sudo systemctl stop apache2

التحقق من عمل Apache

يمكنك التأكد من عمل Apache من خلال الوصول إلى عنوان الـ IP الخاص بالخادم.

1. الحصول على عنوان الـ IP الخاص بالخادم

hostname -I

أو:

curl ifconfig.me

2. التحقق باستخدام متصفح الويب

في شريط عنوان المتصفح أدخل:

http://<عنوان-IP-الخادم>/

أو على البيئة المحلية:

http://localhost/

يجب أن تظهر صفحة Apache الافتراضية (/var/www/html/index.html).
مثال لصفحة العرض الافتراضية:

Apache2 Ubuntu Default Page
It works!

إذا رأيت هذه الرسالة فهذا يعني أن Apache يعمل بشكل صحيح.

إعداد جدار الحماية

على Ubuntu يمكنك استخدام UFW (Uncomplicated Firewall) لإدارة الجدار الناري.
قد يكون الوصول عبر HTTP (منفذ 80) أو HTTPS (منفذ 443) محجوبًا افتراضيًا بعد تثبيت Apache.

تفعيل قواعد الجدار الناري لـ Apache

sudo ufw allow 'Apache'

للسماح أيضًا بالوصول لـ HTTPS:

sudo ufw allow 'Apache Full'

التحقق من حالة الجدار الناري

sudo ufw status

إذا رأيت أن Apache مسموح به فهذا يعني أن الوصول إلى الخادم ممكن من الإنترنت.

الملخص

حتى الآن، قمنا بـ تثبيت Apache على Ubuntu وأكملنا الإعدادات الأساسية.
النقاط الرئيسية:

  • طريقة تثبيت Apache
  • إعداد التشغيل التلقائي والتحقق من العمل
  • الوصول عبر المتصفح للتحقق من العمل
  • إعداد الجدار الناري (UFW)
  • نظرة عامة على ملفات الإعداد الأساسية لـ Apache

4. إعداد الاستضافة الافتراضية (إدارة عدة مواقع)

ما هي الاستضافة الافتراضية (Virtual Host)؟

الاستضافة الافتراضية تتيح لك تشغيل عدة نطاقات (أو نطاقات فرعية) على نفس خادم Apache.
مثلاً يمكنك استضافة example.com وtest.com على نفس الجهاز.
هناك نوعان رئيسيان:

  1. استضافة افتراضية بالاسم (Name-based Virtual Host)
  • تشغيل عدة مواقع باستخدام نفس عنوان الـ IP
  • هذا هو الأكثر استخدامًا في استضافة المواقع
  1. استضافة افتراضية بالـ IP (IP-based Virtual Host)
  • كل موقع على عنوان IP مختلف
  • يتطلب وجود أكثر من واجهة شبكية على الخادم

عادةً ما يُستخدم النوع الأول (Name-based Virtual Host).

خطوات إعداد الاستضافة الافتراضية

1. إنشاء الأدلة اللازمة لكل موقع

قم بإنشاء مجلد خاص لكل موقع:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2. تغيير مالك الأدلة

للسماح لـ Apache بقراءة الملفات، عدل الملكية:

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html

3. إنشاء ملف HTML تجريبي لكل موقع

للتأكد من أن كل موقع يعمل بشكل صحيح:

echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

4. إنشاء ملف إعداد الاستضافة الافتراضية

ملفات إعداد الاستضافة الافتراضية تُنشأ داخل /etc/apache2/sites-available/.

إعداد الاستضافة لـ example.com

قم بإنشاء وتحرير الملف:

sudo nano /etc/apache2/sites-available/example.com.conf

أضف:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

إعداد الاستضافة لـ test.com

sudo nano /etc/apache2/sites-available/test.com.conf

أضف:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html

    <Directory /var/www/test.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

5. تفعيل الاستضافة الافتراضية

بعد إنشاء ملفات الإعداد، فعّل المواقع:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

اختبار إعدادات Apache

للتحقق من عدم وجود أخطاء في الإعداد:

sudo apachectl configtest

إذا ظهرت رسالة Syntax OK، كل شيء صحيح.
أعد تشغيل Apache:

sudo systemctl restart apache2

6. التحقق من العمل محليًا (تحرير ملف hosts)

لتجربة المواقع الجديدة محليًا، عدل ملف hosts على جهازك:

sudo nano /etc/hosts

أضف:

127.0.0.1 example.com
127.0.0.1 test.com

بعد الحفظ، افتح المتصفح وادخل http://example.com/ وhttp://test.com/. إذا ظهرت صفحة الترحيب الخاصة بكل موقع فهذا يعني نجاح الإعداد.

7. استكشاف المشاكل (Troubleshooting)

إذا لم تعمل الاستضافة الافتراضية:

1. التحقق من سجل الأخطاء في Apache

sudo tail -f /var/log/apache2/error.log

2. التأكد من تفعيل ملفات الإعداد

ls /etc/apache2/sites-enabled/

يجب أن تظهر ملفات .conf الخاصة بك.

3. التأكد من إعدادات المنفذ

تحقق من ملف /etc/apache2/ports.conf:

sudo nano /etc/apache2/ports.conf

يجب أن يتضمن:

Listen 80

الملخص

في هذا القسم، شرحنا كيفية إعداد الاستضافة الافتراضية على Apache باستخدام Ubuntu.
النقاط الرئيسية:

  • مفهوم الاستضافة الافتراضية واستخداماتها
  • إنشاء مجلدات الاستضافة الافتراضية
  • إعداد وتفعيل ملفات الضبط
  • التحقق من العمل في البيئة المحلية
  • استكشاف الأخطاء وإصلاحها

5. تفعيل SSL/TLS (تمكين HTTPS)

ما هو SSL/TLS؟

SSL (طبقة المقابس الآمنة) وTLS (أمان طبقة النقل) هي تقنيات تشفير لحماية الاتصال عبر الإنترنت.

فوائد استخدام SSL/TLS

تشفير الاتصالات (تقليل خطر التجسس أو التلاعب بالبيانات)
تحسين ترتيب الموقع في نتائج Google (المواقع التي تدعم HTTPS مفضلة في البحث)
تجنب تحذيرات المتصفح (المواقع غير المشفرة تُعرض كـ “غير آمنة”)
حماية بيانات الدفع وتسجيل الدخول
حالياً يُنصح باستخدام TLS 1.2 أو 1.3. النسخ الأقدم من SSL غير موصى بها.

الحصول على شهادة SSL مجانية باستخدام Let’s Encrypt

Let’s Encrypt هي جهة إصدار شهادات مجانية (CA). يمكنك استخدام certbot للحصول على شهادة وتفعيلها تلقائياً في Apache.

تثبيت أداة Certbot (Let’s Encrypt Client)

sudo apt update
sudo apt install certbot python3-certbot-apache -y

إعداد SSL تلقائياً في Apache

استخدم الأمر التالي:

sudo certbot --apache -d example.com -d www.example.com

بعد التنفيذ سيتم:

  1. التحقق من ملكية النطاق (HTTP-01 challenge)
  2. إصدار شهادة SSL
  3. إعداد Apache لاستخدام SSL
  4. تفعيل إعادة التوجيه التلقائي لـ HTTPS

التحقق من عمل SSL

افتح:

https://example.com/

إذا ظهرت علامة القفل في المتصفح فهذا يعني أن SSL فعال.

إعداد SSL يدويًا في Apache

إن أردت التثبيت اليدوي بدلاً من certbot --apache:

1. تفعيل وحدة SSL في Apache

sudo a2enmod ssl
sudo systemctl restart apache2

2. تحرير ملف الاستضافة الافتراضية للـ SSL

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

أضف:

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

3. تفعيل الإعداد وإعادة تشغيل Apache

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

تحديث شهادة SSL تلقائياً

شهادة Let’s Encrypt صالحة لمدة 90 يومًا فقط. يمكنك إعداد التحديث التلقائي بسهولة.

1. اختبار التحديث التلقائي لـ Certbot

sudo certbot renew --dry-run

2. التأكد من جدولة التحديث التلقائي

يتم ذلك عادة عبر /etc/cron.d/certbot:

sudo systemctl list-timers | grep certbot

حل مشاكل SSL الشائعة

1. عدم تطبيق الشهادة

sudo systemctl restart apache2
sudo apachectl configtest

2. انتهاء صلاحية الشهادة

sudo certbot renew --force-renewal

3. فشل تحقق Let’s Encrypt

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

الملخص

في هذا القسم تعلمت كيفية تفعيل شهادة SSL مجانية باستخدام Let’s Encrypt على Apache.
النقاط الرئيسية:

  • مبادئ SSL/TLS
  • إعداد SSL تلقائيًا عبر Certbot
  • تحديث الشهادة تلقائيًا
  • حل أشهر المشاكل

6. تعزيز أمان خادم الويب

إعداد جدار الحماية (UFW)

في Ubuntu، يمكنك استخدام UFW (Uncomplicated Firewall) لمنع الاتصالات غير الضرورية.

التحقق من إعدادات الجدار الناري الحالية

sudo ufw status

السماح فقط بالمنافذ المطلوبة

ينصح بإغلاق جميع الاتصالات وفتح ما تحتاج فقط:

sudo ufw default deny incoming
sudo ufw default allow outgoing

المنافذ التي يجب فتحها:

  • SSH (منفذ 22)
  sudo ufw allow 22/tcp
  • HTTP (منفذ 80)
  sudo ufw allow 80/tcp
  • HTTPS (منفذ 443)
  sudo ufw allow 443/tcp

تفعيل الجدار الناري

sudo ufw enable

تعزيز أمان SSH

يُنصح بتغيير الإعدادات الافتراضية لتقليل الهجمات.

تغيير منفذ SSH

sudo nano /etc/ssh/sshd_config

غير السطر التالي:

Port 2222  # بدلاً من 22 مثلاً
PermitRootLogin no  # تعطيل الدخول كـ root
PasswordAuthentication no  # السماح فقط بمفاتيح SSH

أعد تشغيل SSH بعد التعديل:

sudo systemctl restart ssh

تفعيل أداة Fail2Ban

تمنع هذه الأداة محاولات الدخول غير المصرح بها تلقائياً.

sudo apt install fail2ban -y

حرر ملف الإعداد:

sudo nano /etc/fail2ban/jail.local

أضف:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

فعّل الخدمة:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

تعزيز أمان Apache

إخفاء معلومات الإصدار

sudo nano /etc/apache2/conf-available/security.conf

غير:

ServerTokens Prod
ServerSignature Off

ثم أعد تشغيل Apache:

sudo systemctl restart apache2

تعطيل استعراض المجلدات

sudo nano /etc/apache2/apache2.conf

تأكد من أن السطر التالي لا يحتوي على Indexes:

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

ثم أعد تشغيل Apache.

تعطيل الموديولات غير الضرورية

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

إضافة رؤوس الأمان (Security Headers)

لحماية موقعك أضف رؤوس الحماية المناسبة.

تفعيل mod_headers

sudo a2enmod headers
sudo systemctl restart apache2

إضافة رؤوس الأمان في إعدادات الموقع

sudo nano /etc/apache2/sites-available/example.com.conf

أضف داخل <VirtualHost>:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

أعد تشغيل Apache:

sudo systemctl restart apache2

استكشاف مشاكل الأمان وحلها

التحقق من إعدادات الجدار الناري

sudo ufw status

اختبار إعدادات Apache

sudo apachectl configtest

إذا ظهرت Syntax OK فالإعدادات صحيحة.

حل مشاكل الاتصال عبر SSH بعد تغيير المنفذ

استخدم الأمر التالي للاتصال عبر المنفذ الجديد:

ssh -p 2222 user@server-ip

الملخص

في هذا القسم تعلمت كيفية تعزيز أمان خادم الويب على Ubuntu:

  • إعداد جدار الحماية (UFW)
  • حماية SSH (تغيير المنفذ، Fail2Ban)
  • تعزيز أمان Apache (إخفاء المعلومات، تعطيل الاستعراض)
  • إضافة رؤوس الأمان

7. تحسين أداء الخادم (تسريع Apache)

ضبط إعدادات Apache للأداء

الإعدادات الافتراضية لـ Apache ليست دائمًا مثالية للأداء. يمكنك ضبط الإعدادات لتحقيق أداء أفضل.

تحسين وحدة المعالجة المتعددة (MPM)

MPM (Multi-Processing Module) يحدد كيفية معالجة Apache للطلبات.

للتحقق من الوحدة الحالية:

apachectl -M | grep mpm

مثال المخرجات:

mpm_prefork_module (shared)

لتحسين الأداء، يمكنك التبديل إلى mpm_event (إن لم يكن قيد الاستخدام بالفعل):

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

تفعيل الاتصال المستمر (KeepAlive)

تفعيل KeepAlive يسمح بإعادة استخدام نفس الاتصال بين الخادم والمتصفح، مما يقلل عدد الاتصالات الجديدة ويزيد من السرعة.

تحرير ملف الإعداد:

sudo nano /etc/apache2/apache2.conf

تأكد من وجود الأسطر التالية:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

ثم أعد تشغيل Apache:

sudo systemctl restart apache2

استخدام التخزين المؤقت (Cache)

تفعيل الكاش (على مستوى المتصفح والخادم) يساعد في تقليل الضغط على الخادم وتسريع استجابة الموقع.

تفعيل mod_expires (تخزين مؤقت للمتصفح)

sudo a2enmod expires
sudo systemctl restart apache2

ثم أضف في ملف إعداد الموقع:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

أعد التشغيل:

sudo systemctl restart apache2

تفعيل mod_cache (كاش على مستوى الخادم)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

أضف في ملف إعداد الموقع:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

ثم أعد التشغيل.

تفعيل الضغط (mod_deflate)

يُستخدم لضغط الملفات النصية قبل إرسالها للمتصفح.

sudo a2enmod deflate
sudo systemctl restart apache2

أضف في إعداد الموقع:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

ثم أعد التشغيل.

تقييد الموارد (mod_ratelimit)

لتقليل التحميل الزائد من الزوار أو الهجمات.

sudo a2enmod ratelimit
sudo systemctl restart apache2

أضف في إعداد الموقع:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

ثم أعد التشغيل.

استكشاف مشاكل الأداء

التحقق من سجل الأخطاء

sudo tail -f /var/log/apache2/error.log

التحقق من الحمل على الخادم

sudo apachectl status

مراقبة استخدام CPU/RAM

top

أو

htop

(يمكن تثبيته: sudo apt install htop)

الملخص

في هذا القسم تعلمت:

  • ضبط إعدادات Apache (MPM, KeepAlive)
  • تفعيل الكاش على المتصفح والخادم
  • الضغط التلقائي للبيانات (mod_deflate)
  • تقييد الموارد (mod_ratelimit)

8. استكشاف الأخطاء الشائعة وحلها (Troubleshooting)

Apache لا يعمل أو يتوقف فجأة

التحقق من حالة الخدمة

sudo systemctl status apache2

إذا كان Active: failed، فهناك خطأ.

التحقق من سجلات الأخطاء

sudo journalctl -xe
sudo tail -f /var/log/apache2/error.log

التحقق من حالة المنافذ

sudo netstat -tulnp | grep ':80'

أو

sudo lsof -i:80

إذا كان هناك تعارض في المنفذ، عدل /etc/apache2/ports.conf.

مشاكل شهادة SSL

انتهاء صلاحية الشهادة

sudo certbot renew --force-renewal

خطأ: AH02572: Failed to configure at least one certificate

تحقق من إعدادات:

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

وأعد تشغيل Apache:

sudo systemctl restart apache2

الموقع لا يظهر (403, 404, 500)

403 Forbidden

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html

404 Not Found

تأكد من المسار في DocumentRoot:

DocumentRoot /var/www/example.com/public_html

وتأكد من تفعيل mod_rewrite:

sudo a2enmod rewrite
sudo systemctl restart apache2

500 Internal Server Error

تحقق من السجلات:

sudo tail -f /var/log/apache2/error.log

يمكنك إعادة تسمية .htaccess:

mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak

مشاكل الأداء المرتفعة

مراقبة الحمل على Apache

top

أو

htop

تعطيل الموديولات غير الضرورية

sudo a2dismod status
sudo a2dismod autoindex
sudo systemctl restart apache2

ضبط الكاش

sudo a2enmod cache cache_disk

مشاكل الشبكة

التحقق من عنوان الـ IP

ip a

أو

curl ifconfig.me

التحقق من حالة المنافذ المفتوحة

sudo netstat -tulnp | grep LISTEN

أو

sudo lsof -i :80

إذا لم يكن المنفذ 80 أو 443 مفتوحًا، فعّلهم:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

الملخص

في هذا القسم تعلمت:

  • حل مشاكل Apache الشائعة
  • حل مشاكل SSL
  • حل أخطاء 403، 404، 500
  • تحسين الأداء
  • التحقق من الشبكة

9. الخلاصة

ما الذي تعلمته حتى الآن؟

دعونا نستعرض النقاط الأساسية التي تم شرحها في كل قسم:

القسمالمحتوى
1. المقدمةمفاهيم أساسية حول خوادم الويب Ubuntu وهدف هذا المقال
2. تثبيت Ubuntu والإعدادات الأوليةتثبيت النظام، التحديثات، إعداد جدار الحماية
3. تثبيت Apache والإعدادات الأساسيةتثبيت Apache، التشغيل، والتحقق من العمل
4. إعداد الاستضافة الافتراضيةإدارة عدة مواقع على نفس الخادم
5. تفعيل SSL/TLSتمكين HTTPS باستخدام Let’s Encrypt
6. تعزيز أمان الخادمإعداد جدار الحماية، حماية SSH، وتأمين Apache
7. تحسين الأداءاستخدام الكاش، الضغط، وضبط Apache للأداء
8. استكشاف الأخطاء وحل المشاكلحل مشاكل Apache، الشهادة، وتحسين الأداء

الخطوات التالية

بعد إكمال إعداد خادم الويب على Ubuntu، يمكنك تطوير مهاراتك بشكل أكبر من خلال دراسة تقنيات متقدمة مثل:

تثبيت WordPress أو تطبيقات PHP
إعداد قواعد بيانات (MySQL / MariaDB)
استخدام Nginx كـ Reverse Proxy مع Apache
بناء بيئة قابلة للتوسع تلقائياً (AWS، GCP، Azure)
إدارة السجلات ومراقبة الخادم (مثل fail2ban أو logwatch)

الأسئلة الشائعة (FAQ)

س1: أيهما أختار على Ubuntu، Nginx أم Apache؟

ج1: إذا كان موقعك يركز على الملفات الثابتة (صور، CSS، JS)، فـ Nginx خيار ممتاز. إذا كان لديك تطبيقات PHP أو مواقع ديناميكية، Apache أفضل.
يمكن الجمع بين الاثنين (Nginx كـ Reverse Proxy أمام Apache).

س2: هل يمكن تحديث شهادة SSL تلقائيًا؟

ج2: نعم، باستخدام Certbot يمكنك جدولة التحديث التلقائي بسهولة:
sudo certbot renew --dry-run
مع إعداد cron أو systemd.

س3: كيف أعزز أمان خادمي بشكل أكبر؟

ج3: استخدم Fail2Ban لمنع الهجمات، أخفِ معلومات إصدار Apache، وفعّل فقط الموديولات الضرورية.

س4: كيف أحسن أداء Apache؟

ج4: اختر إعداد MPM المناسب (event أو worker)، فعّل الكاش (mod_cache)، والضغط (mod_deflate).

س5: لماذا تظهر لي رسالة “403 Forbidden”؟

ج5: تحقق من ملكية الملفات (www-data) وصلاحيات المجلدات (chmod -R 755).

الخلاصة النهائية

إعداد خادم ويب على Ubuntu يتطلب عدة خطوات من الإعداد الأساسي حتى التحسينات المتقدمة، ولكن بفهم كل مرحلة يمكنك بناء بيئة قوية وآمنة وفعالة.

🚀 استخدم هذا الدليل لبناء وتشغيل خادم ويب آمن وسريع، وطور مهاراتك التقنية بثقة! 🚀