كيفية تثبيت Nginx على Rocky Linux 9

المقدمة

إن Nginx هو واحد من أشهر خوادم الويب في العالم ويتحمل مسؤولية استضافة بعض من أكبر وأكثر المواقع ازدحامًا على الإنترنت. إنه خيار خفيف يمكن استخدامه ent كخادم ويب أو بروكسي عكسي.

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

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

قبل أن تبدأ في هذا الدليل، يجب أن تكون لديك مستخدم عادي بامتيازات sudo مكون على خادمك. يمكنك تعلم كيفية تكوين حساب مستخدم عادي من خلال اتباع دليلنا الإعداد الأولي لخادم Rocky Linux 9.

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

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

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

نظرًا لأن Nginx متاح في مستودعات Rocky الافتراضية، يمكنك تثبيته بأمر واحد، باستخدام مدير الحزم dnf.

قم بتثبيت حزمة nginx باستخدام dnf install:

  1. sudo dnf install nginx

عندما يُطلب منك، أدخل y لتأكيد رغبتك في تثبيت nginx. بعد ذلك، سيقوم dnf بتثبيت Nginx وأي تبعيات مطلوبة على الخادم الخاص بك.

بعد انتهاء التثبيت، قم بتشغيل الأوامر التالية لتمكين وبدء خادم الويب:

  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx

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

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

إذا كنت قد قمت بتمكين جدار الحماية firewalld كجزء من دليل إعداد الخادم الأولي لـ Rocky Linux 9، ستحتاج إلى ضبط إعدادات جدار الحماية للسماح بالاتصالات الخارجية على خادم الويب Nginx الخاص بك، الذي يعمل على المنفذ 80 افتراضيًا.

قم بتشغيل الأمر التالي لتمكين الاتصالات HTTP بشكل دائم على المنفذ \code{80}:

  1. sudo firewall-cmd --permanent --add-service=http

للتحقق من أن خدمة جدار الحماية \code{http} تمت إضافتها بشكل صحيح، يمكنك تشغيل الأمر:

  1. sudo firewall-cmd --permanent --list-all

سترى إخراجًا مثل هذا:

Output
public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

لتطبيق التغييرات، ستحتاج إلى إعادة تحميل خدمة الجدار الناري:

  1. sudo firewall-cmd --reload

يجب أن يكون خادم الويب الخاص بك الآن متاحًا للزوار الخارجيين.

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

في هذه المرحلة، يجب أن يكون خادم الويب الخاص بك قيد التشغيل.

يمكنك استخدام أمر \code{systemctl status} للتأكد من أن الخدمة قيد التشغيل:

  1. systemctl status nginx
Output
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Main PID: 18387 (nginx) Tasks: 3 (limit: 10938) Memory: 2.8M CPU: 43ms CGroup: /system.slice/nginx.service ├─18387 "nginx: master process /usr/sbin/nginx" ├─18388 "nginx: worker process" └─18389 "nginx: worker process"

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

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

  1. curl -4 icanhazip.com

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

http://your_server_ip

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

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

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

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

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

  1. sudo systemctl stop nginx

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

  1. sudo systemctl start nginx

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

  1. sudo systemctl restart nginx

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

  1. sudo systemctl reload nginx

في وقت سابق من هذا البرنامج التعليمي، قمت بتكوين Nginx للبدء تلقائيًا عندما يقوم الخادم بالتمهيد. يمكنك تعطيل هذا السلوك باستخدام systemctl disable:

  1. sudo systemctl disable nginx

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

  1. sudo systemctl enable nginx

الخطوة 5 – التعرف على ملفات ودلائل Nginx المهمة

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

المحتوى

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

تكوين الخادم

  • /etc/nginx: دليل تكوين Nginx. تتواجد جميع ملفات تكوين Nginx هنا.
  • /etc/nginx/nginx.conf: ملف تكوين Nginx الرئيسي. يمكن تعديله لجعل تغييرات على التكوين العام لـ Nginx.
  • /etc/nginx/conf.d/: يحتوي هذا الدليل على ملفات تكوين كتلة الخادم، حيث يمكنك تعريف المواقع الويب التي يتم استضافتها داخل Nginx. النهج النموذجي هو وضع كل موقع ويب في ملف منفصل يتم تسميته باسم نطاق الموقع، مثل your_domain.conf.

سجلات الخادم

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

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

الخطوة 6 – إعداد كتل الخادم (اختياري)

عند استخدام خادم الويب Nginx، يمكن استخدام كتل الخوادم (مشابهة للمضيفين الافتراضيين في Apache) لتنظيم تفاصيل التكوين واستضافة أكثر من مجال واحد من خادم واحد. في Rocky Linux 9، تُحدد كتل الخادم في ملفات .conf الموجودة في /etc/nginx/conf.d. سنقوم بإعداد مجال يُسمى your_domain، ولكن يجب عليك استبدال هذا باسم مجالك الخاص.

بشكل افتراضي، يتم تكوين Nginx على Rocky Linux 9 لخدمة المستندات من دليل في /usr/share/nginx/html. بينما يعمل هذا بشكل جيد لموقع واحد، يمكن أن يصبح غير قابل للإدارة إذا كنت تستضيف مواقع متعددة. بدلاً من تعديل /usr/share/nginx/html، ستقوم بإنشاء هيكل الدليل ضمن /var/www لموقع your_domain، مع الاحتفاظ بـ /usr/share/nginx/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

الآن، ستقوم بإنشاء صفحة index.html عينة لاختبار تكوين كتلة الخادم. المحرر النصي الافتراضي الذي يأتي مع Rocky Linux 9 هو vi. vi هو محرر نصوص قوي للغاية، ولكن قد يكون صعبًا بعض الشيء للمستخدمين الذين يفتقرون إلى الخبرة في استخدامه. قد ترغب في تثبيت محرر نصوص أكثر ودية مثل nano لتسهيل تحرير ملفات التكوين على خادم Rocky Linux 9 الخاص بك:

  1. sudo dnf install nano

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

  1. 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! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

احفظ وأغلق الملف عند الانتهاء. إذا كنت تستخدم nano، يمكنك حفظ والخروج بالضغط على CTRL + X، ثم عند الطلب، Y ومن ثم Enter.

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

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

الصق التكوين العيني التالي:

/etc/nginx/conf.d/your_domain.conf
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 إلى اسم نطاقنا. احفظ وأغلق الملف.

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

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

بعد ذلك، قم بفحص التأكد من عدم وجود أخطاء في بنية أي من ملفات Nginx الخاصة بك، باستخدام nginx -t:

  1. sudo nginx -t

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

  1. sudo systemctl restart nginx

قبل أن تتمكن من اختبار التغييرات من متصفحك، ستحتاج إلى تحديث سياقات الأمان SELinux للخادم الخاص بك بحيث يسمح لـ Nginx بخدمة المحتوى من دليل /var/www/your_domain.

سيسمح تحديث سياق chcon هذا بخدمة الجذر المخصص للمستندات الخاصة بك كمحتوى HTTP:

  1. chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

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

الاستنتاج

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9