Redisのデータを画面で簡易的に操作できるphpRedisAdminをCentOS7+nginxにインストール

いままでphpスクリプトで、redisのデータをいじっていましたが、

さすがに大変なので、GUIで確認できるツールがないかと探したらありました。

phpMyAdminならぬ、phpRedisAdmin

簡易的にRedisのデータを確認・変更・削除したいなら便利かも!

で、早速インストール方法

こちらの環境で導入した際のメモ ..φ(..)メモメモ

  • CentOS7
  • nginx + php-fpm

おおもとのドキュメントはこちら(こっちみればええやん汗)

https://github.com/erikdubbelboer/phpRedisAdmin

1. ソースを落とす


git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git cd phpRedisAdmin git clone https://github.com/nrk/predis.git vendor

当たり前かもだけど、vendorもcloneしてね

2. あとはドキュメンルートに設定して、ブラウザから見れるようにと、アクセス制限

下記は、/etc/nginx/conf.d/〜〜.conf等に設定


server { listen 80; server_name phpredisadmin.hogehoge.com; root /usr/share/nginx/hoge/; index index.html index.htm index.php; location /phpRedisAdmin { allow アクセス元IP; deny all; } }

SQLite3の.sqlite3ファイル操作中の挙動メモ

最近ゲームサーバーのランキングデータを、

簡単に扱えるSQLite3を使って運用した際に、びっくりした挙動もメモ。

即席で作ったのでベタソース2枚のみw

構成

  • SQLite3のsqlite3ファイルをマスター用とスレーブ(読み取り専用)用の2つ用意し、
  • Redisをキャッシュ&集計処理用として利用をしていて。

下記のようなアクセスが秒間で数十あり。


// redisから現在のスコア取得 $currentScore = $redis->hGet('score', $_user); // SQliteで現在順位を取得 $pdo = new PDO('sqlite:db.sqlite3', "", ""); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->prepare("SELECT * FROM rankTable order by abs( ? - score) limit 1"); $stmt->execute([$currentScore]); $searchRank = $stmt->fetch();

毎回ソートとする集計はさすがに重いので、

下記のようなバッチソースをcronで一定間隔で集計。


// sqlite3ファイル上書きコピー if( copy($MasterDbFile, $ReadDbFile) ){ echo "db 上書きOK"; }else{ alertPush("sqlitecopy エラー"); }

このsqlite3ファイル、、毎回copyで上書きしている、、、!!!!
なのに、ReadDbFileのsqlite3ファイルへの接続は、、、

なんと生きているんす、、!!!

普通にselectで検索できちゃってます。。!

コピー中にアクセスしてもエラーにならない、、ロック処理みたいのがはたらいるのかな。。特に意識せずにやってけど、、

実際数十万のスコアデータランキングを格安(月額1000円未満の1台)サーバーでやって一度もエラーになっていませんでした(今のところ)wすごい

php7にしたらphp7からRedisが呼び出せなくなった時のメモ

よくある下記からphpからredisを使えるようにする処理のところで、

$redis = new Redis();

こういうphpエラーがでる。

PHP message: PHP Fatal error:  Uncaught Error: Class 'Redis' not found in /usr/share/nginx〜

今回の環境構成は、

yumで、全てインストールできるようにこだわっていたのですが、
なぜかphp7からredisがよびだせず、ちなみに、コンソールで、
redis-cliなどでredisを動かすことはできている。。

php5系の時は普通に動いていたのですが、
php-redis等のモジュールを系を入れ替えしてためしてみると、

yum install --enablerepo=epel,remi-php70 php70-php-pecl-redis

ではだめでしたが、

yum install --enablerepo=epel,remi-php70 php-pecl-redis

で、無事php7からredisを呼び出せるようになった。。

依存関係ハマりやすい。

はじめてのCentOS7 セットアップめもw

CentOS7にのりかえて、ちょっと焦ったのでめも。
ちょっと触ると逆に6よりわかりやすいかもw

※rpmforage

# rpm -ivh http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

※epel

# rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

※remiを追加

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

yumをアップデート

# yum update

nginx + php-fpm + redis のインストール

CentOS7から デフォルトでserviceコマンドではなく、systemctlコマンドでサービスを管理するようになった。

nginxのインストール

# yum install nginx
# systemctl status nginx.service
# systemctl start nginx.service
# systemctl enable nginx.service

※php-fpm.d/www.conf のuser と group を apahce → nginx へ

php-fpmのインストール

# yum install php-fpm php-mbstring php-gd  php-mysql php-redis
# systemctl status php-fpm.service
# systemctl start php-fpm.service
# systemctl enable php-fpm.service

redisのインストール

# yum install redis
# systemctl status redis.service
# systemctl start redis.service
# systemctl enable redis.service