كيفية تثبيت Nginx على Ubuntu 20.04

مقدمة

إنجينكس هو واحد من أشهر خوادم الويب في العالم وهو مسؤول عن استضافة بعض من أكبر المواقع وأعلى حركة مرور على الإنترنت. إنه خيار خفيف يمكن استخدامه entanto كخادم ويب أو كبروكسي عكسي.

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

بسهولة نشر التطبيقات مع منصة تطبيقات DigitalOcean. نشر مباشرة من GitHub في دقائق.

المتطلبات المسبقة

قبل أن تبدأ في هذا الدليل، يجب أن تكون لديك مستخدم عادي غير جذري مع امتيازات sudo مكونة على خادمك. يمكنك معرفة كيفية تكوين حساب مستخدم عادي عن طريق اتباع دليلنا إعداد الخادم الأولي لـ Ubuntu 20.04.

سوف ترغب أيضًا اختياريًا في تسجيل اسم نطاق قبل إكمال الخطوات الأخيرة في هذا البرنامج التعليمي. لمعرفة المزيد حول إعداد اسم النطاق مع DigitalOcean، يرجى الرجوع إلى مقدمة إلى DNS DigitalOcean.

عندما تكون لديك حساب متاح، قم بتسجيل الدخول كمستخدم غير جذري للبدء.

الخطوة 1 – تثبيت Nginx

نظرًا لأن Nginx متاح في مستودعات Ubuntu الافتراضية، يمكن تثبيته من هذه المستودعات باستخدام نظام التعبئة apt.

نظرًا لأن هذه هي تفاعلنا الأول مع نظام التعبئة apt في هذه الجلسة، سنقوم بتحديث فهرس الحزم المحلي حتى نتمكن من الوصول إلى قوائم الحزم الأحدث. بعد ذلك، يمكننا تثبيت nginx:

  1. sudo apt update
  2. sudo apt install nginx

بعد قبول الإجراء، سيقوم apt بتثبيت Nginx وأي تبعيات مطلوبة على الخادم الخاص بك.

الخطوة 2 – ضبط جدار الحماية

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

قم بسرد إعدادات التطبيقات التي يعرفها ufw كيفية العمل معها عن طريق كتابة:

  1. sudo ufw app list

يجب أن تحصل على قائمة بملفات تكوين التطبيق:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

كما هو موضح من خلال الإخراج، هناك ثلاثة ملفات تكوين متاحة لـ Nginx:

  • Nginx الكامل: يفتح هذا الملف التكويني كل من المنفذ 80 (حركة مرور الويب العادية غير المشفرة) والمنفذ 443 (حركة مرور مشفرة ببروتوكول TLS/SSL)
  • Nginx HTTP: يفتح هذا الملف التكويني فقط المنفذ 80 (حركة مرور الويب العادية غير المشفرة)
  • Nginx HTTPS: يفتح هذا الملف التكويني فقط المنفذ 443 (حركة مرور مشفرة ببروتوكول TLS/SSL)

يُوصى بتمكين الملف التكويني الأكثر قيدًا والذي سيسمح لحركة المرور التي قمت بتكوينها. في الوقت الحالي، سنحتاج فقط إلى السماح بحركة المرور على المنفذ 80.

يمكنك تمكين ذلك عن طريق كتابة:

  1. sudo ufw allow 'Nginx HTTP'

يمكنك التحقق من التغيير عن طريق كتابة:

  1. sudo ufw status

سيوضح الإخراج أي حركة مرور HTTP مسموح بها:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

الخطوة 3 – التحقق من خادم الويب الخاص بك

في نهاية عملية التثبيت، يبدأ Ubuntu 20.04 Nginx. يجب أن يكون خادم الويب قد بدأ بالفعل ويعمل.

يمكننا التحقق من نظام التشغيل systemd للتأكد من تشغيل الخدمة عن طريق كتابة:

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

كما تم تأكيده من خلال هذا الإخراج، بدأت الخدمة بنجاح. ومع ذلك، أفضل طريقة لاختبار هذا هي طلب صفحة فعلية من Nginx.

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

  1. curl -4 icanhazip.com

عندما تحصل على عنوان IP الخادم الخاص بك، أدخله في شريط عنوان متصفحك:

http://your_server_ip

يجب أن تتلقى صفحة Nginx الافتراضية:

إذا كنت على هذه الصفحة، فإن الخادم الخاص بك يعمل بشكل صحيح وجاهز للإدارة.

الخطوة 4 – إدارة عملية Nginx

الآن بعد أن قمت بتشغيل خادم الويب الخاص بك، دعنا نستعرض بعض الأوامر الأساسية للإدارة.

