PHP 環境で Redis を利用可能にするためには、PHP 拡張モジュールのコンパイルと Redis サーバー本体のインストールが必要です。以下に、ソースコードから構築する手順を示します。
PHP Redis 拡張モジュールの構築
まず、PHP 用の Redis 拡張ソースコードを取得し、環境に合わせてコンパイルを行います。
cd /opt/src
wget https://github.com/phpredis/phpredis/archive/master.zip
unzip master.zip
cd phpredis-master
PHP 環境に合わせて phpize を実行し、設定 script を生成します。
/opt/php_runtime/bin/phpize
./configure --with-php-config=/opt/php_runtime/bin/php-config
make
make install
コンパイルが成功すると、拡張ファイルが生成されます。生成されたパスは以下のようになります。
/opt/php_runtime/lib/php/extensions/no-debug-non-zts-xxxx/redis.so
PHP 設定の更新
php.ini ファネルの所在を確認するには、以下のコマンドを実行します。
/opt/php_runtime/bin/php --ini
出力結果から設定ファイルのパスを確認し、編集を開きます。
vim /etc/php.ini
設定ファイルの末尾に、生成された拡張モジュールを読み込む行を追加します。
extension=redis.so
設定反映のため、Web サーバーおよび PHP プロセスマネージャーを再起動します。
systemctl restart nginx
systemctl restart php-fpm
モジュールが正しくロードされているか確認します。
/opt/php_runtime/bin/php -m | grep redis
Redis サーバーのインストール
次に、Redis サーバー本体をソースからインストールします。
cd /opt/src
tar -zxvf redis-stable.tar.gz
cd redis-stable
make
make install
デフォルトの設定ファイルをコピーし、編集を行います。
cp redis.conf /etc/redis_conf/6379.conf
vim /etc/redis_conf/6379.conf
バックグラウンド実行を有効にするため、以下の設定を変更します。
daemonize yes
システムサービスとしての登録
Redis をシステムサービスとして管理できるよう、起動スクリプトを設定します。
cp utils/redis_init_script /etc/rc.d/init.d/redis
chmod +x /etc/rc.d/init.d/redis
スクリプト内容を環境に合わせて修正します。変数名やパスを変更し、要件に合わせます。
#!/bin/bash
#chkconfig: 2345 80 90
SERVICE_PORT=6379
DAEMON_PATH=/opt/redis_runtime/bin/redis-server
CLI_BIN=/opt/redis_runtime/bin/redis-cli
PID_PATH=/var/run/redis_${SERVICE_PORT}.pid
CONFIG_FILE="/etc/redis_conf/${SERVICE_PORT}.conf"
case "$1" in
start)
if [ -e $PID_PATH ]
then
echo "Process lock exists. Already running?"
else
echo "Launching Redis daemon..."
$DAEMON_PATH $CONFIG_FILE &
fi
;;
stop)
if [ ! -e $PID_PATH ]
then
echo "No lock file found. Process not running."
else
PID_VAL=$(cat $PID_PATH)
echo "Shutting down..."
$CLI_BIN -p $SERVICE_PORT shutdown
while [ -x /proc/${PID_VAL} ]
do
echo "Waiting for termination..."
sleep 1
done
echo "Redis service stopped"
fi
;;
*)
echo "Usage: {start|stop}"
;;
esac
サービスに登録し、自動起動を有効化します。
chkconfig --add redis
chkconfig redis on
service redis start
最後に、ポートがリッスンされているか確認して完了です。
netstat -tnlp | grep 6379