كيفية تثبيت Varnish Cache 6 على Nginx على CentOS/RHEL 8

تخزين Varnish (المعروفة عادةً باسم Varnish) هي مسرِّع عكسي مفتوح المصدر وقوي وسريع لبروتوكول HTTP، يتميز ببنيته الحديثة ولغة تكوين مرنة. كونه بروكسي عكسي يعني ببساطة أنه برنامج يمكنك نشره أمام خادم الويب الخاص بك (الذي يعتبر خادم المصدر أو الخلفية) مثل Nginx، لاستقبال طلبات HTTP من العملاء وإعادة توجيهها إلى خادم المصدر للمعالجة. ويقوم بتقديم الاستجابة من خادم المصدر إلى العملاء.

Varnish يعمل كوسيط بين Nginx و العملاء ولكن مع بعض فوائد الأداء. الغرض الرئيسي منه هو تسريع تحميل تطبيقاتك، من خلال العمل كمحرك للتخزين المؤقت. يستقبل الطلبات من العملاء ويعيد توجيهها إلى الخلفية مرة واحدة لتخزين المحتوى المطلوب (تخزين الملفات وشظايا الملفات في الذاكرة). ثم سيتم تقديم جميع الطلبات المستقبلية للمحتوى مماثل تمامًا من التخزين المؤقت.

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

بجانب التخزين المؤقت، Varnish لديها أيضًا حالات استخدام أخرى بما في ذلك توجيه طلبات HTTP وموازن الحمل وجدار الحماية لتطبيقات الويب وأكثر من ذلك.

الـفارنيش مُكوَّن باستخدام لغة تكوين الـفارنيش المدمجة بشكل مرنة للغاية (VCL) التي تمكّنك من كتابة سياسات حول كيفية معالجة الطلبات الواردة. يمكنك استخدامه لبناء حلول مُخصَّصة، وقواعد، ووحدات.

في هذا المقال، سنتناول الخطوات اللازمة لتثبيت خادم الويب إنجينكس وفارنيش كاش 6 على خادم سنت أو إس 8 أو ريد هات إنتربرايز لينكس 8. يجب على مستخدمي ريد هات إنتربرايز لينكس 8 التأكد من تمكين اشتراك ريد هات.

لإعداد مجموعة ليمب كاملة بدلاً من تثبيت خادم الويب إنجينكس وحده، تحقق من الدلائل التالية.

  1. كيفية تثبيت خادم ليمب على سنت أو إس 8
  2. كيفية تثبيت خادم ليمب على ريد هات إنتربرايز لينكس 8

الخطوة 1: تثبيت خادم الويب إنجينكس على سنت أو إس/ريد هات إنتربرايز 8

1. يأتي CentOS/RHEL 8 مع أحدث إصدار من برنامج خادم الويب Nginx، لذا سنقوم بتثبيته من مستودع البرامج الافتراضي باستخدام الأوامر التالية dnf.

# dnf update
# dnf install nginx

2. بمجرد تثبيت Nginx، تحتاج إلى بدء التشغيل وتمكينه والتحقق من الحالة باستخدام الأوامر التالية systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. إذا كنت قلقًا بعض الشيء، يمكنك أيضًا التحقق من مأخذ TCP لـ Nginx، الذي يعمل على المنفذ 80 افتراضيًا، باستخدام الأمر التالي ss.

# ss -tpln
Check Nginx TCP Port

4. إذا كنت تقوم بتشغيل جدار الحماية على النظام، تأكد من تحديث قواعد جدار الحماية للسماح بالطلبات إلى خادم الويب.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

الخطوة 2: تثبيت Varnish Cache 6 على CentOS/RHEL 8

5. يقدم CentOS/RHEL 8 وحدة Varnish Cache DNF افتراضيًا تحتوي على الإصدار 6.0 LTS (دعم طويل الأمد).

لتثبيت الوحدة، قم بتشغيل الأمر التالي.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. بمجرد اكتمال تثبيت الوحدة، يمكنك تأكيد إصدار Varnish المثبت على النظام الخاص بك.

# varnishd -V
Check Varnish Version

7. بعد تثبيت Varnish Cache، يتم تثبيت الأمر التنفيذي الرئيسي تحت /usr/sbin/varnishd وتقع ملفات تكوين varnish في /etc/varnish/.

الملف /etc/varnish/default.vcl هو الملف الرئيسي لتكوين varnish المكتوب باستخدام VCL و/etc/varnish/secret هو ملف سر varnish.

8. بعد ذلك، قم ببدء خدمة Varnish، وتمكينها للبدء التلقائي أثناء تشغيل النظام وتأكد من أنها قيد التشغيل.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

الخطوة 3: تكوين Nginx للعمل مع Varnish Cache

9. في هذا القسم، سنوضح كيفية تكوين Varnish Cache للعمل أمام Nginx. بشكل افتراضي، يستمع Nginx على المنفذ 80، وعادة ما يتم تكوين كتلة الخادم (أو الخادم الظاهري) للاستماع على هذا المنفذ.

