CentOS 7でApacheを高速化する方法

Varnish Cache(一般にはVarnishとして知られています)は、ウェブサーバーの高速化を意図したオープンソースの人気のあるリバースプロキシHTTPアクセラレータです。これは、過度に利用されるAPIエンドポイントや高トラフィックを経験する大量コンテンツを提供する動的なサイト向けに設計されています。

基本的には、CPU負荷を軽減し、ウェブサーバーでの負荷分散をサポートし、キャッシュをRAMに保存することでウェブブラウザがサイトを迅速に読み込むのを可能にします。多くの大手企業がそれを使用しており、FacebookTwitterWikipediaなどが挙げられます。

要件

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

この記事では、Varnish Cache 6.5ApacheウェブサーバーのフロントエンドとしてCentOS 7(またはRHEL 7)にインストールして使用する方法を説明します。

ステップ1:CentOS 7にApacheウェブサーバーをインストールする

1.まず、デフォルトのCentOSソフトウェアリポジトリからApache HTTPサーバーをYUMパッケージマネージャを使用してインストールします。

# yum install httpd
Install Apache on CentOS 7

2.Apacheがインストールされたら、一時的に起動し、システムの起動時に自動的に起動するようにします。

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Start and Enable Apache

3. 次に、以下のコマンドを使用してポート80での受信パケットを許可するようにシステムファイアウォールルールを更新します。

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload
Open Apache Port on Firewall

ステップ2: CentOS 7にVarnish Cacheをインストール

4. 現在、最新バージョンのVarnish Cache 6(執筆時点でのバージョン6.5)のための事前コンパイルされたRPMパッケージがありますので、公式のVarnish Cacheリポジトリを追加する必要があります。

その前に、いくつかの依存パッケージをインストールするためにEPELリポジトリを有効にする必要があります。

# yum install -y epel-release

5. 次に、GPG署名を処理するためのパッケージであるpygpgmeと、yumの機能をさまざまな方法で拡張する便利なユーティリティのコレクションであるyum-utilsをインストールします。

# yum install pygpgme yum-utils

6. そして、以下のリポジトリ構成が含まれる/etc/yum.repos.d/varnishcache_varnish65.repoというファイルを作成します。

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

重要: 下記の構成でel7をご自身のLinuxディストリビューションとバージョンに置き換えてください。

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. そして、以下のコマンドを実行してローカルyumキャッシュを更新し、varnishキャッシュパッケージをインストールします(パッケージをインストールする際にGPGキーを受け入れるためにyまたはyesと入力することを忘れないでください)。

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Varnish Cacheをインストールした後、メインの実行ファイルは/usr/sbin/varnishdとなり、Varnishの設定ファイルは/etc/varnish/にあります:

  • /etc/varnish/default.vcl – これはメインのVarnish設定ファイルで、Varnish設定言語(VCL)を使用して書かれています。

9. それではVarnishサービスを起動し、システムの起動時に自動的に起動するように設定し、正常に稼働していることを確認してください。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Varnishのインストールが成功したことを確認するには、システムにインストールされたVarnishの実行ファイルの場所とバージョンを確認してください。

$ which varnishd
$ varnishd -V
サンプル出力
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

ステップ3: ApacheをVarnish Cacheと連携させるように構成する

11. それではApacheをVarnish Cacheと連携させるように構成します。デフォルトではApacheはポート80でリッスンしていますが、デフォルトのHTTPDポートを8080に変更する必要があります – これにより、HTTPDがVarnishキャッシングの背後で実行されます。

sedコマンドを使用してポート808080に変更することができます。

# sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

注意: また、Varnishを介して提供したい各ウェブサイトの仮想ホスト構成でポートを変更する必要があります。ここには、テストサイトの構成(/etc/httpd/conf.d/tecmint.lan.conf)が示されています。

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/tecmint.lan/"
    ServerName www.tecmint.lan
    # Other directives here
</VirtualHost>

12.次に、Varnishのsystemd構成ファイルを開き、Varnishがリッスンするポートを指定するExecStartパラメータを見つけ、その値を6081から80に変更します。スクリーンショットに示されているように。

# systemctl edit --full  varnish

完了時に、構成は次のように見えるはずです。

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13.次に、VarnishプロキシのバックエンドサーバーとしてApacheを設定します。これは/etc/varnish/default.vcl構成ファイルで行います。

# vi /etc/varnish/default.vcl 

backendセクションを見つけ、ホストIPとポートを定義します。以下はデフォルトのバックエンド構成です。これを実際のコンテンツサーバーを指すように設定してください。

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

バックエンドサーバーが10.42.1.10というアドレスの異なるサーバーで実行されている場合、ホストパラメータはこのIPアドレスを指すようにする必要があります。

backend server1 {
    .host = "10.42.1.10";
    .port = "8080";
}

14.必要なすべての構成を行った後、HTTPDとVarnishキャッシュを再起動して上記の変更を有効にします。

# systemctl daemon-reload
# systemctl restart httpd
# systemctl restart varnish

ステップ4: ApacheでVarnishキャッシュをテストする

15.最後に、以下の<cURLコマンドを使用して、Varnishが有効になっていてHTTPDサービスと連携しているかをテストします。これはHTTPヘッダーを表示するために使用できます。

# curl -I http://localhost
サンプル出力
HTTP/1.1 200 OK
Date: Wed, 06 Jan 2021 08:36:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag: "1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html; charset=UTF-8
X-Varnish: 131085
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Connection: keep-alive

詳細については、Varnish CacheのGithubリポジトリを参照してください:https://github.com/varnishcache/varnish-cache

Varnish Cache 6.5 プロキシを CentOS 7 上の Apache HTTP サーバーに設定する方法について説明しました。ご質問やご意見などありましたら、下記のフィードバックフォームからお寄せください。

Source:
https://www.tecmint.com/install-varnish-cache-on-centos-7-for-apache/