Apache: التثبيت والمضيفات الافتراضية
تثبيت Apache على VPS، وإعداد المضيفات الافتراضية والوحدات، وحل التعارضات الشائعة مع Nginx على المنفذ 80.
آخر تحديث 23 أغسطس 2026
اختر Apache عندما تحتاج إلى .htaccess، أو نظام إدارة محتوى قديم، أو دليل جاهز من مطوّر التطبيق. فهو أثقل في استهلاك الذاكرة من Nginx، لكن على VDS-1 مع موقع صغير واحد لن تلاحظ الفرق.
التثبيت
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
يختلف اسم الخدمة: apache2 على Debian وUbuntu، وhttpd في عائلة RHEL. كما تختلف أدلة الإعداد — /etc/apache2 و/etc/httpd.
تحقّق:
systemctl status apache2
curl -I http://127.0.0.1
المضيف الافتراضي
الملف /etc/apache2/sites-available/example.ru.conf:
<VirtualHost *:80>
ServerName example.ru
ServerAlias www.example.ru
DocumentRoot /var/www/example.ru
<Directory /var/www/example.ru>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>
التفعيل والتحقق:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
لا تحتاج إلى AllowOverride All إلا إذا كنت تستخدم .htaccess فعلاً. وإن لم تكن تستخدمه، فاضبطه على None: سيتوقف Apache عن البحث عن هذه الملفات في كل دليل عند كل طلب.
الوحدات
a2enmod rewrite headers ssl
systemctl restart apache2
لعرض ما هو مفعّل — apache2ctl -M. لا تفعّل كل شيء: فكل وحدة تُحمَّل في كل عملية عامل.
استخدم PHP-FPM بدلاً من mod_php القديم مع PHP: PHP-FPM.
Apache وNginx معاً
يستمع كلا الخادمين إلى المنفذ 80 افتراضياً، لذا لن يبدأ الثاني ببساطة وسيرمي Address already in use. أمامك خياران:
- الإبقاء على خادم واحد فقط؛
- وضع Nginx في المقدمة، وتحويل Apache إلى
Listen 127.0.0.1:8080، والتمرير إليه عبر الوكيل — راجع الوكيل العكسي.
لمعرفة ما يستخدم المنفذ:
ss -tulpn | grep :80
الأخطاء الشائعة
| العَرَض | السبب |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | لم يُضبط ServerName — إنه تحذير، لكن اضبطه على أي حال |
.htaccess لا يعمل | AllowOverride None في كتلة Directory |
| لا تبدأ الخدمة بعد تعديل | خطأ نحوي — شغّل apachectl configtest دائماً قبل إعادة التحميل |
| 403 على دليل | غياب Require all granted أو عدم امتلاك www-data للصلاحيات |
السجلات: /var/log/apache2/ (Debian، Ubuntu) أو /var/log/httpd/ (AlmaLinux).
انسخ الإعداد قبل كل تعديل:
cp file file.bak. على جهاز ظاهري، التراجع أسهل من محاولة تذكّر ما غيّرته قبل ساعة.