Brad Fitzpatrick は、2003 年に LiveJournal Web サイト向けに、データベースの負荷を軽減して動的 Web アプリケーションのパフォーマンスを向上させる強力なオープンソース キャッシュ システムとして Memcached を開発しました。それ以来、Memcached は多くの高トラフィック Web サイトやアプリケーションにとって不可欠なものとなっています。Debian 12 Bookworm、Debian 11 Bullseye、または Debian 10 Buster に Memcached をインストールする前に、以下で Memcached に関する重要なポイントをいくつか確認しましょう。
主な機能と利点:
- スケーラビリティ: Memcached は、1 秒あたり数百万の操作を処理できるため、大規模な Web アプリケーションやサービスに最適です。
- 分散キャッシュ: 分散キャッシュ アーキテクチャにより、Memcached は複数のサーバーにわたる水平スケーリングを可能にし、全体的なキャッシュ容量を拡張します。
- インメモリストレージ: Memcached はメモリ内のキー値ストアとして、キャッシュされたデータへの高速アクセスを保証し、ディスクベースのストレージ システムのレイテンシを大幅に削減します。
- シンプルなAPI: Memcached は、PHP、Python、Ruby などのさまざまなプログラミング言語をサポートする簡単な API を提供します。
- キャッシュの有効期限: このシステムにより、開発者はキャッシュされたデータの有効期限を設定できるようになり、古くなったデータをキャッシュから自動的に削除できるようになります。
- 軽量: Memcached は、CPU とメモリのオーバーヘッドを最小限に抑え、システム リソースを大幅に消費することなく、さまざまなサーバー構成で効率的に実行されます。
- 柔軟なデータ タイプ: Memcached は、文字列、整数、複雑なオブジェクトなど、さまざまなデータ型に対応しているため、多様なユースケースに柔軟に対応できます。
次のガイドでは、最も安定したバージョン用のデフォルトの Debian リポジトリを使用する方法と、最新バージョンで作業することを好むユーザー向けに最新のバイナリをダウンロードしてコンパイルする方法の 2 つの方法を使用して、Debian に Memcached をインストールするプロセスについて説明します。
方法 1: デフォルトの APT リポジトリ経由で Memcached をインストールする
このセクションでは、APT パッケージ マネージャーを使用して、Debian Linux システムに Memcached をインストールします。これには、システム パッケージの更新と、いくつかの便利なツールを使用した Memcached のインストールが含まれます。
Memcached をインストールする前に Debian システムを更新する
最新のパッケージ バージョンとセキュリティ更新を確実に適用するには、まず Debian システムを更新します。次のコマンドを実行します。
sudo apt update && sudo apt upgrade
このコマンドはパッケージ リストを更新し、古くなったパッケージを最新バージョンにアップグレードします。
MemcachedとLibmemcached-toolsをインストールする
Debian ではデフォルトのリポジトリに Memcached が含まれているため、インストールが簡単です。Memcached をインストールするには、次のコマンドを実行します。
sudo apt install memcached libmemcached-tools
このコマンドはMemcachedと libmemcached-tools
パッケージ。 libmemcached-tools
パッケージは、Memcached とのより多くの対話および管理機能を可能にする追加のコマンドライン ユーティリティを提供します。
方法2: ソース経由でMemcachedをインストールする
このセクションでは、ソース コードからコンパイルして Debian システムに Memcached をインストールする方法について説明します。最新バージョンの Memcached を使用したい場合や、特定の要件に合わせてビルドをカスタマイズしたい場合は、ソースからのインストールが便利です。
Memcachedソースをダウンロードする
まず、Memcachedにアクセスしてください 最新リリースページ 現在のバージョンを確認するには、次の wget
直接ダウンロードするコマンド:
wget https://memcached.org/latest
Memcachedソースアーカイブの抽出
次に、次のコマンドを実行して、ダウンロードしたソース コードを抽出します。
tar -xvf latest
続行する前に、抽出したディレクトリに移動します。ディレクトリ名はダウンロードしたバージョンによって異なります。
cd memcached-{place version number here}
交換する {version_number}
実際のバージョン番号を使用します。
Memcached をコンパイルするために必要な初期パッケージをインストールする
Memcached をコンパイルする前に、必要なビルド依存関係をインストールする必要があります。インストールするには、次のコマンドを実行します。
sudo apt install build-essential libevent-dev gcc make libc6-dev
インストールされたパッケージは次の目的で使用されます。
gcc
: Memcached ソース ファイル用の有名な C コンパイラ。make
: コンパイルを指示します。libc6-dev
: GNU C ライブラリとヘッダー ファイルへの参照を提供します。libevent-dev
: 非同期イベント通知用の開発ファイルが含まれています。
インストールを構成する
使用 --prefix=
Memcached バイナリとライブラリがインストールされるディレクトリを設定するパラメータ:
./configure --prefix=/usr/local
Memcached ソースコードをコンパイルする
Memcachedのソースコードを make
指示:
make
現在のバージョンを確認して Memcached をテストします。
./memcached --version
「make install」コマンドでMemcachedをインストールする
コンパイル プロセスが完了したら、次のコマンドを実行して Memcached をインストールします。
sudo make install
このコマンドは、システムに Memcached をインストールし、コマンド ラインからアクセスできるようにします。システムが新しいライブラリを認識するようにするには、次のコマンドを実行します。
sudo ldconfig
Memcachedのインストールを確認する
Memcached が正常にインストールされたことを確認するには、次のコマンドを実行します。
memcached -V
このコマンドは、インストールされている Memcached のバージョンを表示し、ソース コードからインストールが成功したことを確認します。
Memcached用のSystemdサービスを作成する
Memcachedをソースからインストールすると、systemdサービスファイルが自動的に作成されません。Memcachedをサービスとして実行し、 systemctl
、Memcached 用のカスタム systemd サービス ファイルを作成する必要があります。サービスを作成して有効にするには、次の手順に従います。
という新しいファイルを作成します memcached.service
の中に /etc/systemd/system
任意のテキストエディタを使用してディレクトリを開きます。この例では nano
:
sudo nano /etc/systemd/system/memcached.service
以下の内容を memcached.service
ファイル:
[Unit]
Description=Memcached Service
After=network.target
[Service]
Type=simple
User=memcache
Group=memcache
ExecStart=/usr/local/bin/memcached /etc/memcached.conf
Restart=always
[Install]
WantedBy=multi-user.target
ファイルを保存してテキスト エディターを終了します。
作成する memcache
サービスを安全に実行するためのユーザーとグループ:
sudo useradd -r -s /sbin/nologin -U -M memcache
新しいサービス ファイルを認識するために、systemd 構成を再ロードします。
sudo systemctl daemon-reload
最後に、サービスを開始します。
sudo systemctl enable memcached --now
Memcached サービスのステータスの管理
このセクションでは、Debian システムでの Memcached サービスの管理について説明します。これには、サービスの状態の確認、サービスの開始と停止、システム起動時に実行するための設定が含まれます。
Memcached サービスのステータスを確認する
デフォルトでは、Memcachedはインストール後に実行されるはずです。その状態を確認するには、 systemctl
次のようにコマンドを実行します。
systemctl status memcached
このコマンドは、Memcached サービスの現在のステータスを表示します。
Memcachedサービスを開始する
Memcached が実行されていない場合は、次のコマンドでサービスを開始できます。
sudo systemctl start memcached
システム起動時にMemcachedを有効にする
システムの起動時に Memcached サービスが自動的に開始されるようにするには、次のコマンドを使用します。
sudo systemctl enable memcached
Memcached サービスを停止する
Memcached サービスを停止する必要がある場合は、次のコマンドを使用します。
sudo systemctl stop memcached
システム起動時にMemcachedを無効にする
システムの起動時に Memcached サービスが自動的に開始されないようにするには、次のコマンドを実行します。
sudo systemctl disable memcached
Memcachedサービスを再起動する
たとえば、構成を変更した後で Memcached サービスを再起動する必要がある場合は、次のコマンドを使用します。
sudo systemctl restart memcached
Memcached がデフォルトポートでリッスンしていることを確認する
最後に、Memcachedがデフォルトのポートを使用してローカルホストでアクティブにリッスンしていることを確認します。 11211
これを確認するには、次のコマンドを実行します。
ps -ef | grep memcached
出力には、Memcached が実行中で、指定されたポートでリッスンしていることを示す次のような行が表示されます。
memcache 5934 1 0 09:36 ? 00:00:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
root 6591 3653 0 09:55 pts/0 00:00:00 grep memcached
Memcached の設定のヒント
このセクションでは、Memcachedの設定を、 memcached.conf
ファイル。リスニング IP アドレスの調整、UDP の無効化、デフォルトのメモリ割り当ての変更について説明します。
Memcached設定ファイルを開く
Memcachedの設定ファイルを開きます。 /etc/memcached.conf
テキストエディタを使用して、例えば nano
:
sudo nano /etc/memcached.conf
Memcached をソースからコンパイルしたユーザーは、これを作成する必要があります。最初に開いたときに、ファイルは APT メソッドと比較して空白になります。これをコピーして調整を開始できます。
# Example memcached.conf file
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 64
# Default port is 11211
-p 11211
# Run the daemon as a background process
-d
# Use syslog logging
-s
# Enable verbose logging
-vv
# Set the maximum number of simultaneous connections
-c 1024
リスニングIPアドレスを調整する
デフォルトでは、MemcachedはIPアドレス127.0.0.1をリッスンします。設定ファイルの-lパラメータをチェックして、正しいIPアドレスに設定されていることを確認してください。IPアドレスを変更する必要がある場合は、 127.0.0.1
新しい IP アドレス:
-l 127.0.0.1
UDPを無効にする(オプション)
UDP サポートが必要ない場合は、無効にすることをお勧めします。UDP を無効にするには、構成ファイルに次の行を追加します。
-U 0
メモリ割り当てを構成する
Memcached のデフォルトのメモリ割り当ては 64 MB ですが、大規模な Web サイトには不十分な場合があります。Memcached を最大限に活用するには、メモリ割り当てをより高い値に調整することを検討してください。
メモリ割り当てを設定するには、 -m
パラメータを設定ファイルで設定し、デフォルト値を希望する量(MB単位)に置き換えます。たとえば、2GBのメモリを割り当てるには、値を次のように設定します。 2000
:
-m 2000
サーバーの使用可能なメモリと要件に基づいてこの設定を調整します。
Memcachedを保存して再起動する
必要な変更を行った後、を押して設定ファイルを保存します。 CTRL+O
、 に続く Y
、 その後 CTRL+X
テキスト エディターを終了します。最後に、変更を有効にするために Memcached サービスを再起動します。
sudo systemctl restart memcached
追加の Memcached 設定例
これまでに説明した設定オプションに加えて、要件に応じて Memcached を微調整するために調整できる設定がいくつかあります。以下に、簡単なデモンストレーションとともにいくつかの例を示します。
ユーザーとグループを指定する
Memcachedは、 -u
パラメータ。例えば、Memcachedを memcache
ユーザーは、構成ファイルに次の行を追加します。
-u memcache
大容量メモリページを有効にする
この機能を有効にすると、システムが大容量メモリページをサポートしている場合、パフォーマンスが向上する可能性があります。大容量メモリページを有効にするには、 -L
パラメータのコメントを解除します( #
行の先頭に:
-L
最大アイテムサイズを設定する
Memcachedのデフォルトの最大アイテムサイズは1MBです。最大アイテムサイズを増やすには、 -I
パラメータの後に希望するサイズを指定します。たとえば、最大アイテム サイズを 5MB に設定するには、構成ファイルに次の行を追加します。
-I 5m
スレッドの最大数を設定する
Memcached はデフォルトで 4 つのスレッドを使用します。パラメータを使用して、サーバーの機能とワークロードに応じてスレッドの数を増減できます。たとえば、スレッドの数を 8 に設定するには、次の行を追加します。
-t 8
アイドルタイムアウトを設定する
Memcachedは一定時間アイドル状態が続くと自動的にアイドル接続を閉じます。アイドルタイムアウトを変更するには、 -o
パラメータの後に idle_timeout
そして希望する秒数を入力します。たとえば、アイドル タイムアウトを 600 秒 (10 分) に設定するには、次の行を追加します。
-o idle_timeout=600
SASL認証を有効にする
Memcachedサーバーにアクセスするために認証が必要な場合は、SASL(Simple Authentication and Security Layer)サポートを有効にすることができます。SASLを有効にするには、 -S
パラメータのコメントを解除します( #
行の先頭に:
-S
設定ファイルに変更を加えた後は、必ず Memcached サービスを再起動するようにしてください。
sudo systemctl restart memcached
Memcached 用の UFW ファイアウォールをインストールする
Memcached インスタンスのセキュリティを確保するには、ファイアウォール ルールを適切に構成することが重要です。このセクションでは、Memcached サーバーを保護するために、Uncomplicated Firewall (UFW) をインストールして構成する方法について説明します。
UFWがインストールされているかどうかを確認する
まず、Debian システムに UFW がすでにインストールされているかどうかを確認しましょう。
sudo ufw --version
UFW がインストールされている場合は、出力にバージョン番号が表示されます。インストールされていない場合は、インストールする必要があります。
Memcached 用に Debian に UFW をインストールする
Debian システムに UFW をインストールするには、次のコマンドを実行します。
sudo apt install ufw
インストールが完了したら、次のコマンドで UFW を有効にします。
sudo ufw enable
MemcachedのUFWルールを設定する
UFW がインストールされ、有効になったので、TCP ポート 11211 に許可ルールを作成する必要があります。作成するルールは、単一の IP ネットワーク接続を使用するか、クラスター ネットワーク内の複数のインスタンスで作業するかなど、インストールと要件によって異なります。
単一 IP ネットワーク接続の例
特定の IP アドレスからの Memcached へのアクセスを許可します。
sudo ufw allow proto tcp from <ip_address> to any port 11211
複数のインスタンスを持つクラスタ IP ネットワーク接続の例
IP アドレスのサブネットから Memcached へのアクセスを許可します。
sudo ufw allow proto tcp from <ip_address>/24 to any port 11211
2 番目の UFW ルールはサブネット ルールであることに注意してください。アクセスを許可する前に、内部ネットワークが安全で信頼できることを確認してください。
ステップ4: UFWルールを確認する
適切なルールを設定したら、現在の UFW ルールを一覧表示して、ルールが正しく構成されていることを確認します。
sudo ufw status
出力には設定されたルールが表示され、Memcached インスタンスが UFW で保護されていることが保証されます。
Memcachedライブラリをインストールする
Memcached はさまざまなプログラミング言語用の拡張機能を提供していますが、最も一般的に使用されているのは PHP です。このセクションでは、PHP、Python、Perl 用の Memcached ライブラリをインストールし、Apache および Nginx Web サーバー用に Memcached を構成する方法について説明します。
Memcached用のPHPライブラリをインストールする
Memcached 用の PHP ライブラリをインストールするには、次のコマンドを実行します。
sudo apt install php-memcached libapache2-mod-php php php-cli
Apache HTTP Server 用に Memcached を構成する
Apache HTTP Server を使用している場合は、次のコマンドを実行して Memcached モジュールを有効にします。
sudo phpenmod memcached && sudo systemctl restart apache2
Nginx HTTP サーバー用に Memcached を構成する
Nginx ユーザー向けに PHP ライブラリがインストールされると、PHP 構成ブロック内で Memcached サポートがデフォルトで有効になります。
以下は、単純な nginx サーバー ブロックの例です。
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Memcached 用の Python ライブラリをインストールする
Memcached の Python サポートをインストールするには、次のコマンドを実行します。
sudo apt install python3-pymemcache
Memcached 用の Perl ライブラリをインストールする
Memcached の Perl サポートをインストールするには、次のコマンドを実行します。
sudo apt install libcache-memcached-libmemcached-perl
コマンドラインからMemcachedにアクセスする
Memcached は、さまざまなソフトウェアや Web ユーザー インターフェイスを通じて監視および管理できます。ただし、コマンド ラインを使用して Memcached と直接やり取りすることが、パフォーマンスの確認やコンテンツの管理を行う最も簡単な方法であることがよくあります。
まず、telnet を使用して Memcached サービスに接続します。
telnet localhost 11211
出力例:
127.0.0.1 を試行しています... ローカルホストに接続しました。エスケープ文字は '^]' です。
次に、次のコマンドを使用して、Memcached サービスの概要を取得できます。
stats
このコマンドは、稼働時間、キャッシュ内のアイテム数、クライアント接続数など、Memcached インスタンスに関するさまざまな統計情報を返します。
Memcached スラブ (メモリ パーティション) を調べることで、分析を絞り込むことができます。たとえば、接続されたインスタンス内のスラブを次のように一覧表示できます。
stats slabs
次のコマンドを使用して、各スラブ内に格納されているアイテムの数を含むスラブのリストを取得します。
stats items
Memcachedに保存されたデータにアクセスして操作するには、 cachedump
キーを一覧表示するには、次のコマンドを実行します。特定のスラブ内のすべての項目を一覧表示するには、次のコマンドを実行します。
stats cachedump [slab ID] [number of items, 0 for all items]
例えば:
stats cachedump 1 0
出力例:
ITEM テストキー [9 b; 1296857316 s] 終了
この例では、スラブ1にはキー「testkey」を持つ1つのアイテムが含まれています。このアイテムの値を取得するには、 get
指示:
get testkey
出力例:
VALUE testkey 0 9 テストデータ END
最後に、「testkey」などのキャッシュされた項目を削除するには、次のコマンドを使用します。
delete testkey
出力例:
削除済み
結論
結論として、Debian Linux に Memcached をインストールして構成すると、高速で効率的、かつ使いやすいキャッシュ システムが提供され、Web アプリケーションのパフォーマンスが大幅に向上します。このガイドで説明されている手順に従うと、Memcached を正常にセットアップし、好みの Web サーバーで構成し、UFW を使用して保護することができます。適切な構成と管理により、Memcached はアプリケーションの最適化とユーザー エクスペリエンスの向上に不可欠なものになります。