نصب 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

شما باید صفحه زیر را ببینید:

 

دستور varnishstat اطلاعاتی را در مورد آمار حافظه

دستور varnishstat اطلاعاتی را در مورد آمار حافظه

varnishtop

دستور varnishtop گزارش های(logs) مربوط به حافظه مشترک varnishd را می خواند و لیستی به طور مداوم به روز شده از متداول ترین ورودی ها را ثبت و ارائه می دهد.

varnishtop

شما باید صفحه زیر را ببینید:

آموزش نصب varnish cache

آموزش نصب varnish cache

varnishhist

Varnishhist گزارش های(logs) مربوط به varnish را تجزیه و تحلیل می کند  و آخرین nدرخواست ها را بوسیله پردازش آنها چاپ می کند.

varnishhist

شما باید صفحه زیر را ببینید:

 

آموزش نصب varnish cache

آموزش نصب varnish cache

 

 

نتیجه

در راهنمای فوق ، نحوه نصب و پیکربندی حافظه نهان Varnish را با وب سرور Apache و Nginx فرا گرفتید. اکنون می توانید Varnish cache را در محیط تولید پیاده سازی کرده و عملکرد وب سایت خود را تسریع کنید.