웹사이트 검색

Ubuntu 22.04에서 Apache로 Varnish를 설치하고 구성하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 16.04(Xenial Xerus)

이 페이지에서

  1. 요구 사항\n
  2. Apache 웹 서버 설치 및 구성
  3. 니스 캐시 설치
  4. Apache와 함께 작동하도록 Varnish 구성\n
  5. 니스 캐시 확인\n
  6. 결론

Varnish Cache는 트래픽이 많은 동적 웹사이트용으로 설계된 고성능 HTTP 가속기입니다. 클라이언트와 서버 간의 중개자 역할을 하여 웹 서버 백엔드에 도착하기 전에 모든 인바운드 요청을 처리합니다. Varnish는 웹 서버에서 제공하는 각 웹 페이지의 복사본을 캐시합니다. 사용자가 캐시된 페이지를 요청하면 Varnish는 백엔드 서버에서 동일한 페이지를 반복해서 요청하는 대신 캐시된 사본을 제공합니다. Varnish의 전체 페이지 캐시는 트래픽이 많은 매장과 수천 개의 제품이 있는 매장에 이상적입니다.

이 게시물은 Varnish Cache를 설치하고 Ubuntu 22.04에서 Apache로 구성하는 방법을 보여줍니다.

요구 사항

  • Ubuntu 22.04를 실행하는 서버.\n
  • 서버에 루트 암호가 구성되어 있습니다.\n

Apache 웹 서버 설치 및 구성

시작하기 전에 Apache 웹 서버가 서버에 설치되어 있어야 합니다. 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.

apt install apache2 -y

다음으로 Apache 구성 파일을 편집하고 기본 포트를 다른 것으로 변경해야 합니다.

nano /etc/apache2/ports.conf

다음 줄을 찾으십시오.

Listen 80

그리고 다음 줄로 교체했습니다.

Listen 8080

파일을 저장하고 닫은 다음 Apache 기본 가상 호스트 구성 파일을 편집합니다.

nano /etc/apache2/sites-available/000-default.conf

다음 줄을 찾으십시오.

<VirtualHost *:80>

그리고 다음 줄로 바꿉니다.

<VirtualHost *:8080>

파일을 저장하고 닫은 다음 Apache 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart apache2

이제 다음 명령을 사용하여 Apache 수신 포트를 확인할 수 있습니다.

ss -antpl | grep 8080

다음 출력이 표시되어야 합니다.

LISTEN 0      511                *:8080            *:*    users:(("apache2",pid=2553,fd=4),("apache2",pid=2552,fd=4),("apache2",pid=2551,fd=4))

바니시 캐시 설치

기본적으로 최신 버전의 Varnish 캐시는 Ubuntu 기본 리포지토리에서 사용할 수 없습니다. 따라서 APT에 Varnish 저장소를 추가해야 합니다.

먼저 다음 명령을 사용하여 필요한 종속 항목을 설치합니다.

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

그런 다음 다음 명령을 사용하여 Varnish GPG 키를 추가합니다.

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

다음으로 Varnish 소스 파일을 만듭니다.

nano /etc/apt/sources.list.d/varnishcache_varnish70.list

다음 줄을 추가합니다.

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

파일을 저장하고 닫은 다음 다른 구성 파일을 만듭니다.

nano /etc/apt/preferences.d/varnish

다음 줄을 추가합니다.

Package: varnish
Pin: origin packagecloud.io
Pin-Priority: 900

파일을 저장하고 닫은 후 다음 명령을 사용하여 리포지토리 캐시를 업데이트합니다.

apt update

다음으로 다음 명령을 사용하여 Varnish Cache를 설치합니다.

apt install varnish -y

Varnish Cache가 설치되면 default.vcl 파일을 편집하고 백엔드 서버를 정의합니다.

nano /etc/varnish/default.vcl

백엔드 서버에 따라 다음 행을 변경하십시오.

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

완료되면 파일을 저장하고 닫습니다.

Apache와 함께 작동하도록 Varnish 구성

다음으로 Varnish에 대한 사용자 지정 서비스 구성 파일을 생성해야 합니다.

mkdir /etc/systemd/system/varnish.service.d
nano /etc/systemd/system/varnish.service.d/customport.conf

다음 줄을 추가합니다.

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

파일을 저장하고 닫은 후 다음 명령을 사용하여 systemd 데몬을 다시 로드합니다.

systemctl daemon-reload

그런 다음 다음 명령을 사용하여 Varnish 서비스를 다시 시작합니다.

systemctl restart varnish

이제 다음 명령을 사용하여 광택 캐시의 상태를 확인할 수 있습니다.

systemctl status varnish

다음과 같은 결과가 표시되어야 합니다.

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
     Loaded: loaded (/lib/systemd/system/varnish.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/varnish.service.d
             ??customport.conf
     Active: active (running) since Tue 2022-10-18 13:07:44 UTC; 14s ago
    Process: 4968 ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m (c>
   Main PID: 4969 (varnishd)
      Tasks: 217
     Memory: 90.6M
        CPU: 595ms
     CGroup: /system.slice/varnish.service
             ??4969 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m
             ??4983 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

Oct 18 13:07:43 ubuntu2204 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Version: varnish-7.0.3 revision 6a4c6a5c7e66a664b140278c209f0b18c544cab8
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Platform: Linux,5.15.0-33-generic,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) Started
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) said Child starts
Oct 18 13:07:44 ubuntu2204 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

이 시점에서 Varnish가 설치되고 포트 80에서 수신 대기합니다. 다음 명령으로 확인할 수 있습니다.

ss -antpl | grep :80

다음과 같은 결과가 표시됩니다.

LISTEN 0      1024         0.0.0.0:80         0.0.0.0:*    users:(("cache-main",pid=4983,fd=3),("varnishd",pid=4969,fd=3))
LISTEN 0      1024            [::]:80            [::]:*    users:(("cache-main",pid=4983,fd=5),("varnishd",pid=4969,fd=5))
LISTEN 0      511                *:8080             *:*    users:(("apache2",pid=4749,fd=4),("apache2",pid=4748,fd=4),("apache2",pid=4745,fd=4))

바니시 캐시 확인

이제 CURL 명령을 사용하여 광택 캐시를 확인할 수 있습니다.

curl -I http://localhost/

다음 출력에서 바니시 캐시를 얻을 수 있습니다.

HTTP/1.1 200 OK
Date: Tue, 18 Oct 2022 13:08:27 GMT
Server: Apache/2.4.52 (Ubuntu)
Last-Modified: Tue, 18 Oct 2022 13:03:09 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/7.0)
ETag: W/"29af-5eb4eb6b9e071-gzip"
Accept-Ranges: bytes
Content-Length: 10671
Connection: keep-alive

결론

축하합니다! Ubuntu 22.04에서 Apache와 함께 Varnish Cache를 성공적으로 설치했습니다. 이제 서버의 광택 캐시를 사용하여 웹사이트 로드 시간을 단축할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.