دليل Nginx الشامل على Ubuntu: التثبيت، الإعداد، الأداء والأمان

目次

1. مقدمة

يرغب الكثيرون في استخدام Nginx على Ubuntu، ولكن قد يكون من الصعب معرفة من أين تبدأ إذا كنت جديدًا في هذا المجال. في هذه المقالة، سنشرح خطوة بخطوة كيفية تثبيت Nginx وإعداده وإدارته على بيئة Ubuntu بطريقة سهلة الفهم للمبتدئين.

ما هو Nginx؟

يُعرف Nginx (يُلفظ: إنجن إكس) بأنه خادم HTTP عالي الأداء وخادم وكيل عكسي. وبفضل خفته ومرونته، يُستخدم في خوادم الويب والتطبيقات حول العالم. ويتميز بشكل خاص ببنيته التي يمكنها تحمل حركة المرور العالية.

مزايا استخدام Nginx على Ubuntu

Ubuntu هو توزيع Linux شائع، ويتوافق Nginx معه بشكل جيد. نظرًا لإمكانية استخدام نظام إدارة الحزم (APT)، فإن التثبيت والتحديثات سهلة، ويمكن توقع الاستقرار والأمان.

من خلال قراءة هذه المقالة، ستتمكن من فهم ما يلي:

  • كيفية تثبيت Nginx على Ubuntu
  • إجراءات الإعداد والإدارة الأساسية
  • تحسين الأداء واستكشاف الأخطاء وإصلاحها

الآن، دعنا ننتقل إلى العمل الفعلي.

2. خطوات تثبيت Nginx على Ubuntu

لتشغيل Nginx على Ubuntu، تحتاج أولاً إلى تثبيته بالطريقة الصحيحة. هنا، سنشرح خطوات التثبيت بطريقة سهلة الفهم.

التحقق من الحزم المطلوبة

قبل البدء في التثبيت، دعنا نتأكد من أن نظامك محدث. قم بتشغيل الأوامر التالية:

sudo apt update
sudo apt upgrade

تثبيت Nginx

لتثبيت Nginx، أدخل الأمر التالي:

sudo apt install nginx

سيقوم هذا الأمر بتنزيل وتثبيت Nginx تلقائيًا من مستودعات APT الخاصة بـ Ubuntu.

التحقق من التثبيت

للتحقق مما إذا كان التثبيت قد اكتمل بشكل صحيح، تحقق من حالة Nginx باستخدام الأمر التالي:

sudo systemctl status nginx

إذا ظهر “active (running)” في الإخراج، فقد نجح التثبيت.

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

يحتوي Ubuntu على UFW (Uncomplicated Firewall)، والذي يمكن استخدامه للسماح لاتصال Nginx.

sudo ufw allow 'Nginx Full'
sudo ufw enable

الآن، Nginx جاهز للعمل على المنفذ 80 (HTTP) والمنفذ 443 (HTTPS).

3. إعداد Nginx الأساسي على Ubuntu

تثبيت Nginx وحده لا يكفي بعد. بعد ذلك، سنقوم بالإعدادات الأساسية لتمكين الاستخدام الفعال لـ Nginx.

موقع ملفات الإعداد والهيكل الأساسي

توجد ملفات إعداد Nginx الرئيسية في المواقع التالية:

  • ملف الإعداد الرئيسي: /etc/nginx/nginx.conf
  • ملفات إعداد كل موقع: داخل دليل /etc/nginx/sites-available/

بشكل أساسي، يتم إنشاء ملف إعداد المضيف الافتراضي داخل دليل sites-available، ويتم تشغيله عن طريق إنشاء رابط رمزي في دليل sites-enabled.

إعداد المضيف الافتراضي

من خلال إعداد المضيف الافتراضي، يمكنك إدارة نطاقات أو مشاريع متعددة على خادم واحد. في المثال التالي، سنقوم بإعداد example.com.

sudo nano /etc/nginx/sites-available/example.com

أدخل المحتوى التالي:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

بعد الحفظ، قم بتمكين الإعداد باستخدام الأوامر التالية:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

إعداد SSL/TLS

