Cài đặt Varnish Cache 6 cho Apache/Nginx trên CentOS 8

theanh

Administrator
Nhân viên
Varnish Cache là một proxy HTTP ngược mạnh mẽ được sử dụng để tăng tốc các ứng dụng web có sẵn dưới dạng phần mềm Nguồn mở. Varnish lưu trữ đệm cả nội dung tĩnh và động. Nó xử lý tất cả các yêu cầu đến trước khi chúng đến máy chủ web của bạn. Nó nằm giữa trình duyệt web và máy chủ web Apache hoặc Nginx. Bộ nhớ đệm Varnish lưu trữ tất cả các yêu cầu trang đến trong bộ nhớ để máy chủ web không phải tạo cùng một trang web nhiều lần.

Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt bộ nhớ đệm Varnish với Apache và Nginx trên CentOS 8.

Điều kiện tiên quyết​

  • Máy chủ chạy CentOS 8.
  • Mật khẩu gốc được cấu hình trên máy chủ của bạn.

Bắt đầu​

Trước khi bắt đầu, bạn nên cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng cách chạy lệnh sau:
Mã:
dnf update -y
Sau khi tất cả các gói được cập nhật, bạn có thể tiến hành bước tiếp theo.

Cài đặt Varnish​

Theo mặc định, gói Varnish được bao gồm trong kho lưu trữ mặc định của CentOS 8. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install varnish -y
Sau khi cài đặt Varnish, hãy chỉnh sửa tệp cấu hình mặc định của Varnish và xác định địa chỉ được Nginx hoặc Apache webserver hỗ trợ.
Mã:
nano /etc/varnish/default.vcl
Thay đổi các dòng sau:
Mã:
backend default { .host = "127.0.0.1"; .port = "8080";}
Lưu và đóng tệp khi bạn hoàn tất.

Cấu hình Varnish​

Theo mặc định, Varnish lắng nghe trên cổng 6081. Vì vậy, bạn sẽ cần cấu hình Varnish để lắng nghe trên cổng 80. Bạn có thể cấu hình bằng cách chỉnh sửa tệp varnish.service:
Mã:
nano /lib/systemd/system/varnish.service
Tìm dòng sau:
Mã:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Thay thế bằng dòng sau:
Mã:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Lưu và đóng tệp, sau đó tải lại daemon systemd để áp dụng thay đổi:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ Varnish và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start varnish
systemctl enable varnish
Bạn cũng có thể kiểm tra trạng thái của Varnish bằng lệnh sau:
Mã:
systemctl status varnish
Bạn sẽ nhận được kết quả sau:
Mã:
? varnish.service - Varnish Cache, một trình tăng tốc HTTP hiệu suất cao Đã tải: đã tải (/usr/lib/systemd/system/varnish.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ sáu 2021-03-12 04:17:32 EST; 4 giây trước Tiến trình: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) PID chính: 6392 (varnishd) Nhiệm vụ: 217 Bộ nhớ: 99,5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m12-03 04:17:32 masternode systemd[1]: Đang khởi động Varnish Cache, một trình tăng tốc HTTP hiệu suất cao...12-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Phiên bản: varnish-6.0.6 bản sửa đổi 29a1a8243dbef3d973aec28dc90403188c1dc8e712-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit12-03 04:17:32 masternode varnishd[6392]: Phiên bản: varnish-6.0.6 bản sửa đổi 29a1a8243dbef3d973aec28dc90403188c1dc8e712-03 04:17:32 masternode varnishd[6392]: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit12-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Child (6402) Đã bắt đầu12-03 04:17:32 masternode varnishd[6392]: Child (6402) Đã bắt đầu12-03 04:17:32 masternode varnishd[6392]: Child (6402) đã nói Child bắt đầu12-03 04:17:32 masternode systemd[1]: Đã bắt đầu Varnish Cache, một trình tăng tốc HTTP hiệu suất cao.
Tại thời điểm này, Varnish đã được khởi động và lắng nghe trên cổng 80. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
ss -antpl | grep varnishd
Bạn sẽ nhận được kết quả sau:
Mã:
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11))LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6))LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7))LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
Tại thời điểm này, Varnish đã được cài đặt và cấu hình. Bây giờ bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình Nginx để hoạt động với Varnish​

Trước tiên, bạn sẽ cần cài đặt gói Nginx vào máy chủ của mình. Bạn có thể cài đặt gói này bằng lệnh sau:
Mã:
dnf install nginx -y
Sau khi cài đặt, bạn sẽ cần thay đổi cổng lắng nghe Nginx từ 80 thành 8080. Bạn có thể thực hiện bằng cách chỉnh sửa tệp cấu hình mặc định của Nginx:
Mã:
nano /etc/nginx/nginx.conf
Thay đổi các dòng sau:
Mã:
listen 8080 default_server; listen [::]:8080 default_server;
Lưu và đóng tệp, sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Tiếp theo, khởi động dịch vụ Nginx và cho phép nó khởi động khi khởi động lại hệ thống:
Mã:
systemctl start nginx
systemctl enable nginx
Bạn cũng có thể xác minh cổng lắng nghe Nginx bằng lệnh sau:
Mã:
ss -antpl | grep 8080
Bạn sẽ nhận được kết quả sau:
Mã:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8))LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
Tại thời điểm này, bộ đệm Varnish được cài đặt và cấu hình để chuyển tiếp tất cả các yêu cầu đến từ cổng 80 đến máy chủ web Nginx đang lắng nghe trên cổng 8080.

Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Mã:
curl -I http://localhost
Bạn sẽ nhận được kết quả sau:
Mã:
HTTP/1.1 200 OKMáy chủ: nginx/1.14.1Ngày: Thứ sáu, 12 tháng 3 năm 2021 09:18:32 GMTContent-Type: text/htmlContent-Length: 4057Lần sửa đổi cuối: Thứ hai, 07 tháng 10 năm 2019 21:16:24 GMTETag: "5d9bab28-fd9"X-Varnish: 2Tuổi: 0Via: 1.1 varnish (Varnish/6.0)Accept-Ranges: bytesConnection: keep-alive

