Redisは、オープンソースのインメモリキャッシュおよびストレージシステムです。データ構造サーバーとも呼ばれます。ハッシュ、リスト、セット、ビットマップなど、いくつかのデータ型に対する高度なサポートを提供します。その優れたパフォーマンスにより、Redisは主要な業界やトップの多国籍企業(MNC)で人気を博しています。
Redisのメリット
速度に関して言えば、Redisサーバーに匹敵するものはありません。NoSQLデータベースサーバーとして、データの保存と取得において驚異的な速度を提供します。さらに、Redisには、複雑なデータを含むさまざまなデータをシームレスに処理できる優れた機能があります。Redisの使いやすさと洗練された機能は、それを際立たせるだけでなく、企業や個人のユーザー向けの主流データベースとしての標準化を進める要因となっています。
以下では、Ubuntu 20.04ソフトウェアにRedisをインストールする手順を詳しく説明します。このチュートリアルでは、インストールから、Ubuntu 20.04上で動作するPHPアプリケーションのセッションハンドラーとして使用する外部Redisサーバーの設定まで、必要なすべての情報を得ることができます。.
はじめに
手順を進めるには、プライベートネットワークが有効な同じデータセンター内にある2つの異なるデータベースサーバー(Droplet)が必要です。これらには以下が含まれます:
-
以下を実行しているPHP Webサーバー:LAMPおよびLEMP (Ubuntu 20.04上) – このサーバーを「web」と呼びます.
-
Redisがインストールされる2つ目のクリーンなUbuntu 20.04サーバー – このサーバーを「redis」と呼びます.
ステップ 1 — Redisサーバーのインストール
最初のステップは、Ubuntu 20.04にRedisサーバーをインストールすることです。完了したら、サーバーが起動して動作していることを確認します。対象は私たちのredis Dropletです。
このチュートリアルでは、Personal Package Archives(PPA)を使用します。セキュリティ上の理由から、PPAの使用を強くお勧めします。他のサードパーティのリポジトリと比較して、PPAは安定しており、インストールが簡単で、何よりもUbuntuユーザー向けに設計されています。PPAを使用すると、公式のUbuntuリポジトリにないソフトウェアであっても、利用可能な最新のソフトウェアバージョンを取得できます。
未承認のソースからのPPAの使用は絶対に避けてください。信頼でき、検証されたソースからのみPPAを取得するようにしてください。次のコマンドを使用してPPAリポジトリを追加できます。
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
確定するには、Enter キーを押します。確認後、次のコマンドを使用してパッケージマネージャーのキャッシュを更新します。
|
1 |
sudo apt-get update |
次に、以下のコマンドを使用してRedisをインストールします。
|
1 |
sudo apt-get install redis-server |
コマンドを実行すると、サーバーにRedisがインストールされます。次のコマンドを使用してインストールをテストしてみましょう。
|
1 |
redis-cli ping |
コマンドを実行すると、localhost のポート 6379 で動作しているRedisインスタンスが表示されます。また、PONG という応答が返されます。これらが表示されれば、最初のステップは無事に完了です。Redisのインストールとセキュリティ保護に関する詳細なガイドについては、チュートリアル「Ubuntu 18.04でRedisをインストールして保護する方法.
」をご覧ください。次に、ステップ2のRedisの設定に進みましょう。
ステップ 2 — 外部接続を受け入れるためのRedisの設定
Redisを設定する主な目的は、外部からの接続を受け入れることです。なぜでしょうか?デフォルトでは、Redisは localhostへの接続のみを許可しており、それ以外の場所からの接続は制限されているためです。簡単に言うと、Redisをインストールしたサーバーの内部からのみアクセスできます。
まず、次の ifconfigコマンドを使用して、ネットワークインターフェースの詳細情報を取得します。
|
1 |
sudo ifconfig |
以下のような出力が表示されます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Link encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet addr:188.166.77.33 Bcast:188.166.127.255 Mask:255.255.192.0 inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3497 errors:0 dropped:0 overruns:0 frame:0 TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4895060 (4.8 MB) TX bytes:619070 (619.0 KB) eth1 Link encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet addr:10.133.14.9 Bcast:10.133.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:648 (648.0 B) TX bytes:578 (578.0 B) |
At the eth1 インターフェースに、 inet_addr があります。ここでは 10.133.14.9 となっています。これ以降のステップでは、このIPアドレスを使用して、redis サーバーへの接続を、web サーバーから行います。
ステップ 3 — ローカルホストのバインド
お好みのコードエディタを自由に使用してください(AtomやVisual Studio Codeが最も人気があります)。
次に、ファイル /etc/redis/redis.conf を開き、 bind 定義が含まれている行を探します。その行に、ご自身の private network IP address を追加してください。
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
場合によっては、 localhost が、以下の値の代わりに表示されていることがあります: 127.0.0.1。心配ありません。プライベートIPアドレスを追加するだけです。次に、変更を適用するためにRedisサービスを再起動します。以下のコマンドを使用して、redis サーバーを再起動します。
|
1 |
sudo service redis-server restart |
ワンクリックアプリケーションを使用してRedisをインストールしたユーザーは、以下のコマンドに従ってサーバーを再起動してください。
|
1 |
sudo service redis restart |
一度 redis サーバーを再起動すると、同じプライベートネットワーク内にあるすべてのサーバーが、個別に設定することなく、このRedisインスタンスに自動的に接続されます。
ステップ 4 — Redisサーバーのパスワード設定
練習やトレーニング目的でRedisをインストールしている場合は、このステップをスキップできます。ただし、Redisのインストールにセキュリティレイヤーを追加するために、redis サーバーのパスワードを設定することを強くお勧めします。前のステップと同様に、同じ設定ファイルを変更しましょう。編集するには以下のコマンドを使用します。
|
1 |
sudo vim /etc/redis/redis.conf |
以下が含まれている行のコメントアウトを解除します: requirepass。そして、強力なパスワードを設定します:
|
1 |
requirepass StrongPassword |
変更を反映するためにRedisサービスを再起動します。再起動するには次のコマンドを使用します:
|
1 |
sudo service redis-server restart |
ステップ 5 — Redisの接続と認証のテスト
このステップでは、次の内部からRedisサービスに接続します: redis マシンに接続し、行われたすべての変更が期待通りにシームレスに動作しているか確認します。接続するには、以下のコマンドを使用します:
|
1 |
redis-cli -h 10.133.14.9 |
ここで、ホスト名の指定を省略しても実行されます。私たちの主な目的は、Redisサービスが接続をシームレスに受け入れることを確認することです:
|
1 |
10.133.14.9:6379> |
定義されたパスワードからデータにアクセスしようとすると、 AUTH エラーが発生する可能性があります:
|
1 |
10.133.14.9:6379> keys * |
出力は以下のようになります:
|
1 2 |
OUTPUT: (error) NOAUTH Authentication required. |
認証するには、 AUTH コマンドを、次のファイルで定義したのと同じパスワードと一緒に実行します: /etc/redis/redis.conf ファイル:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
次に、コマンドをもう一度実行します:
|
1 |
10.133.14.9:6379> keys * |
今回は、エラーの代わりに OK がレスポンスとして返されます。以下のような出力が表示されます:
|
1 2 |
OUTPUT: (empty list または set) |
出力の empty list または set は、Redisサーバーが空であることを意味します。これは、ウェブサーバーをセッションハンドラーとしてまだ設定していないためです。
注意:次に進む前に、SSHセッションが開いており、redis-cliに接続されていることを確認してください。これ以降のステップで、web サーバーに必要な変更を加えた後、セッションデータが正しく保存されたかどうかを確認するために、redis-cliプロンプトに戻ります。
ステップ 6 — ウェブサーバーへのRedis拡張機能のインストール
次のステップは、web サーバーで実行する必要があります。PHPがRedisサーバーに接続できるように、PHP Redis拡張機能をインストールする必要があります。
まず、次のコマンドを実行してパッケージマネージャーのキャッシュを更新します:
|
1 |
sudo apt-get update |
次に、 php5-redis パッケージをインストールします:
|
1 |
sudo apt-get install php5-redis |
これでRedisに接続する準備が整いました。
ステップ 7 — ウェブサーバーでのデフォルトセッションハンドラーとしてのRedisの設定
PHPにはデフォルトのセッションハンドラーがあります。このステップでは、 php.ini ファイルを、web サーバー上で編集してデフォルト設定を変更します。 php.ini ファイルの場所は、現在のスタックによって異なります:
-
For a LAMP スタック(Ubuntu 20.04)の場合は、以下を使用します: /etc/php5/apache2/php.ini.
-
For a LEMP スタック(Ubuntu 20.04)の場合、通常パスは次のようになります: /etc/php5/fpm/php.ini.
メインの php.ini ファイルの場所がわからない場合は、関数 phpinfo() を利用してください。Webルートディレクトリ内の info.php という名前のファイルに、次のコードを配置します:
|
1 2 |
<?php phpinfo(); |
ブラウザからスクリプトにアクセスする際、「Loaded Configuration File」という行を探します。読み込まれているメインの php.ini ファイルの正確な場所が表示されます。環境の機密情報がすべて含まれているため、必ず info.php ファイルを削除してください。
その後、 php.ini ファイルを開き、 session.save_handler を含む行を探します。デフォルト値は files です。これを必ず redis.
On LAMP 環境の場合:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
On LEMP 環境の場合:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
次に、 session.save_path のコメントアウトを解除し、Redis接続文字列が含まれるように値を変更します。内容は以下の形式に従う必要があります:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
次のステップで設定したパスワードを使用してください:Step- 4.。設定したパスワードを使用しない場合は、Redisを設定する際にパラメータ auth を指定してください。ファイルを保存し、php 両方の環境でのサービス。
次の環境:LAMP 環境:
|
1 |
sudo service apache2 restart |
次の環境:LEMP 環境:
|
1 |
sudo service php5-fpm restart |
ステップ 8 — Redis セッション処理のテスト
最後のステップでは、セッションが Redis によって処理されていることを確認するために、PHP スクリプトまたはアプリケーションが必要です。カウンターを実装するシンプルなスクリプトを使用します。ページをリロードするたびに、表示される数値が増加します。
次の名前のファイルを作成します: demo.php(web サーバー上)そして、それをドキュメントルートフォルダ内に保存します:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
次に、 /usr/share/nginx/html をドキュメントのルートパスを反映するように変更します:
|
1 2 3 4 5 6 7 |
<?php //simple counter to test sessions. should increment on each page reload. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
次に、ブラウザで http://web/demo.php にアクセスしてスクリプトを実行します。ページをリロードするたびに、プログラムは数値をインクリメントします。
これで、セッション情報が Redis サーバーに保存されます。確認するには、redis マシンの SSH セッションに戻り、 redis-cli を使用します。次のコマンドでもう一度コンテンツを取得します: keys *:
|
1 |
10.133.14.9:6379> keys * |
以下のような出力が表示されます:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
この出力は、すべての情報が redis サーバーに安全に保存されていることを証明しています。追加の web サーバーを接続する場合も、同様の手順で行うことができます。
結論
Redis は、多数の非構造化データを保存できる NoSQL データベースです。 redis サーバーの機能性とシンプルさに匹敵するデータベースはほとんどありません。その人気の高まりにより、その幅広い機能に匹敵する代替品がほとんどない、必須のツールであり続けています。
PHP アプリケーションとその使用方法に関する知識をさらに深めるには、ブログの以下のチュートリアルをご覧ください:
- Ubuntu 18.04 を使用して Kubernetes クラスターに PHP アプリケーションをデプロイする
- Ubuntu 20.04 への phpBB のインストール
- Ubuntu 18.04 での phpMyAdmin のインストールとセキュリティ保護
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。