المقدمة
إن Nginx هو واحد من أشهر خوادم الويب في العالم ويتحمل مسؤولية استضافة بعض من أكبر وأكثر المواقع ازدحامًا على الإنترنت. إنه خيار خفيف يمكن استخدامه ent كخادم ويب أو بروكسي عكسي.
في هذا الدليل، ستستعرض كيفية تثبيت Nginx على خادم Rocky Linux 9 الخاص بك، وضبط جدار الحماية، وإدارة عملية Nginx، وإعداد كتل الخوادم لاستضافة أكثر من نطاق ويب من خادم واحد.
المتطلبات المسبقة
قبل أن تبدأ في هذا الدليل، يجب أن تكون لديك مستخدم عادي بامتيازات sudo مكون على خادمك. يمكنك تعلم كيفية تكوين حساب مستخدم عادي من خلال اتباع دليلنا الإعداد الأولي لخادم Rocky Linux 9.
سوف ترغب أيضًا اختياريًا في تسجيل اسم نطاق قبل إكمال الخطوات الأخيرة في هذا البرنامج التعليمي. لمعرفة المزيد حول إعداد اسم النطاق مع DigitalOcean، يرجى الرجوع إلى مقدمة DigitalOcean DNS.
عندما تكون لديك حساب متاح، قم بتسجيل الدخول كمستخدم غير root للبدء.
الخطوة 1 – تثبيت Nginx
نظرًا لأن Nginx متاح في مستودعات Rocky الافتراضية، يمكنك تثبيته بأمر واحد، باستخدام مدير الحزم dnf
.
قم بتثبيت حزمة nginx
باستخدام dnf install
:
- sudo dnf install nginx
عندما يُطلب منك، أدخل y
لتأكيد رغبتك في تثبيت nginx
. بعد ذلك، سيقوم dnf
بتثبيت Nginx وأي تبعيات مطلوبة على الخادم الخاص بك.
بعد انتهاء التثبيت، قم بتشغيل الأوامر التالية لتمكين وبدء خادم الويب:
- sudo systemctl enable nginx
- sudo systemctl start nginx
سيجعل ذلك Nginx يعيد التشغيل تلقائيًا في كل مرة يتم فيها إعادة تشغيل الخادم الخاص بك. يجب أن يكون خادم الويب الجديد الخاص بك الآن جاهزًا للاستخدام، ولكن قبل اختباره، ربما تحتاج إلى إجراء تغيير في تكوين جدار الحماية الخاص بك.
الخطوة 2 – ضبط جدار الحماية
إذا كنت قد قمت بتمكين جدار الحماية firewalld
كجزء من دليل إعداد الخادم الأولي لـ Rocky Linux 9، ستحتاج إلى ضبط إعدادات جدار الحماية للسماح بالاتصالات الخارجية على خادم الويب Nginx الخاص بك، الذي يعمل على المنفذ 80
افتراضيًا.
قم بتشغيل الأمر التالي لتمكين الاتصالات HTTP بشكل دائم على المنفذ \code{80}:
- sudo firewall-cmd --permanent --add-service=http
للتحقق من أن خدمة جدار الحماية \code{http} تمت إضافتها بشكل صحيح، يمكنك تشغيل الأمر:
- sudo firewall-cmd --permanent --list-all
سترى إخراجًا مثل هذا:
Outputpublic
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:
لتطبيق التغييرات، ستحتاج إلى إعادة تحميل خدمة الجدار الناري:
- sudo firewall-cmd --reload
يجب أن يكون خادم الويب الخاص بك الآن متاحًا للزوار الخارجيين.
الخطوة 3 – التحقق من خادم الويب الخاص بك
في هذه المرحلة، يجب أن يكون خادم الويب الخاص بك قيد التشغيل.
يمكنك استخدام أمر \code{systemctl status} للتأكد من أن الخدمة قيد التشغيل:
- 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 العام الخاص بك كما تم استلامه من موقع آخر على الإنترنت:
- curl -4 icanhazip.com
عندما يكون لديك عنوان IP الخاص بخادمك، أدخله في شريط عنوان متصفحك:
http://your_server_ip
يجب أن تتلقى صفحة الهبوط الافتراضية لـ Nginx:
إذا كنت على هذه الصفحة، فإن خادمك يعمل بشكل صحيح وجاهز للإدارة.
الخطوة 4 – إدارة عملية Nginx
الآن بعد أن لديك خادم الويب الخاص بك يعمل، دعنا نستعرض بعض أوامر إدارة الخدمة.
لإيقاف خادم الويب الخاص بك، استخدم systemctl stop
:
- sudo systemctl stop nginx
لبدء خادم الويب عندما يكون متوقفًا، استخدم systemctl start
:
- sudo systemctl start nginx
لإيقاف الخدمة ثم بدء تشغيلها مرة أخرى، استخدم systemctl restart
:
- sudo systemctl restart nginx
إذا كنت تقوم فقط بإجراء تغييرات في التكوين، يمكن أن يعيد Nginx التحميل دون إسقاط الاتصالات في كثير من الأحيان. للقيام بذلك، استخدم systemctl reload
:
- sudo systemctl reload nginx
في وقت سابق من هذا البرنامج التعليمي، قمت بتكوين Nginx للبدء تلقائيًا عندما يقوم الخادم بالتمهيد. يمكنك تعطيل هذا السلوك باستخدام systemctl disable
:
- sudo systemctl disable nginx
لإعادة تمكين الخدمة للبدء عند التمهيد، يمكنك كتابة:
- 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
لإنشاء أي دلائل رئيسية ضرورية:
- sudo mkdir -p /var/www/your_domain/html
التالي، قم بتخصيص ملكية الدليل باستخدام متغير البيئة $USER
، الذي يجب أن يشير إلى مستخدم النظام الحالي الخاص بك:
- sudo chown -R $USER:$USER /var/www/your_domain/html
الآن، ستقوم بإنشاء صفحة index.html
عينة لاختبار تكوين كتلة الخادم. المحرر النصي الافتراضي الذي يأتي مع Rocky Linux 9 هو vi
. vi
هو محرر نصوص قوي للغاية، ولكن قد يكون صعبًا بعض الشيء للمستخدمين الذين يفتقرون إلى الخبرة في استخدامه. قد ترغب في تثبيت محرر نصوص أكثر ودية مثل nano
لتسهيل تحرير ملفات التكوين على خادم Rocky Linux 9 الخاص بك:
- sudo dnf install nano
بعد ذلك، قم بإنشاء صفحة index.html
عينة باستخدام nano
أو محررك المفضل:
- nano /var/www/your_domain/html/index.html
ضمنها، أضف الكود 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
:
- sudo nano /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
:
- sudo nginx -t
إذا لم تكن هناك أي مشاكل، قم بإعادة تشغيل Nginx لتمكين التغييرات الخاصة بك:
- sudo systemctl restart nginx
قبل أن تتمكن من اختبار التغييرات من متصفحك، ستحتاج إلى تحديث سياقات الأمان SELinux للخادم الخاص بك بحيث يسمح لـ Nginx بخدمة المحتوى من دليل /var/www/your_domain
.
سيسمح تحديث سياق chcon
هذا بخدمة الجذر المخصص للمستندات الخاصة بك كمحتوى HTTP:
- 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