لإجراء اتصالات آمنة، قم بإعداد شهادات SSL/TLS. يمكنك الحصول على شهادات مجانية باستخدام Let’s Encrypt.

أولاً، قم بتثبيت certbot:

sudo apt install certbot python3-certbot-nginx

بعد ذلك، قم بتشغيل الأمر التالي للحصول على شهادة SSL وتكوينها تلقائيًا:

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

قم أيضًا بإعداد التجديد التلقائي لضمان عدم انتهاء صلاحية الشهادة.

4. كيفية بدء تشغيل Nginx وإدارته

بعد تثبيت Nginx وإجراء الإعدادات الأساسية، تحتاج إلى إتقان مهام الإدارة مثل بدء التشغيل والإيقاف وإعادة تحميل الإعدادات عند التغيير. في هذا القسم، سنشرح الأوامر الأساسية اللازمة لإدارة Nginx، وكيفية التعامل مع المشكلات عند حدوثها.

أوامر Nginx الأساسية

على Ubuntu، يتم استخدام الأمر systemctl لإدارة حالة Nginx. فيما يلي الأوامر المقابلة للعمليات الرئيسية:

  1. بدء تشغيل Nginx
   sudo systemctl start nginx
  1. إيقاف Nginx
   sudo systemctl stop nginx
  1. إعادة تشغيل Nginx
    قد تكون هناك حاجة لإعادة التشغيل إذا قمت بتغيير الإعدادات بشكل كبير.
   sudo systemctl restart nginx
  1. إعادة تحميل Nginx
    إذا قمت بتعديل ملفات الإعداد، يمكنك تطبيق التغييرات عن طريق إعادة التحميل دون إعادة التشغيل.
   sudo systemctl reload nginx
  1. التحقق من حالة Nginx
    للتحقق مما إذا كان يعمل بشكل صحيح، استخدم ما يلي:
   sudo systemctl status nginx

إعدادات بدء تشغيل Nginx التلقائي

من خلال تمكين بدء تشغيل Nginx التلقائي، لن تحتاج إلى بدء تشغيله يدويًا بعد إعادة تشغيل النظام.

  1. تمكين بدء التشغيل التلقائي
   sudo systemctl enable nginx
  1. تعطيل بدء التشغيل التلقائي
    إذا كنت بحاجة إلى تعطيله:
   sudo systemctl disable nginx

فحص السجلات واستكشاف الأخطاء وإصلاحها

إذا لم يعمل Nginx كما هو متوقع، فقم بفحص السجلات لتحديد السبب.

  1. فحص سجل الأخطاء
    يتم تسجيل سجلات الأخطاء هنا:
   sudo tail -f /var/log/nginx/error.log
  1. فحص سجل الوصول
    يمكنك التحقق من محتوى طلبات العميل:
   sudo tail -f /var/log/nginx/access.log

المشاكل الشائعة وحلولها

  1. Nginx لا يبدأ
  • السبب: قد يكون هناك خطأ في ملف الإعداد.
  • الحل:
    `bash sudo nginx -t`
    تحقق من ملف الإعداد بحثًا عن الأخطاء وقم بإصلاح المشكلة باستخدام هذا الأمر.
  1. التغييرات لا تنعكس
  • السبب: لم تتم إعادة التحميل أو إعادة التشغيل.
  • الحل:
    بعد تغيير الإعدادات، قم بتشغيل sudo systemctl reload nginx.
  1. المنفذ غير مفتوح
  • السبب: مشكلة في إعدادات جدار الحماية.
  • الحل:
    `bash sudo ufw allow ‘Nginx Full’`

من خلال تطبيق هذه الخطوات، ستتمكن من إدارة Nginx الأساسية بشكل موثوق.

5. إعداد جدار حماية Nginx وتعزيز الأمان

يعد الأمان أمرًا بالغ الأهمية في تشغيل Nginx. في هذا القسم، سنشرح إعدادات المنافذ باستخدام جدار حماية Ubuntu (UFW) وطرق تعزيز أمان Nginx.

فتح المنافذ باستخدام UFW