لإيقاف خادم الويب الخاص بك، اكتب:

  1. sudo systemctl stop nginx

لبدء خادم الويب عندما يتوقف، اكتب:

  1. sudo systemctl start nginx

لإيقاف الخدمة ثم بدء تشغيلها مرة أخرى، اكتب:

  1. sudo systemctl restart nginx

إذا كنت تقوم فقط بإجراء تغييرات في الإعدادات، يمكن أن يعيد Nginx التحميل في كثير من الأحيان دون إسقاط الاتصالات. للقيام بذلك، اكتب:

  1. sudo systemctl reload nginx

افتراضيًا، يتم تكوين Nginx للبدء تلقائيًا عند تشغيل الخادم. إذا لم يكن هذا ما تريده، يمكنك تعطيل هذا السلوك عن طريق كتابة:

  1. sudo systemctl disable nginx

لإعادة تمكين الخدمة للبدء عند التمهيد، يمكنك كتابة:

  1. sudo systemctl enable nginx

لقد تعلمت الآن الأوامر الأساسية للإدارة ويجب أن تكون جاهزًا لتكوين الموقع لاستضافة أكثر من نطاق واحد.

عند استخدام خادم الويب Nginx، يمكن استخدام كتل الخادم (مشابهة للمضيفين الافتراضيين في Apache) لتغليف تفاصيل التكوين واستضافة أكثر من نطاق واحد من خادم واحد. سنقوم بإعداد نطاق يُسمى your_domain، ولكن يجب استبدال ذلك باسم النطاق الخاص بك.

Nginx على Ubuntu 20.04 يحتوي على كتلة خادم واحدة مفعلة افتراضيًا مُكونة لخدمة المستندات من دليل في /var/www/html. بينما يعمل هذا بشكل جيد لموقع واحد، يمكن أن يصبح غير عملي إذا كنت تستضيف مواقع متعددة. بدلاً من تعديل /var/www/html، دعنا نقوم بإنشاء هيكل دليل داخل /var/www لموقعنا your_domain، متركًا /var/www/html في مكانه كالدليل الافتراضي الذي يُخدم إذا لم يطابق طلب العميل أي مواقع أخرى.

أنشئ الدليل لـyour_domain على النحو التالي، باستخدام العلامة -p لإنشاء أي دلائل أبوية ضرورية:

  1. sudo mkdir -p /var/www/your_domain/html

ثم، قم بتعيين ملكية الدليل باستخدام متغير البيئة $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

إذا كنت لم تقم بتعديل قيمة umask الخاصة بك، فإن أذونات جذور الويب الخاصة بك يجب أن تكون صحيحة. لضمان صحة أذوناتك والسماح للمالك بقراءة وكتابة وتنفيذ الملفات بينما يتم منح السماح فقط للقروبات والآخرين بالقراءة والتنفيذ، يمكنك إدخال الأمر التالي:

  1. sudo chmod -R 755 /var/www/your_domain

بعد ذلك، قم بإنشاء صفحة index.html عينة باستخدام nano أو محررك المفضل:

  1. sudo nano /var/www/your_domain/html/index.html

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

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

احفظ وأغلق الملف بالضغط على Ctrl+X للخروج، ثم عند الطلب على الحفظ، اضغط Y ثم Enter.

لكي يتمكن Nginx من تقديم هذا المحتوى، من الضروري إنشاء كتلة خادم بالتوجيهات الصحيحة. بدلاً من تعديل ملف التكوين الافتراضي مباشرةً، دعنا نقوم بإنشاء واحد جديد في /etc/nginx/sites-available/اسم_نطاقك:

  1. sudo nano /etc/nginx/sites-available/your_domain

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

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

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

لاحظ أننا قمنا بتحديث تكوين root لدينا لديريتورينا الجديد، و server_name لاسم النطاق الخاص بنا.

بعد ذلك، دعنا نقوم بتمكين الملف عن طريق إنشاء رابط منه إلى الدليل sites-enabled، الذي يقرأ Nginx منه أثناء التشغيل:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

ملاحظة: يستخدم Nginx ممارسة شائعة تُسمى الروابط الرمزية، أو الروابط الرمزية، لتتبع أي من كتل الخادم الخاصة بك مُمكَّنة. إن إنشاء رابط رمزي شبيه بإنشاء اختصار على القرص، بحيث يمكنك في وقت لاحق حذف الاختصار من دليل sites-enabled بينما تحتفظ بكتلة الخادم في sites-available إذا كنت ترغب في تمكينها.

