تثبيت Nginx و Apache: إعداد المضيف الافتراضي
تثبيت وإعداد خوادم الويب Nginx و Apache، مقارنة الإمكانيات، إنشاء المضيفات الافتراضية، إعداد SSL/TLS وإدارة خدمات الويب في Linux.
جدول المحتويات
تثبيت Nginx و Apache: إعداد المضيف الافتراضي
Nginx و Apache هما أكثر خادمَي ويب استخداماً في العالم. يمكن لكليهما تقديم تطبيقات الويب والملفات الثابتة والعمل كوكيل عكسي على خوادم Linux. يغطي هذا الدليل التثبيت والإعداد الأساسي وإنشاء المضيفات الافتراضية لكليهما.
مقارنة Nginx و Apache
| الميزة | Nginx | Apache |
|---|---|---|
| البنية | غير متزامن، event-driven | قائم على العمليات/الخيوط |
| الملفات الثابتة | سريع جداً | أبطأ |
| المحتوى الديناميكي | يتطلب وكيلاً عكسياً | وحدات مدمجة |
| استخدام الذاكرة | منخفض | أعلى |
| الإعداد | أبسط | دعم .htaccess |
| الأفضل لـ | المواقع عالية الحركة | تطبيقات PHP |
اختر Nginx للمحتوى الثابت عالي الحركة أو الوكيل العكسي؛ اختر Apache لتطبيقات PHP (WordPress، Laravel). يمكن استخدامهما معاً: Nginx في المقدمة كوكيل عكسي، Apache في الخلفية كخادم تطبيقات.
تثبيت Nginx
Debian/Ubuntu
# تحديث قائمة الحزم
sudo apt update
# تثبيت Nginx
sudo apt install nginx -y
# تشغيل وتفعيل الخدمة
sudo systemctl start nginx
sudo systemctl enable nginx
# التحقق من الحالة
sudo systemctl status nginx
RHEL/CentOS/AlmaLinux
# إضافة مستودع EPEL
sudo dnf install epel-release -y
# تثبيت Nginx
sudo dnf install nginx -y
# تشغيل وتفعيل الخدمة
sudo systemctl start nginx
sudo systemctl enable nginx
أوامر Nginx الأساسية
# اختبار الإعداد
sudo nginx -t
# إعادة تحميل الإعداد (بدون توقف)
sudo systemctl reload nginx
# إعادة تشغيل الخدمة
sudo systemctl restart nginx
# عرض إصدار Nginx
nginx -v
إعداد المضيف الافتراضي في Nginx
في Nginx، يُنشأ ملف إعداد منفصل لكل موقع تحت /etc/nginx/sites-available/.
مضيف افتراضي أساسي
# إنشاء ملف الإعداد
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
# لـ PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
# حظر الوصول للملفات المخفية
location ~ /\.ht {
deny all;
}
# ملفات السجل
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
# تفعيل الموقع
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# إنشاء مجلد الويب
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# الاختبار وإعادة التحميل
sudo nginx -t && sudo systemctl reload nginx
إعداد الوكيل العكسي في Nginx
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
تثبيت Apache
Debian/Ubuntu
# تثبيت Apache
sudo apt update
sudo apt install apache2 -y
# تشغيل وتفعيل الخدمة
sudo systemctl start apache2
sudo systemctl enable apache2
# التحقق من الحالة
sudo systemctl status apache2
RHEL/CentOS/AlmaLinux
# تثبيت Apache (httpd)
sudo dnf install httpd -y
# تشغيل وتفعيل الخدمة
sudo systemctl start httpd
sudo systemctl enable httpd
أوامر Apache الأساسية
# اختبار الإعداد
sudo apachectl configtest
# إعادة تحميل الإعداد
sudo systemctl reload apache2
# تفعيل الوحدات
sudo a2enmod rewrite
sudo a2enmod ssl
# تفعيل/تعطيل المواقع
sudo a2ensite example.com
sudo a2dissite 000-default
إعداد المضيف الافتراضي في Apache
# إنشاء ملف الإعداد
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
<Directory /var/www/example.com/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>
# إنشاء مجلد الويب
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# تفعيل الموقع
sudo a2ensite example.com.conf
# الاختبار وإعادة التحميل
sudo apachectl configtest && sudo systemctl reload apache2
إعداد SSL/TLS (Let's Encrypt)
استخدم Certbot للحصول على شهادة SSL مجانية:
# تثبيت Certbot
sudo apt install certbot -y
# لـ Nginx
sudo apt install python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
# لـ Apache
sudo apt install python3-certbot-apache -y
sudo certbot --apache -d example.com -d www.example.com
# اختبار التجديد التلقائي
sudo certbot renew --dry-run
إعداد SSL يدوي (Nginx)
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/example.com/html;
index index.html;
}
# إعادة توجيه HTTP إلى HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
إعدادات جدار الحماية
# السماح بـ HTTP و HTTPS مع ufw
sudo ufw allow 'Nginx Full'
# أو
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# لـ Apache
sudo ufw allow 'Apache Full'
على خوادم REXE، لا تنسَ فتح منافذ HTTP (80) و HTTPS (443) من جدار حماية Path Panel أيضاً.
الخلاصة
Nginx و Apache خادما ويب قويان لحالات استخدام مختلفة. Nginx مثالي للمحتوى الثابت عالي الأداء والوكيل العكسي، بينما يُفضَّل Apache لتطبيقات PHP والإعدادات القائمة على .htaccess. مع إعداد المضيف الافتراضي على أي من الخادمين، يمكن استضافة نطاقات متعددة على نفس الخادم.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.