نصب Varnish Cache 6 برای Apache / Nginx در CentOS 8
Varnish Cache یک پروکسی HTTP معکوس قدرتمند است که برای سرعت بخشیدن به برنامه های وب مورد استفاده قرار می گیرد و به عنوان نرم افزار منبع باز در دسترس است.
وارنیش هم محتوای استاتیک و هم محتوای پویا را ذخیره می کند. کلیه درخواستهای ورودی را قبل از اینکه آنها روی وب سرور شما قرار بگیرند، رسیدگی می کند. این برنامه بین یک مرورگر وب و Apache یا سرور وب Nginx قرار دارد. Varnish cache تمام درخواستهای صفحه ورودی را در حافظه ذخیره می کند بنابراین وب سرورها مجبور نیستند صفحه وب مشابه را بارها و بارها ایجاد کنند. در این پست ، ما به شما نحوه نصب Varnish cache را با Apache و Nginx در CentOS 8 نشان خواهیم داد.
این آموزش برای این نسخه های سیستم عامل وجود دارد:
- CentOS 8
- CentOS 7
پیش نیازها
- سروری که CentOS 8 را اجرا می کند.
- رمز عبور root که بر روی سرور شما پیکربندی شده است.
شروع
قبل از شروع ، توصیه می شود بسته های سیستم خود را به آخرین نسخه به روز کنید. با اجرای دستور زیر می توانید آنها را به روز کنید:
dnf update -y
پس از به روزرسانی همه بسته ها ، می توانید به مرحله بعدی بروید.
نصب Varnish
به طور پیش فرض ، بسته Varnish در repo پیش فرض CentOS 8 گنجانده شده است. با اجرای دستور زیر می توانید آن را نصب کنید:
dnf install varnish -y
پس از نصب Varnish ، پرونده پیکربندی پیش فرض Varnish را ویرایش کرده و آدرس پشتیبان وب سرور Nginx یا Apache را تعریف کنید.
nano /etc/varnish/default.vcl
خطوط زیر را تغییر دهید:
backend default { .host = "127.0.0.1"; .port = "8080";}
پس از اتمام پرونده ، آن را ذخیره کرده و ببندید.
پیکربندی Varnish
به طور پیش فرض ، Varnish به درگاه ۶۰۸۱ گوش می دهد. بنابراین برای گوش دادن به پورت ۸۰ باید Varnish را پیکربندی کنید. با ویرایش پرونده varnish.service می توانید آن را پیکربندی کنید:
nano /lib/systemd/system/varnish.service
خط زیر را پیدا کنید:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
آن را با خط زیر جایگزین کنید:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
پرونده را ذخیره کرده و ببندید و سپس systemd daemon را مجدداً بارگیری(reload) کنید تا تغییرات اعمال شود:
systemctl daemon-reload
در مرحله بعدی ، سرویس Varnish را شروع کرده و با دستور زیر فعال سازی مجدد(reboot) سیستم را فعال کنید:
systemctl start varnish systemctl enable varnish
با دستور زیر می توانید وضعیت Varnish را نیز بررسی کنید:
systemctl status varnish
شما باید خروجی زیر را دریافت کنید:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 6392 (varnishd) Tasks: 217 Memory: 99.5M CGroup: /system.slice/varnish.service ??۶۳۹۲ /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??۶۴۰۲ /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbitMar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbitMar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) StartedMar 12 04:17:32 masternode varnishd[6392]: Child (6402) StartedMar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child startsMar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
در این مرحله ، Varnish شروع به گوش دادن به پورت ۸۰ می کند. می توانید با دستور زیر آن را بررسی کنید:
ss -antpl | grep varnishd
شما باید خروجی زیر را دریافت کنید:
LISTEN ۰ ۱۰ ۱۲۷٫۰٫۰٫۱:۳۴۹۷۷ ۰٫۰٫۰٫۰:* users:(("varnishd",pid=1532,fd=11)) LISTEN ۰ ۱۲۸ ۰٫۰٫۰٫۰:۸۰ ۰٫۰٫۰٫۰:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6)) LISTEN ۰ ۱۲۸ [::]:۸۰ [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7)) LISTEN ۰ ۱۰ [::۱]:۳۴۹۰۹ [::]:* users:(("varnishd",pid=1532,fd=10))
در این مرحله ، Varnish نصب و پیکربندی می شود. اکنون می توانید به مرحله بعدی بروید.
Nginx را برای کار با Varnish نصب و پیکربندی کنید.
ابتدا باید بسته Nginx را روی سرور خود نصب کنید. می توانید آن را با دستور زیر نصب کنید:
dnf install nginx -y
پس از نصب ، باید درگاه گوش دادن Nginx را از ۸۰ به ۸۰۸۰ تغییر دهید. با ویرایش فایل پیکربندی پیش فرض Nginx می توانید این کار را انجام دهید:
nano /etc/nginx/nginx.conf
خطوط زیر را تغییر دهید:
listen 8080 default_server; listen [::]:8080 default_server;
پرونده را ذخیره کرده و ببندید و با استفاده از دستور زیر، Nginx را برای هرگونه خطای نوشتاری(خطای نحوی) تأیید کنید:
nginx -t
شما باید خروجی زیر را دریافت کنید:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
در مرحله بعدی ، سرویس Nginx را شروع کرده و آن را فعال کنید تا سیستم مجددا راه اندازی شود:
systemctl start nginx systemctl enable nginx
همچنین می توانید پورت گوش دادن Nginx را با دستور زیر تأیید کنید:
ss -antpl | grep 8080
شما باید خروجی زیر را دریافت کنید:
LISTEN ۰ ۱۲۸ ۰٫۰٫۰٫۰:۸۰۸۰ ۰٫۰٫۰٫۰:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8)) LISTEN ۰ ۱۲۸ [::]:۸۰۸۰ [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
در این مرحله ، حافظه پنهان Varnish نصب و پیکربندی می شود تا کلیه درخواست های موجود در پورت ۸۰ را به وب سرور Nginx ارسال کند که روی پورت ۸۰۸۰ گوش می دهد.
با دستور زیر می توانید بررسی کنید که حافظه نهان Varnish کار می کند یا نه:
curl -I http://localhost
شما باید خروجی زیر را دریافت کنید:
HTTP/1.1 200 OKServer: nginx/1.14.1Date: Fri, 12 Mar 2021 09:18:32 GMTContent-Type: text/htmlContent-Length: 4057Last-Modified: Mon, 07 Oct 2019 21:16:24 GMTETag: "5d9bab28-fd9"X-Varnish: 2Age: 0Via: 1.1 varnish (Varnish/6.0)Accept-Ranges: bytesConnection: keep-alive
Apache را برای کار با Varnish نصب و پیکربندی کنید
ابتدا باید بسته وب سرور Apache را روی سیستم خود نصب کنید. می توانید آن را با دستور زیر نصب کنید:
dnf install httpd -y
پس از نصب Apache ، پرونده پیکربندی پیش فرض Apache را ویرایش کرده و پورت گوش دادن را از ۸۰ به ۸۰۸۰ تغییر دهید.
nano /etc/httpd/conf/httpd.conf
خط زیر را تغییر دهید:
Listen 8080
فایل را ذخیره کرده و ببندید و سپس سرویس Apache را شروع کرده و با دستور زیر فعال کنید تا در راه اندازی مجدد سیستم شروع به کار کند:
systemctl start httpd systemctl enable httpd
همچنین می توانید پورت گوش دادن Apache را با دستور زیر تأیید کنید:
ss -antpl | grep httpd
شما باید خروجی زیر را دریافت کنید:
LISTEN ۰ ۱۲۸ *:۸۰۸۰ *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
در این مرحله ، حافظه پنهان Varnish نصب و پیکربندی می شود تا کلیه درخواست های موجود در پورت ۸۰ را به وب سرور Apache که در پورت ۸۰۸۰ گوش می دهد منتقل کند.
با دستور زیر می توانید بررسی کنید که حافظه نهان Varnish کار می کند یا نه:
curl -I http://localhost
شما باید خروجی زیر را دریافت کنید:
Date: Fri, 12 Mar 2021 09:21:14 GMTServer: Apache/2.4.37 (centos)Content-Location: index.html.zh-CNVary: negotiate,accept-languageTCN: choiceLast-Modified: Fri, 14 Jun 2019 03:37:43 GMTETag: "fa6-58b405e7d6fc0;5bd5365602e05"Accept-Ranges: bytesContent-Length: 4006Content-Type: text/html; charset=UTF-8Content-Language: zh-cnX-Varnish: 2Age: 0Via: 1.1 varnish (Varnish/6.0)Connection: keep-alive
کار با خط فرمان وارنیش
وارنیش دارای چندین ابزار مفید است که به شما کمک می کند تا نظارت و کنترل کنید. varnishadm یک ابزار خط فرمان است که برای لیست کردن باطن های(backends) پیکربندی شده استفاده می شود.
varnishadm
باید خروجی زیر را ببینید:
۲۰۰ ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Type 'help' for command list. Type 'quit' to close CLI session.
اکنون ، دستور زیر را برای لیست کردن تمام باطن ها(backends) اجرا کنید:
varnish> backend.list
باید خروجی زیر را ببینید:
۲۰۰ Backend name Admin Probe Last updated boot.default probe Healthy (no probe) Sat, 13 Mar 2021 03:00:02 GMT
varnishlog
از ابزار varnishlog برای نمایش گزارش(logs) کلیه درخواست های کاربر استفاده می شود.
varnishlog
شما باید خروجی زیر را دریافت کنید:
* << BeReq >> 6 - Begin bereq 5 fetch - VCL_use boot - Timestamp Start: 1615604631.507187 0.000000 0.000000 - BereqMethod GET - BereqURL / - BereqProtocol HTTP/1.1 - BereqHeader Host: 69.87.218.214 - BereqHeader Upgrade-Insecure-Requests: 1 - BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 - BereqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 - BereqHeader X-Forwarded-For: 106.213.193.241 - BereqHeader Accept-Encoding: gzip - BereqHeader X-Varnish: 6 - VCL_call BACKEND_FETCH - VCL_return fetch - BackendOpen ۳۱ boot.default 127.0.0.1 8080 127.0.0.1 58860 - BackendStart ۱۲۷٫۰٫۰٫۱ ۸۰۸۰ - Timestamp Bereq: 1615604631.507458 0.000270 0.000270 - Timestamp Beresp: 1615604631.507844 0.000657 0.000386 - BerespProtocol HTTP/1.1 - BerespStatus ۲۰۰ - BerespReason OK - BerespHeader Server: nginx/1.14.1 - BerespHeader Date: Sat, 13 Mar 2021 03:03:51 GMT - BerespHeader Content-Type: text/html - BerespHeader Content-Length: 4057 - BerespHeader Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
varnishstat
دستور varnishstat اطلاعاتی را در مورد آمار حافظه ، ذخیره سازی ، رشته های ایجاد شده و داده های پاک شده به شما ارائه می دهد.
varnishstat
شما باید صفحه زیر را ببینید:
varnishtop
دستور varnishtop گزارش های(logs) مربوط به حافظه مشترک varnishd را می خواند و لیستی به طور مداوم به روز شده از متداول ترین ورودی ها را ثبت و ارائه می دهد.
varnishtop
شما باید صفحه زیر را ببینید:
varnishhist
Varnishhist گزارش های(logs) مربوط به varnish را تجزیه و تحلیل می کند و آخرین nدرخواست ها را بوسیله پردازش آنها چاپ می کند.
varnishhist
شما باید صفحه زیر را ببینید:
نتیجه
در راهنمای فوق ، نحوه نصب و پیکربندی حافظه نهان Varnish را با وب سرور Apache و Nginx فرا گرفتید. اکنون می توانید Varnish cache را در محیط تولید پیاده سازی کرده و عملکرد وب سایت خود را تسریع کنید.