الآن تم تمكين كتلتي خادم وتكوينهما للاستجابة للطلبات استنادًا إلى توجيهات listen و server_name (يمكنك قراءة المزيد حول كيفية معالجة Nginx لهذه التوجيهات هنا):

  • your_domain: ستستجيب للطلبات المتعلقة بـ your_domain و www.your_domain.
  • default: ستستجيب لأي طلبات على المنفذ 80 التي لا تتطابق مع الكتلتين الأخريين.

لتجنب مشكلة محتملة في ذاكرة الدلو التي يمكن أن تنشأ من إضافة أسماء خادم إضافية، من الضروري ضبط قيمة واحدة في ملف /etc/nginx/nginx.conf. افتح الملف:

  1. sudo nano /etc/nginx/nginx.conf

ابحث عن توجيه server_names_hash_bucket_size واحذف رمز # لإلغاء تعليق السطر. إذا كنت تستخدم nano، يمكنك البحث بسرعة عن الكلمات في الملف عن طريق الضغط على CTRL و w.

ملاحظة: تعليق الأسطر في الشفرة – عادةً عن طريق وضع # في بداية السطر – هو طريقة أخرى لتعطيلها دون الحاجة إلى حذفها فعلياً. يتم شحن ملفات التكوين مع العديد من الخيارات المعلقة حتى يمكن تمكينها أو تعطيلها، عن طريق تبديلها بين الشفرة الفعالة والوثائق.

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

قم بحفظ وإغلاق الملف عند الانتهاء.

ثم، قم بالاختبار للتأكد من عدم وجود أخطاء في الصياغة النحوية في أي من ملفات Nginx الخاصة بك:

  1. sudo nginx -t

إذا لم تكن هناك مشاكل، قم بإعادة تشغيل Nginx لتمكين التغييرات الخاصة بك:

  1. sudo systemctl restart nginx

يجب أن يكون Nginx الآن يخدم اسم النطاق الخاص بك. يمكنك اختبار ذلك عن طريق الانتقال إلى http://your_domain، حيث يجب أن ترى شيئًا مثل هذا:

الخطوة 6 – التعرف على الملفات والمجلدات المهمة في Nginx

الآن بعد أن تعرفت على كيفية إدارة خدمة Nginx نفسها، يجب أن تخصص بضع دقائق لتعرف على بعض المجلدات والملفات المهمة.

المحتوى

  • /var/www/html: المحتوى الويب الفعلي، والذي بشكل افتراضي يتكون فقط من صفحة Nginx الافتراضية التي رأيتها سابقًا، يتم تقديمه من داخل دليل /var/www/html. يمكن تغيير ذلك عن طريق تعديل ملفات تكوين Nginx.

تكوين الخادم

  • /etc/nginx: دليل تكوين Nginx. جميع ملفات تكوين Nginx موجودة هنا.
  • /etc/nginx/nginx.conf: ملف تكوين Nginx الرئيسي. يمكن تعديله لإجراء تغييرات على التكوين العام لـ Nginx.
  • /etc/nginx/sites-available/: الدليل الذي يمكن فيه تخزين كتل الخوادم لكل موقع. لن يستخدم Nginx ملفات التكوين الموجودة في هذا الدليل ما لم يتم ربطها بالدليل sites-enabled. بشكل عام، يتم إجراء جميع تكوينات كتل الخوادم في هذا الدليل، ثم يتم تمكينها عن طريق الربط بالدليل الآخر.
  • /etc/nginx/sites-enabled/: الدليل الذي يتم فيه تخزين كتل الخوادم الفردية التي تم تمكينها. عادةً ما يتم إنشاؤها عن طريق الربط بملفات تكوين موجودة في الدليل sites-available.
  • /etc/nginx/snippets: يحتوي هذا الدليل على شظايا تكوين يمكن تضمينها في أماكن أخرى في تكوين Nginx. شرائح التكوين التي يمكن تكرارها بشكل متكرر هي مرشحات جيدة لإعادة التكوين في شظايا.

سجلات الخادم

  • /var/log/nginx/access.log: يتم تسجيل كل طلب إلى خادم الويب الخاص بك في هذا الملف السجل ما لم يتم تكوين Nginx للقيام بغير ذلك.
  • /var/log/nginx/error.log: سيتم تسجيل أي أخطاء Nginx في هذا السجل.

الاستنتاج

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

إذا كنت ترغب في بناء ستاك تطبيق كامل الخدمة، تحقق من المقالة كيفية تثبيت Linux، Nginx، MySQL، PHP (LEMP stack) على Ubuntu 20.04.

لإعداد HTTPS لاسم النطاق الخاص بك باستخدام شهادة SSL مجانية باستخدام Let’s Encrypt، يجب أن تنتقل إلى كيفية تأمين Nginx باستخدام Let’s Encrypt على Ubuntu 20.04.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04