- 1 1. المقدمة
- 2 2. تثبيت Ubuntu والإعدادات الأولية
- 3 3. تثبيت Apache والإعدادات الأساسية
- 4 4. إعداد الاستضافة الافتراضية (إدارة عدة مواقع)
- 5 5. تفعيل SSL/TLS (تمكين HTTPS)
- 6 6. تعزيز أمان خادم الويب
- 7 7. تحسين أداء الخادم (تسريع Apache)
- 8 8. استكشاف الأخطاء الشائعة وحلها (Troubleshooting)
- 9 9. الخلاصة
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 LTS | Ubuntu 22.04 LTS |
المعالج (CPU) | 1GHz أو أكثر | 2GHz أو أكثر |
الذاكرة (RAM) | 512MB | 2GB أو أكثر |
التخزين | 10GB أو أكثر | 20GB أو أكثر |
الشبكة | اتصال بالإنترنت | موصى به اتصال عالي السرعة |
تحميل وتثبيت Ubuntu
يمكنك تنزيل Ubuntu من الموقع الرسمي (https://ubuntu.com/download/server). بعد تحميل ملف ISO، يمكنك إنشاء بيئة افتراضية باستخدام VirtualBox أو VMware أو تثبيته على خادم فعلي أو VPS.
خطوات التثبيت:
- إنشاء وسائط التثبيت
- استخدام USB (عبر أداة مثل Rufus)
- تركيب ملف ISO في جهاز افتراضي
- اتباع معالج التثبيت لإعداد النظام
- تعيين اللغة (اختر اللغة المناسبة)
- تأكيد الاتصال بالشبكة
- تعيين اسم المستخدم وكلمة المرور
- تثبيت خادم SSH (يمكنك تركيبه لاحقًا)
- بعد انتهاء التثبيت، أعد تشغيل الجهاز
- تسجيل الدخول وبدء الإعدادات الأولية
الإعدادات الأولية الأساسية
فيما يلي أهم الخطوات التي يجب تنفيذها بعد تثبيت النظام:
- تحديث الحزم للنظام
sudo apt update && sudo apt upgrade -y
→ لتثبيت أحدث التحديثات وتصحيح الأمان.
- تعيين المنطقة الزمنية
sudo timedatectl set-timezone Asia/Tokyo
→ تعيين الوقت حسب منطقتك (مثال: طوكيو لليابان).
- تفعيل جدار الحماية (UFW)
sudo ufw enable
→ لحماية الخادم من الهجمات.
- إعداد 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
على نفس الجهاز.
هناك نوعان رئيسيان:
- استضافة افتراضية بالاسم (Name-based Virtual Host)
- تشغيل عدة مواقع باستخدام نفس عنوان الـ IP
- هذا هو الأكثر استخدامًا في استضافة المواقع
- استضافة افتراضية بالـ 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
بعد التنفيذ سيتم:
- التحقق من ملكية النطاق (HTTP-01 challenge)
- إصدار شهادة SSL
- إعداد Apache لاستخدام SSL
- تفعيل إعادة التوجيه التلقائي لـ 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 يتطلب عدة خطوات من الإعداد الأساسي حتى التحسينات المتقدمة، ولكن بفهم كل مرحلة يمكنك بناء بيئة قوية وآمنة وفعالة.
🚀 استخدم هذا الدليل لبناء وتشغيل خادم ويب آمن وسريع، وطور مهاراتك التقنية بثقة! 🚀