Redisクラスタへのクライアント接続
前回の記事でRedisサーバーを正常に構築できた場合、次はPHPアプリケーションからRedisクラスタに接続するための環境を設定します。以下の手順に従って、PHP 7.1環境と関連拡張機能をインストールし、Nginxと連携させて動作を確認します。
1. PHP 7.1および関連拡張機能のインストール
まず、PHP 7.1と必要な拡張機能をインストールします。CentOS 7システムの場合、以下のコマンドを使用してリポジトリを更新します。
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
リポジトリの更新中に証明書関連のエラーが発生する場合、以下の手順で解決できます。
- まず、エラーの原因となったRPMパッケージを削除します。
yum -y remove epel-release-7-14.noarch - 証明書をインストールします。
yum install ca-certificates -y - 証明書を更新します。
update-ca-trust extract - リポジトリを再度更新します。
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2. PHP 7.1と主要な拡張機能のインストール
PHP 7.1本体および一般的な拡張機能を一括でインストールします。
yum -y install php71w php71w-fpm php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath
3. PHPバージョンの確認
インストールが完了したら、PHPのバージョンを確認します。
php -v
期待される出力例:
PHP 7.1.33 (cli) (built: Oct 26 2019 10:16:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
4. Swoole拡張のビルドとインストール
Swoole拡張は、PHPの非同期I/Oをサポートするために使用されます。ソースからビルドしてインストールします。
wget -O Swoole-4.8.0.tar.gz https://github.com/swoole/swoole-src/archive/v4.8.0.tar.gz
tar -zxvf Swoole-4.8.0.tar.gz
cd swoole-src-4.8.0
phpize
./configure
make
make install
5. php-redisおよびhiredisのインストール
Redisに接続するためのPHP拡張機能と、より高速な非同期通信をサポートするhiredisをインストールします。
yum -y install redis php-redis hiredis-devel
6. php.iniの設定
拡張機能が正しく読み込まれるように、`php.ini`ファイルを編集します。
vim /etc/php.ini
ファイルの末尾に以下の行を追加します。
extension=redis.so
extension=swoole.so
設定を反映させるために、以下のコマンドでモジュールが正しくロードされているか確認します。
php -m
7. php-fpmの設定
Webサーバー用のユーザーとグループを作成し、php-fpmの設定を調整します。
groupadd www-data
useradd -g www-data www-data
次に、php-fpmの設定ファイルを編集して、ユーザーとグループを指定します。
vim /etc/php-fpm.d/www.conf
以下の行を変更します。
user = www-data
group = www-data
8. Nginxの設定
Nginxをインストールし、PHP-FPMと連携するように設定します。
yum -y install nginx
cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
設定ファイル内のPHP処理ブロックを以下のように変更します。
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
9. テストページの作成と動作確認
テスト用のPHPファイルを作成し、WebサーバーがPHPを正しく処理できるか確認します。
systemctl restart nginx
cd /var/www/html/
vim info.php
ファイルに以下の内容を記述します。
<?php
phpinfo();
?>
サービスを再起動します。
systemctl restart nginx php-fpm
ブラウザで http://[サーバーのIPアドレス]/info.php にアクセスし、ページが表示されることを確認します。ページ内で「redis」を検索し、Redisモジュールが有効になっていることを確認してください。
10. Redisへの接続テスト
最後に、PHPスクリプトを使用してRedisサーバーに接続できるかテストします。接続先のRedisサーバーは事前に起動させておいてください。
vim redis_test.php
以下のスクリプトを記述します。接続先のIPアドレスとポートは環境に合わせて変更してください。
<?php
// Redisサーバーに接続
$client = new Redis();
$client->connect('redis-master', 6379);
// 認証(パスワードが設定されている場合)
$client->auth('');
echo "Redisサーバーへの接続に成功しました。
";
// サーバーの状態を確認
echo "サーバーの応答: " . $client->ping();
?>