UFW (Uncomplicated Firewall) هو أداة جدار حماية مثبتة بشكل افتراضي في Ubuntu. لتشغيل Nginx بشكل صحيح، يجب فتح المنفذ 80 (HTTP) والمنفذ 443 (HTTPS).

  1. التحقق من حالة UFW الحالية
   sudo ufw status
  1. تطبيق قواعد Nginx
    افتح المنافذ المطلوبة باستخدام الأمر التالي:
   sudo ufw allow 'Nginx Full'
  1. تمكين UFW
    إذا كان جدار الحماية معطلاً، فقم بتمكينه:
   sudo ufw enable

إعدادات إضافية لتعزيز الأمان

  1. تعطيل أساليب HTTP غير الضرورية
    لزيادة أمان الخادم، قم بتعطيل أساليب HTTP غير الضرورية. أضف الإعداد التالي إلى ملف إعداد Nginx:
   if ($request_method !~ ^(GET|POST|HEAD)$) {
       return 444;
   }
  1. تعطيل فهرسة الدليل
    لمنع الكشف عن محتويات الدليل، أضف ما يلي إلى ملف الإعداد:
   autoindex off;
  1. تعزيز SSL/TLS
    لاستخدام أساليب تشفير قوية، أضف ما يلي إلى إعدادات SSL:
   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_prefer_server_ciphers on;
   ssl_ciphers HIGH:!aNULL:!MD5;

6. تحسين أداء Nginx واستكشاف المشاكل وحلها

يُستخدم Nginx على نطاق واسع كخادم ويب عالي الأداء، ولكن يمكن تحقيق المزيد من الأداء من خلال الضبط المناسب. في هذا القسم، سنشرح كيفية تحسين أداء Nginx وحل المشكلات الشائعة.

تحسين الأداء

1. إعداد عمليات العامل (Worker Processes)

يعتمد Nginx على تصميم متعدد العمليات، ويمكن تحسين الأداء عن طريق إعداد العدد المناسب من عمليات العامل.

قم بتحرير ملف الإعداد /etc/nginx/nginx.conf:

worker_processes auto;

من خلال تحديد auto، سيتم تعيين العدد الأمثل من العمليات تلقائيًا وفقًا لعدد نوى وحدة المعالجة المركزية للخادم.

2. زيادة عدد الاتصالات لكل عملية عامل

افتراضيًا، يتم تقييد عدد الاتصالات لكل عملية عامل واحدة. من خلال زيادة هذه القيمة، تتحسن قدرة المعالجة تحت الحمل العالي.

في ملف الإعداد، تحقق أو أضف السطر التالي:

worker_connections 1024;

3. تمكين HTTP/2

عند تمكين HTTP/2، يتم تبسيط الاتصال بالمتصفح، وتزداد سرعة تحميل موقع الويب.

قم بتحرير ملف /etc/nginx/sites-available/example.com، وقم بتغيير توجيه listen إلى ما يلي:

listen 443 ssl http2;

بعد ذلك، أعد تحميل Nginx:

sudo systemctl reload nginx

4. إعداد ضغط المحتوى

من خلال ضغط الملفات وإرسالها، يمكنك تقليل حجم حركة المرور وتحسين سرعة تحميل الصفحة.

أضف أو قم بتمكين ما يلي في ملف الإعداد:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. إعداد التخزين المؤقت (Caching)

من خلال إعداد التخزين المؤقت للملفات الثابتة، يمكنك تقليل عدد الطلبات لنفس المورد.

أضف ما يلي إلى كتلة الخادم:

location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

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

1. معالجة الطلبات بطيئة تحت الحمل العالي

  • السبب
    غالبًا ما تكون عمليات العامل أو عدد الاتصالات غير مضبوطة بشكل صحيح.
  • الحل
  • ضبط عمليات العامل وعدد اتصالات العامل.
  • إدخال موازن تحميل (Load Balancer) إذا لزم الأمر.

2. ظهور خطأ 403 Forbidden

  • السبب
  • المسار في توجيه root في ملف إعداد Nginx خاطئ.
  • أذونات الدليل أو الملف غير مناسبة.
  • الحل
  • التحقق من توجيه root في ملف الإعداد وتحديد المسار الصحيح.
  • تصحيح الأذونات باستخدام الأمر التالي:
    `bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html`