Cài đặt và cấu hình Apache để hoạt động với Varnish​

Trước tiên, bạn sẽ cần cài đặt gói máy chủ web Apache vào hệ thống của mình. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
dnf install httpd -y
Sau khi cài đặt Apache, hãy chỉnh sửa tệp cấu hình mặc định của Apache và thay đổi cổng lắng nghe từ 80 thành 8080.
Mã:
nano /etc/httpd/conf/httpd.conf
Thay đổi dòng sau:
Mã:
Listen 8080
Lưu và đóng tệp, sau đó khởi động dịch vụ Apache và cho phép dịch vụ này khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start httpd
systemctl enable httpd
Bạn cũng có thể xác minh cổng lắng nghe của Apache bằng lệnh sau:
Mã:
ss -antpl | grep httpd
Bạn sẽ nhận được kết quả sau:
Mã:
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
Tại thời điểm này, bộ đệm Varnish đã được cài đặt và cấu hình để chuyển tiếp tất cả các yêu cầu đến từ cổng 80 đến máy chủ web Apache đang lắng nghe trên cổng 8080.

Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Mã:
curl -I http://localhost
Bạn sẽ nhận được kết quả sau:
Mã:
Ngày: Thứ sáu, ngày 12 tháng 3 năm 2021 09:21:14 GMTMáy chủ: Apache/2.4.37 (centos)Vị trí nội dung: index.html.zh-CNVary: negotiation,accept-languageTCN: choiceLần sửa đổi cuối: Thứ sáu, ngày 14 tháng 6 năm 2019 03:37:43 GMTETag: "fa6-58b405e7d6fc0;5bd5365602e05"Phạm vi chấp nhận: byteĐộ dài nội dung: 4006Loại nội dung: text/html; charset=UTF-8Content-Language: zh-cnX-Varnish: 2Age: 0Via: 1.1 varnish (Varnish/6.0)Connection: keep-alive

Làm việc với Varnish Command Line​

Varnish đi kèm với một số tiện ích hữu ích giúp bạn theo dõi và kiểm soát Varnish.

varnishadm là một tiện ích dòng lệnh được sử dụng để liệt kê các backend đã cấu hình.
Mã:
varnishadm
Bạn sẽ thấy đầu ra sau:
Mã:
200-----------------------------Varnish Cache CLI 1.0-----------------------------Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbitvarnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7Gõ 'help' để biết danh sách lệnh.Gõ 'quit' để đóng phiên CLI.
Bây giờ, hãy chạy lệnh sau để liệt kê tất cả các chương trình phụ trợ:
Mã:
varnish> backend.list
Bạn sẽ thấy kết quả đầu ra sau:
Mã:
200Tên backend Admin Probe Lần cập nhật cuốiboot.default probe Healthy (không có probe) Sat, 13 Mar 2021 03:00:02 GMT
varnishlog

Tiện ích varnishlog được sử dụng để hiển thị nhật ký của tất cả các yêu cầu của người dùng.
Mã:
varnishlog
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
* > 6- Bắt đầu bereq 5 fetch- VCL_use boot- Dấu thời gian Bắt đầu: 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, như Gecko) Chrome/87.0.4280.141 Safari/537.36- BereqHeader Chấp nhận: 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 31 boot.default 127.0.0.1 8080 127.0.0.1 58860- BackendStart 127.0.0.1 8080- Dấu thời gian Bereq: 1615604631.507458 0,000270 0,000270- Dấu thời gian Bersp: 1615604631.507844 0.000657 0.000386- Giao thức Beresp HTTP/1.1- Trạng thái Beresp 200- BerespLý do OK- Máy chủ BerespHeader: nginx/1.14.1- Ngày tiêu đề đầu tiên: Thứ bảy, ngày 13 tháng 3 năm 2021 03:03:51 GMT- Loại nội dung BerespHeader: text/html- Độ dài nội dung BerespHeader: 4057- BerespHeader Sửa đổi lần cuối: Thứ Hai, ngày 07 tháng 10 năm 2019 21:16:24 GMT
varnishstat

Lệnh varnishstat cung cấp cho bạn thông tin về số liệu thống kê trong bộ nhớ, dung lượng lưu trữ, luồng đã tạo và các đối tượng đã xóa.
Mã:
varnishstat
Bạn sẽ thấy màn hình sau:



varnishtop

Lệnh varnishtop đọc các nhật ký bộ nhớ dùng chung của varnishd và hiển thị danh sách liên tục được cập nhật về các mục nhật ký thường gặp nhất.
Mã:
varnishtop
Bạn sẽ thấy màn hình sau:



varnishhist

Varnishhist phân tích các nhật ký varnish và in n yêu cầu cuối cùng theo quá trình xử lý của chúng.
Mã:
varnishhist
Bạn sẽ thấy màn hình sau:


Kết luận​

Trong hướng dẫn trên, bạn đã tìm hiểu cách cài đặt và cấu hình bộ đệm Varnish với Máy chủ web Apache và Nginx. Bây giờ bạn có thể triển khai bộ nhớ đệm Varnish trong môi trường sản xuất và tăng tốc hiệu suất trang web của mình. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên