在Ubuntu 22.04上安装和配置Varnish Cache 7的步骤

本文介绍在Ubuntu 22.04、20.04、18.04操作系统上安装和配置Varnish Cache 7的详细步骤。

简介

Varnish Cache是一个开源强大的HTTP和反向代理引擎,专为高负载动态网站和API设计。Varnish Cache与Squid等其他web加速器不同,它最初是客户端缓存。它的发展主要集中在HTTP上,不像其他代理服务器增加了对SMTP、FTP的支持。通常情况下,Varnish Cache位于web服务器后面,网站的速度大约在300-1000倍之间。这是通过将请求的网站缓存在内存中,并在请求时为其提供服务而不构建相同的信息来实现的。更重要的是,Varnish Cache可以在运行多个服务器时充当负载平衡器。

Varnish Cache具有以下功能:

基于DNS、随机、哈希和客户端IP的控制器。

HTTP流传递和获取。

Varnish模块/VMOD插件支持。

支持Edge Side,包括将压缩的ESI片段缝合在一起。

支持Gzip压缩和解压缩。

支持持久存储,无需LRU驱逐。

Varnish专用CDN。

Varnish API和Web加速。

本文为您提供了如何在Ubuntu 22.04、20.04、18.04上为Apache/Nginx配置Varnish Cache 7所需的步骤。建议在开始之前更新一下系统。

请切换到具有sudo访问权限的用户。将系统软件包更新到最新可用版本:

sudo apt update && sudo apt -y full-upgrade

如果需要,请执行重新启动:

[ -f /var/run/reboot-required ] && sudo reboot -f

安装和配置Varnish Cache 7的详细步骤

步骤1:在Ubuntu 22.04上注册Varnish Cache 7 repo

我们将首先注册Varnish Cache 7存储库,否则可能无法安装正确的软件包。

安装所需的包依赖项:

sudo apt install debian-archive-keyring curl gnupg apt-transport-https -y

现在导入GPG密钥签名:

curl -fsSL https://packagecloud.io/varnishcache/varnish70/gpgkey|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/varnish.gpg

做完上面操作,现在就在Ubuntu 22.04、20.04、18.04上添加Varnish Cache 7存储库。

1、Ubuntu 20.04/18.04

. /etc/os-release

sudo tee /etc/apt/sources.list.d/varnishcache_varnish70.list > /dev/null <<-EOF

deb https://packagecloud.io/varnishcache/varnish70/$ID/ $VERSION_CODENAME main

deb-src https://packagecloud.io/varnishcache/varnish70/$ID/ $VERSION_CODENAME main

EOF

2、Ubuntu 22.04

在Ubuntu 22.04的官方存储库发布之前,使用20.04存储库:

sudo tee /etc/apt/sources.list.d/varnishcache_varnish70.list > /dev/null <<-EOF

deb https://packagecloud.io/varnishcache/varnish70/ubuntu/ focal main

deb-src https://packagecloud.io/varnishcache/varnish70/ubuntu/ focal main

EOF

添加后,更新包索引:

sudo apt update

步骤2:在Ubuntu 22.04上安装Varnish Cache 7

添加存储库后,使用以下命令安装Varnish Cache 7:

sudo apt install varnish

依赖关系树:

Reading state information... Done

The following additional packages will be installed:

  binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-9 gcc gcc-9

  gcc-9-base libasan5 libatomic1 libbinutils libc-dev-bin libc6-dev

  libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libgcc-9-dev libgomp1

  libisl22 libitm1 libjemalloc2 liblsan0 libmpc3 libquadmath0 libtsan0

  libubsan1 linux-libc-dev manpages-dev

Suggested packages:

  binutils-doc cpp-doc gcc-9-locales gcc-multilib make autoconf automake

  libtool flex bison gdb gcc-doc gcc-9-multilib gcc-9-doc glibc-doc

  varnish-dev

The following NEW packages will be installed:

  binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-9 gcc gcc-9

  gcc-9-base libasan5 libatomic1 libbinutils libc-dev-bin libc6-dev

  libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libgcc-9-dev libgomp1

  libisl22 libitm1 libjemalloc2 liblsan0 libmpc3 libquadmath0 libtsan0

  libubsan1 linux-libc-dev manpages-dev varnish

0 upgraded, 30 newly installed, 0 to remove and 73 not upgraded.

Need to get 35.5 MB of archives.

After this operation, 154 MB of additional disk space will be used.

