未分類

CentOS7.x PHP5.x Redis・phpredisのインストール手順

更新日:

Redisとは...

Redisは、ネットワーク接続された永続化可能なインメモリデータベース連想配列(キー・バリュー)、リストセットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。オープンソースソフトウェアプロジェクトであり、Redis Labs英語版がスポンサーとなって開発されている[4]

wikipediaより

 

簡単にいうと高速に読み書きできるKVSです。

MysqlのようなRDBMSとは違い、とてもシンプルな構造でデータを保管します。

 

Redisについての情報は少なく、インストールにもかなり苦労したので、自分の躓いたポイントを含め、手順を解説していきます。

おそらく、ダブっている(必要のない)手順もあると思いますので、気づいた方はこそっと教えてください笑

 

私の環境について

PHP 5.5.18

CentOS 7.6.1810

 

 

インストール手順

epelリポジトリをインストール

sudo yum -y install epel-release

 

remiリポジトリをインストール

sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

 

epelとremiを無効化

sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel*
sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/remi*

 

Redisをyumでインストール

sudo yum install --enablerepo=epel,remi redis

 

バージョン表示(インストールの確認)

redis-cli -v

 

Redisの起動

sudo systemctl start redis.service

 

自動起動設定

sudo systemctl enable redis.service

 

起動の確認

systemctl status redis
→ active (running)ならおっけい

Redisを実行し、入力待機状態に

redis-cli --raw

 

→ rawオプションを付けることで、日本語対応になる

 

動作確認

 127.0.0.1:6379> set key value
 OK
 127.0.0.1:6379> keys *
 1) "key"
 127.0.0.1:6379> get key
 "value"
 127.0.0.1:6379> del key
 (integer) 1
 127.0.0.1:6379> keys *
 (empty list or set)

 

phpredis インストール

sudo yum install -y php-pecl-redis

 

 

githubからphpredisのソースを取得

cd /usr/local/src

sudo git clone https://github.com/nicolasff/phpredis.git
cd phpredis

 

→もし(git fatal: unable to access Peer reports incompatible or unsupported protocol version.)エラーが出た場合には、

sudo yum updateを実施してください。

 

PHPのバージョンを確認する

php -v

 

PHP7.xの方は、そのまま飛ばしてください

私の場合は、PHP5.x系なので、自分に合ったリビジョンを取得します

sudo git checkout c588f0308a4d49368a436e660b4a29a0579f802d

 

インストール

sudo phpize
sudo ./configure
sudo make
sudo make install

 

php.iniをrootから検索

find / -name php.ini 2>/dev/null

 

php.iniに、extension=redis.soを追記

vi /etc/php.ini

extension=redis.soを書き込み

:w !sudo tee %(強制保存)
:q!

 

 

apacheを再起動して反映

sudo service httpd restart

 

phpredis読み込み確認

php -m | grep redis

 

→ redisという表示が返ればok

 

念のため、php -iでも確認し

php -i | grep redis

 

→もし、
PHP Warning: Module 'redis' already loaded in Unknown on line 0
のような表記が出たのなら、それはmoduleの読み込みが重複しています。

(動作に影響はないですが、warningを消したい場合は、重複しているextension=redis.soを削除すると良いでしょう)

 

結果

redis
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.consistent => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
redis.arrays.hosts => no value => no value
redis.arrays.index => 0 => 0
redis.arrays.lazyconnect => 0 => 0
redis.arrays.names => no value => no value
redis.arrays.pconnect => 0 => 0
redis.arrays.previous => no value => no value
redis.arrays.readtimeout => 0 => 0
redis.arrays.retryinterval => 0 => 0
redis.clusters.auth => no value => no value
redis.clusters.persistent => 0 => 0
redis.clusters.read_timeout => 0 => 0
redis.clusters.seeds => no value => no value
redis.clusters.timeout => 0 => 0
redis.pconnect.connection_limit => 0 => 0
redis.pconnect.pooling_enabled => 0 => 0
redis.session.lock_expire => 0 => 0
redis.session.lock_retries => 10 => 10
redis.session.lock_wait_time => 2000 => 2000
redis.session.locking_enabled => 0 => 0
Registered save handlers => files user redis rediscluster
This program is free software; you can redistribute it and/or modify

 

これでインストール完了です。

 

 

PHPとの接続を確認

<?php
$host = '127.0.0.1';
$port = 6379;
$r = new Redis();
$r->connect($host, $port);
$r->set("foo","bar");
var_dump($r->get("foo"));
?>

 

上記を記述し、実行してみてください。

その後、サーバよりredis-cliを実行し、登録されているか確認を行います。

-bash-4.2$ redis-cli
127.0.0.1:6379> keys *
1) "foo"
127.0.0.1:6379> get foo
"bar"

 

このようになっていれば、PHPからRedisを使用できる状態です。

 

-未分類

Copyright© エンジニアの階段 , 2019 All Rights Reserved Powered by STINGER.