على سبيل المثال، تحقق من كتلة الخادم الافتراضية لـ Nginx المكونة في ملف التكوين الرئيسي (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

ابحث عن قسم كتلة الخادم كما هو موضح في لقطة الشاشة التالية.

Nginx Server Block Configuration

١٠. لتشغيل Varnish أمام Nginx، يجب عليك تغيير منفذ Nginx الافتراضي من ٨٠ إلى ٨٠٨٠ (أو أي منفذ آخر تختاره).

يجب القيام بذلك في جميع ملفات تكوين كتل الخوادم المستقبلية (التي عادة ما تُنشأ تحت /etc/nginx/conf.d/) للمواقع أو تطبيقات الويب التي ترغب في تقديمها عبر Varnish.

على سبيل المثال، كتلة الخادم لموقع الاختبار الخاص بنا tecmint.lan هي /etc/nginx/conf.d/tecmint.lan.conf وتحتوي على التكوين التالي.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
Nginx Server Block Configuration

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

Disable Nginx Server Block

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

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

١٢. بعد ذلك، لاستقبال طلبات HTTP من العملاء، نحتاج إلى تكوين Varnish للعمل على منفذ ٨٠. على عكس الإصدارات السابقة من Varnish Cache حيث تمت هذه التغييرات في ملف البيئة Varnish (الذي أصبح مهجورًا الآن)، في الإصدار ٦.٠ وما فوق.

نحتاج إلى إجراء التغيير المطلوب في ملف خدمة Varnish. قم بتشغيل الأمر التالي لفتح ملف الخدمة المناسب للتحرير.

# systemctl edit --full  varnish

ابحث عن السطر التالي وقم بتغيير قيمة مفتاح -a، الذي يحدد عنوان الاستماع والمنفذ. ضع منفذًا بقيمة 80 كما هو موضح في لقطة الشاشة التالية.

يرجى ملاحظة أنه إذا لم تحدد عنوانًا، سيستمع varnishd على جميع الواجهات IPv4 و IPv6 المتاحة على الخادم.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Listen Port

احفظ التغييرات في الملف واخرج.

13. بعد ذلك، ستحتاج إلى تعريف خادم الخلفية الذي سيراجعه Varnish لجلب المحتوى منه. يتم ذلك في ملف التكوين الرئيسي لـ Varnish.

# vi /etc/varnish/default.vcl 

ابحث عن قسم تكوين الخادم الافتراضي وقم بتغيير السلسلة “default” إلى server1 (أو أي اسم تختاره لتمثيل خادم المصدر الخاص بك). ثم حدد المنفذ على 8080 (أو منفذ الاستماع Nginx الذي قمت بتعريفه في كتلة الخادم الخاصة بك).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

في هذا الدليل، نقوم بتشغيل Varnish و Nginx على نفس الخادم. إذا كان خادم الويب Nginx الخاص بك يعمل على خادم مختلف. على سبيل المثال، خادم آخر بعنوان 10.42.0.247، ثم قم بتعيين المعلمة .host كما هو موضح.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

احفظ الملف وأغلقه.

14. بعد ذلك، ستحتاج إلى إعادة تحميل تكوين مدير systemd بسبب التغييرات الأخيرة في ملف خدمة Varnish، ثم قم بإعادة تشغيل خدمة Varnish لتطبيق التغييرات على النحو التالي.

# systemctl daemon-reload
# systemctl restart varnish

15. الآن قم بتأكيد أن Nginx و Varnish يستمعان على المقابس TCP المكونة.

# ss -tpln
Confirm Nginx and Varnish Ports

الخطوة 4: اختبار إعداد ذاكرة التخزين المؤقت Varnish لـ Nginx

16. بعد ذلك، تأكد من توجيه صفحات الويب عبر Varnish Cache على النحو التالي. افتح متصفح ويب وانتقل باستخدام عنوان IP الخادم أو FDQN كما هو موضح في اللقطة التالية.

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. بدلاً من ذلك، استخدم أمر curl كما هو موضح. استخدم عنوان IP الخادم الخاص بك أو FQDN الموقع أو استخدم 127.0.0.1 أو localhost إذا كنت تختبر محليًا.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

أدوات إدارة مفيدة لذاكرة التخزين المؤقت Varnish

18. في هذا القسم الأخير، سنصف بإيجاز بعض البرامج المساعدة المفيدة التي يأتي بها Varnish Cache والتي يمكنك استخدامها للتحكم في varnishd، الوصول إلى سجلات الذاكرة وإحصائيات إجمالية وأكثر.

varnishadm

varnishadm هي برنامج مساعد للتحكم في مثيل Varnish المشغول. يقوم بإنشاء اتصال سطر الأوامر بـ varnishd. على سبيل المثال، يمكنك استخدامه لفهرسة الخوادم المرتبطة على النحو الموضح في اللقطة التالية (اقرأ man varnishadm للمزيد من المعلومات).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

يوفر البرنامج varnishlog الوصول إلى بيانات محددة بالطلب. يوفر معلومات حول عملاء وطلبات محددة (اقرأ man varnishlog للمزيد من المعلومات).

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

هذا كل شيء! في هذا الدليل، قمنا بعرض كيفية تثبيت Varnish Cache وتشغيله أمام خادم Nginx HTTP لتسريع توصيل محتوى الويب في CentOS/RHEL 8.

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

العيب الرئيسي لـ Varnish Cache هو عدم دعمه الأصلي لـ HTTPS. لتمكين HTTPS على موقعك الويب/تطبيقك، تحتاج إلى تكوين وكيل إنهاء SSL/TLS للعمل بالتزامن مع Varnish Cache لحماية موقعك. في مقالتنا القادمة، سنوضح كيفية تمكين HTTPS لـ Varnish Cache باستخدام Hitch على CentOS/RHEL 8.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/