كاش Varnish هو مسرّع تطبيق ويب حديث وعالي الأداء ومفتوح المصدر مجاني. إنه بروكسي HTTP عكسي سريع يخزّن المحتوى لتسريع أداء خادم الويب الخاص بك، عن طريق تخزين محتوى الويب في ذاكرة الخادم – في ذاكرة التخزين المؤقت. يتم تكوينه للتشغيل أمام خادم أصلي مثل Apache (HTTPD) ويب سيرفر.
عندما يطلب العميل محتوى ما، يقبل Varnish الطلب HTTP، ويُرسل الطلب إلى الخادم الأصلي، ويخزّن الكائنات المُرجعة، ويُرد على طلب العميل. في المرة القادمة التي يطلب فيها العميل نفس المحتوى، سيقدم Varnish ذلك من ذاكرة التخزين المؤقت. بهذه الطريقة، يُقلل من زمن الاستجابة واستهلاك عرض النطاق الترددي في الطلبات المُعادة المُعادية في المستقبل.
Varnish يعمل أيضًا كموجّه لطلبات HTTP، جدار حماية لتطبيقات الويب، موازن حمولة، والمزيد. يتم تكوينه باستخدام لغة تكوين Varnish المرنة (VCL) والتي يمكن توسيعها باستخدام وحدات Varnish (المعروفة أيضًا باسم VMODs)، وتدعم تضمينات الجوانب الخارجية (ESI)، ضغط وفك ضغط Gzip، والمزيد.
في هذه المقالة، ستتعلم كيفية تثبيت خادم ويب Apache HTTPD و كاش Varnish 6 على خادم CentOS/RHEL 8 جديد، بما في ذلك تكوين Varnish للتشغيل أمام خادم HTTPD.
المتطلبات الأولية:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
الخطوة 1: تثبيت خادم ويب أباتشي على CentOS/RHEL 8
١. ابدأ بتحديث جميع حزم البرمجيات المثبتة على النظام كما يلي باستخدام أمر DNF.
# dnf update
٢. بعد ذلك، قم بتشغيل الأمر التالي لتثبيت خادم الويب أباتشي HTTP من مستودع AppStream.
# dnf install httpd
٣. بمجرد اكتمال التثبيت، قم ببدء خدمة httpd، وتمكينها للبدء تلقائيًا أثناء تمهيد النظام، والتحقق من حالتها للتأكد من أنها تعمل، باستخدام الأمر systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

٤. بشكل افتراضي، يتضمن CentOS/RHEL 8 جدار نار مقفل تمامًا (قم بتشغيل firewall-cmd –state للتأكد). يجب عليك فتح الوصول إلى خدمة HTTP في الجدار الناري للسماح للمستخدمين بالوصول إلى المواقع الإلكترونية أو التطبيقات التي تعمل عبر HTTP، وأيضًا إعادة تحميل إعدادات firewalld لتطبيق التغييرات الجديدة.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
الخطوة 2: تثبيت Varnish Cache 6.4 على CentOS/RHEL 8
٥. الآن بعد أن يعمل خادم الويب أباتشي، يمكنك المضي قدمًا لتثبيت Varnish Cache على النظام باستخدام الأمر التالي.
# dnf module install varnish

٦. بعد التثبيت الناجح، يمكنك التحقق من إصدار Varnish المثبت على نظامك.
# varnishd -V

٧. بعد ذلك، يتم تثبيت الملف التنفيذي الرئيسي كـ /usr/sbin/varnishd. أيضًا، يتم تخزين ملفات تكوين Varnish تحت الدليل /etc/varnish، حيث:
- /etc/varnish/default.vcl – هو ملف تكوين varnish الرئيسي المكتوب باستخدام VCL.
- /etc/varnish/secret – هو ملف سر varnish.
٨. الآن ابدأ خدمة varnish، وقم بتمكينها للبدء تلقائيًا أثناء تمهيد النظام في حالة إعادة تشغيل الخادم، وتحقق من حالتها للتأكد من أنها تعمل كما يلي.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