3. الخادم يتجاوز المهلة الزمنية (Timeout)

  • السبب
  • تستغرق معالجة طلب العميل وقتًا طويلاً جدًا.
  • الحل
    ضبط المهلة الزمنية. أضف أو غيّر ما يلي في ملف الإعداد:
  proxy_read_timeout 300;
  proxy_connect_timeout 300;
  proxy_send_timeout 300;

4. حدوث خطأ عند إعادة تشغيل Nginx

  • السبب
    يحتوي ملف الإعداد على خطأ.
  • الحل
    قم بإجراء فحص نحوي باستخدام الأمر التالي قبل حفظ الإعدادات:
  sudo nginx -t

من خلال تنفيذ هذه الخطوات، يمكنك تحقيق أقصى قدر من أداء Nginx والتعامل مع المشكلات الشائعة.

7. الخلاصة والخطوات التالية

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

مراجعة عامة للمقالة

1. خطوات تثبيت Nginx على Ubuntu

  • لقد تعلمنا كيفية إعداد الحزم المطلوبة وتثبيت Nginx باستخدام APT.
  • قمنا بإعداد جدار الحماية (UFW) للسماح لاتصال Nginx.

2. الإعدادات الأساسية

  • لقد فهمنا موقع وهيكل ملفات الإعداد، وتعلمنا خطوات إعداد المضيف الافتراضي و SSL/TLS.
  • لقد أتقننا طرق الإعداد المحددة من خلال أمثلة التعليمات البرمجية الفعلية.

3. كيفية بدء التشغيل والإدارة

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

4. إعداد جدار الحماية وتعزيز الأمان

  • لقد طبقنا إجراءات تعزيز الأمان مثل فتح المنافذ باستخدام UFW وتعطيل أساليب HTTP غير الضرورية.

5. تحسين الأداء وحل المشاكل

  • لقد شرحنا طرق الضبط المحددة مثل تحسين عمليات العامل وتمكين HTTP/2 وإعداد التخزين المؤقت.
  • لقد تعلمنا كيفية التعامل مع المشكلات الشائعة، مما يحقق تشغيلًا أكثر استقرارًا.

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

من خلال تعلم خطوات التثبيت والإعداد الأساسية الموضحة في هذه المقالة، يجب أن تكون قد اكتسبت الأساسيات لتشغيل Nginx على Ubuntu. لمزيد من تعميق مهاراتك، فكر في الخطوات التالية:

  1. تعلم إعدادات Nginx المتقدمة
  • تعلم المزيد عن موازنة التحميل (Load Balancing) وإعدادات الوكيل العكسي المتقدمة، وتهدف إلى عمليات أكثر تقدمًا.
  • جرب حالات استخدام جديدة من خلال الاستفادة من الوحدات (على سبيل المثال، وحدة RTMP في Nginx).
  1. مزيد من تعزيز الأمان
  • فكر في إدخال جدار حماية تطبيقات الويب (WAF) والاستفادة من وحدات Nginx المتعلقة بالأمان.
  1. إدخال الأتمتة
  • يمكنك تحسين كفاءة العمل من خلال تعلم كيفية أتمتة نشر Nginx وإدارته باستخدام Ansible أو Docker.
  1. الاستفادة من أدوات المراقبة والتحسين
  • أدخل أدوات المراقبة مثل Prometheus و Grafana لتصوير أداء Nginx في الوقت الفعلي.

أخيرًا

Nginx هو خادم ويب سريع ومرن، ومن خلال تشغيله بشكل صحيح، يمكنه التعامل مع العديد من حالات الاستخدام. استخدم المعرفة التي اكتسبتها في هذه المقالة لتطبيقها على مشاريعك الفعلية.

إذا نشأت لديك المزيد من الأسئلة أو الاحتياجات الجديدة في المستقبل، نوصي بالرجوع إلى وثائق Nginx الرسمية وموارد المجتمع. نأمل أن تكون هذه المقالة قد ساعدتك في تشغيل خادم الويب الخاص بك!