Do you want to continue? [Y/n] y

步骤3:为Varnish Cache 7创建Systemd服务文件

为了能够像其他系统服务一样管理Varnish Cache 7,我们将如下调整systemd服务:

sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/

cat /etc/systemd/system/varnish.service

服务文件如下:

[Unit]

Description=Varnish Cache, a high-performance HTTP accelerator

After=network-online.target nss-lookup.target

[Service]

Type=forking

KillMode=process

# Maximum number of open files (for ulimit -n)

LimitNOFILE=131072

# Locked shared memory - should suffice to lock the shared memory log

# (varnishd -l argument)

# Default log size is 80MB vsl + 1M vsm + header -> 82MB

# unit is bytes

LimitMEMLOCK=85983232

# Enable this to avoid "fork failed" on reload.

TasksMax=infinity

# Maximum size of the corefile.

LimitCORE=infinity

ExecStart=/usr/sbin/varnishd \

  -a :6081 \

  -a localhost:8443,PROXY \

  -p feature=+http2 \

  -f /etc/varnish/default.vcl \

  -s malloc,256m

ExecReload=/usr/sbin/varnishreload

[Install]

WantedBy=multi-user.target

步骤4:配置侦听端口和缓存大小

从服务文件中,默认侦听端口设置为6081,因此我们需要将该端口更改为端口80,缓存大小更改为2GB。

在/etc/systemd/system/varnish.service中,编辑下面的部分并添加所需的详细信息:

$ sudo vim /etc/systemd/system/varnish.service

ExecStart=/usr/sbin/varnishd \

  -a :80 \

  -a localhost:8443,PROXY \

  -p feature=+http2 \

  -f /etc/varnish/default.vcl \

  -s malloc,2g

重新加载系统守护程序:

sudo systemctl daemon-reload

启动并启用Varnish缓存:

sudo systemctl start varnish

检查服务状态:

$ systemctl status varnish

在Ubuntu 22.04上安装和配置Varnish Cache 7的步骤

步骤5:配置web服务器以使用Varnish

当Varnish缓存设置为侦听端口80时,我们必须将Web服务器设置为侦听另一个端口,例如8080。为所需的Web服务器进行配置。

1、Nginx

确保已安装Nginx web服务器:

sudo apt install nginx

现在编辑虚拟主机并使用以下命令将端口80替换为8080:

sudo find /etc/nginx/sites-enabled -name '*.conf' -exec sed -r -i 's/\blisten ([^:]+:)?80\b([^;]*);/listen \18080\2;/g' {} ';'

上述脚本将编辑路径/etc/nginx/sites enabled中的任何配置。您可能还需要更改默认nginx站点以侦听端口8080:

$ sudo vim /etc/nginx/sites-enabled/default

server {

        listen 8080 default_server;

        #listen [::]:80 default_server;

        # SSL configuration

        #

更改后重新启动nginx服务:

sudo systemctl restart nginx

2、Apache

安装了Apache Web服务器:

sudo apt install apache2

在这里,您还需要编辑虚拟主机文件并将侦听端口更改为8080:

sudo find /etc/apache2 -name '*.conf' -exec sed -r -i 's/\bListen 80\b/Listen 8080/g; s/<VirtualHost ([^:]+):80>/<VirtualHost \1:8080>/g' {} ';'

更改后重新启动Apache web服务器:

sudo systemctl restart apache2

步骤6:配置VCL后端

上述更改需要反映在VLC后端。默认情况下,VLC后端配置为指向设置端口8080。此文件位于/etc/varnish/default.vcl下:

$ sudo vim /etc/varnish/default.vcl

# Default backend definition. Set this to point to your content server.

backend default {

    .host = "127.0.0.1";

    .port = "8080";

}

现在重新启动服务:

##对于Nginx

sudo systemctl restart nginx varnish

##对于Apache

sudo systemctl restart apache2 varnish

步骤7:验证Varnish Cache 7服务器

为了验证ig服务器是否正常工作,我们将使用下面的cURL命令:

curl -I server-ip

例如:

curl -I 192.168.205.11

输出如下图所示:

在Ubuntu 22.04上安装和配置Varnish Cache 7的步骤

从输出中,您应该可以看到web服务器与Vanish Cache一起使用。

至此,在Ubuntu 22.04、20.04、18.04系统上为Apache/Nginx配置Varnish Cache 7的操作全部完成。

栏目相关文章