Redisクラスタに接続するPHP環境の構築

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

リポジトリの更新中に証明書関連のエラーが発生する場合、以下の手順で解決できます。

  1. まず、エラーの原因となったRPMパッケージを削除します。
    yum -y remove epel-release-7-14.noarch
    
  2. 証明書をインストールします。
    yum install ca-certificates -y
    
  3. 証明書を更新します。
    update-ca-trust extract
    
  4. リポジトリを再度更新します。
    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();
?>

タグ: redis PHP CentOS nginx php-redis

7月7日 19:10 投稿