الخطوة ٣: تكوين Apache للعمل مع Varnish Cache
٩. الآن حان الوقت لتكوين Varnish Cache للعمل أمام خدمة Apache. افتراضيًا، يتم تكوين خادم Apache للاستماع على المنفذ ٨٠، وهذا محدد في الملف التكوين الرئيسي /etc/httpd/conf/httpd.conf.
افتحه للتحرير باستخدام محرر النص المفضل لديك.
# vi /etc/httpd/conf/httpd.conf
ابحث عن المعلمة Listen. لتشغيل Varnish أمام خادم Apache، يجب عليك تغيير المنفذ الافتراضي ٨٠ إلى ٨٠٨٠ (أو أي منفذ آخر تختاره) كما هو موضح في لقطة الشاشة التالية.
سيتم إضافة هذا المنفذ كمنفذ لخادم الخلفية في ملف تكوين Varnish في وقت لاحق.

تحتاج تكوين التهيئة المضيف الافتراضية لكل موقع ويب/تطبيق الذي سيخدم عبر Varnish إلى تكوين الاستماع إلى المنفذ أعلاه. إليك التكوين لموقع الاختبار الخاص بنا (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

مهم: لمنع استخدام صفحة اختبار خادم Apache HTTP الافتراضية، قم بتعليق جميع الأسطر في الملف /etc/httpd/conf.d/welcome.conf أو ببساطة حذف الملف.
# rm /etc/httpd/conf.d/welcome.conf
10. بعد ذلك، قم بفحص صحة تهيئة httpd للتأكد من عدم وجود أخطاء. إذا كانت بخير، أعد تشغيل خدمة httpd لتطبيق التغييرات الجديدة.
# httpd -t # systemctl restart httpd

تكوين Varnish لـ Systemd
11. لنشر Varnish أمام HTTPD، تحتاج ببساطة إلى تكوينه للاستماع إلى طلبات العميل في منفذ HTTP الافتراضي 80 كما هو موضح أدناه.
يرجى ملاحظة أنه في Varnish Cache 6.0 والإصدارات الأحدث، يتعين عليك تعيين المنفذ الذي يستمع عليه خادم varnish في ملف خدمة Varnish لـ systemd. أولاً، افتحه للتعديل.
# systemctl edit --full varnish
ابحث عن السطر ExecStart، ثم قم بتغيير قيمة مفتاح الخيار -a
(الذي يحدد استماع varnish إلى العنوان والمنفذ) من :6081
إلى :80
كما هو موضح في الشاشة التالية.
من الأهمية بشكل خاص، إذا لم تحدد عنوانًا، ستستمع varnishd إلى جميع واجهات IPv4 و IPv6 المتاحة على الخادم.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

احفظ التغييرات في الملف واخرج.
تكوين خوادم الأصل في فارنيش باستخدام VCL
12. الآن، تحتاج إلى تكوين خادم الأصل، المعروف في مصطلح فارنيش بأنه خلفية. إنه الخادم الذي يفهم HTTP، وفارنيش يتحدث معه لاسترجاع المحتوى – httpd في هذه الحالة. يتم تكوينه في ملف التكوين الرئيسي /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
هناك قسم تكوين خلفية افتراضي يسمى افتراضي. يمكنك تغيير “افتراضي” إلى خادم1 (أو أي اسم تختاره لمطابقة معايير بيئتك). بشكل افتراضي، يشير معلمة المضيف إلى localhost، بناءً على افتراض أن خادم الأصل يعمل على المضيف المحلي.
ثم ضع المنفذ على 8080 (المنفذ الذي قمت بتعريفه في ملف تكوين الاستضافة الظاهري لأباتشي) كما هو موضح في اللقطة.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

إذا كان خادمك الخلفي يعمل على مضيف مختلف، على سبيل المثال، خادم آخر بعنوان 10.42.1.10، فإن معلمة المضيف يجب أن تشير إلى هذا العنوان IP.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
احفظ الملف وأغلقه.
13. بعد إجراء جميع التغييرات اللازمة المتعلقة بـ فارنيش، أعد تحميل تكوين مدير systemd ليعكس التغييرات الجديدة في ملف خدمة فارنيش وأيضًا أعد تشغيل خدمة فارنيش لتطبيق التغييرات الشاملة.
# systemctl daemon-reload # systemctl restart varnish
١٤. في هذه النقطة، يجب أن يكون Varnish و Apache الآن يستمعان على المنفذ ٨٠ و ٨٠٨٠ على التوالي. يمكنك تأكيد ذلك باستخدام أمر إحصاءات المقبس.
# ss -tpln

الخطوة ٤: اختبار تكوين Varnish Cache و Apache
١٤. لاختبار تكوين Varnish Cache-HTTPD، افتح متصفح الويب، وانتقل باستخدام عنوان IP الخادم أو FQDN كما هو موضح في لقطة الشاشة التالية.
http://10.42.0.144 OR http://www.tecmin.lan
ثم تحقق مما إذا كانت صفحات الويب تخدم عبر Varnish Cache كما يلي. تحقق من رؤوس HTTP عن طريق النقر بزر الماوس الأيمن على صفحة الويب المعروضة، حدد تفتيش لفتح أدوات المطور، ثم انقر على علامة التبويب الشبكة، وقم بـ إعادة تحميل الصفحة. ثم حدد طلبًا لعرض رؤوس HTTP لتأكيد ذلك كما هو موضح في لقطة الشاشة التالية.

بدلاً من ذلك، يمكنك تشغيل الأمر curl التالي للتحقق من ذلك.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

برامج فائدة لـ Varnish Cache Utility
١٥. دعنا ننهي هذا الدليل بالنظر في بعض البرامج المفيدة التي يأتي بها توزيع Varnish Cache. تشمل هذه البرامج أدوات لإدارة ذاكرة التخزين المؤقت varnish، وعرض سجلات التفاصيل بشكل مفصل، وعرض إحصاءات أداء varnish كما هو موضح أدناه.
varnishadm
الأول هو varnishadm الذي يُستخدم لإدارة نسخة تعمل من Varnish. يُنشئ اتصالًا واجهة سطر الأوامر مع varnishd. يمكنه التأثير على نسخة تعمل من Varnish عن طريق بدء وإيقاف varnishd، تغيير معلمات التكوين، إعادة تحميل VCL، قائمة الخوادم الخلفية، والمزيد.
# varnishadm > backend.list

لمزيد من المعلومات، اقرأ man varnishadm.
varnishlog
البرنامج التالي هو varnishlog الذي يُستخدم للوصول إلى بيانات محددة للطلبات (أي معلومات حول العملاء والطلبات المحددة). يوفر كميات كبيرة من المعلومات، لذلك غالبًا ما يكون من الضروري تصفيتها.
# varnishlog

لمزيد من المعلومات، اقرأ man varnishlog.
varnishstat
لدينا أيضًا varnishstat (إحصائيات varnish) التي تُستخدم للوصول إلى الإحصائيات العامة مثل عدد الطلبات الإجمالي، عدد الكائنات، والمزيد.
# varnishstat

لمزيد من المعلومات، اقرأ man varnishstat.
varnishtop
ثم لدينا varnishtop وهو أداة تقرأ سجل Varnish وتقدم قائمة محدثة باستمرار لأكثر الإدخالات في السجل حدوثًا.
# varnishtop

لمزيد من المعلومات، اقرأ man varnishtop.
varnishhist
آخر أداة مفيدة هي varnishhist (تاريخ Varnish) تقوم بقراءة سجلات Varnish وتقدم هيستوغرام محدّث بشكل مستمر يظهر توزيع آخر N طلبات حسب معالجتها.
# varnishhist

لمزيد من المعلومات، اطّلع على دليل varnishhist.
إليك! لقد قمتَ بنجاح بنشر Varnish Cache لتسريع محتوى تطبيق الويب الخاص بك الذي يتم تقديمه باستخدام خادم Apache HTTP على CentOS/RHEL 8.
إذا كان لديك أي استفسار حول هذا الموضوع أو أفكار للمشاركة، استخدم نموذج التعليق أدناه. تحقق من توثيق Varnish Cache 6.0 لمزيد من المعلومات.
إذا كنت ترغب في تمكين HTTPS على موقعك، تحقق من مقالتنا التالية، التي ستوضح كيفية تمكين SSL/TLS لـ Varnish Cache باستخدام Hitch على CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/