Linux 環境における PHP Redis 拡張および Redis サーバーのソースコンパイル手順

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

タグ: php-extension redis-server linux-compilation systemd php-configuration

6月20日 23:47 投稿