tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【phpMyAdmin】phpMyAdminをphp-fpm x nginxで動かしてみるメモ for さくらVPS

はじめに

さくらVPSを使ってちょっとしたアプリを作ってるときに
データの管理にphpMyAdminを使いたかったので入れたメモ

あじぇんだ

  1. まえおき
  2. php-fpmインストール
  3. phpmyadminインストール
  4. phpmyadmin設定
  5. nginxの設定
  6. ポートの開放
  7. 確認
  8. basic認証かける

1. まえおき

まえおきというほどでもないですが、今回は下記を前提に書いています。

  • phpはいってる
  • mysqlはいってる
  • nginxはいってる

このあたりはリンクをおいておくので、そちらを参考に入れてみてください。

この記事のphpmyadminを動かすにあたり
それぞれ上記リンクのとおり入れてあるのでそのまんま動くかと。

2. php-fpmインストール

php-fpmもまえおきに入れるか迷いましたが、こちらに出しました。
php-fpmはfastcgiでphpmyadmiを動かすために使います。

とはいえ、こちらもphp-fpm入れる記事を別途書いてるのでそちらを参考に

【php】nginxとphp-fpmが動く環境を手っ取り早く入れるメモ

php-fpmはphp製品を使うために入れたいだけなので
デフォルトではいってるものとして前置きにいれるのもなー。。。。って項目別にしました。

3. phpmyadminインストール

これはyumでたたくだけですね。

※ phpmiadminインストール
$ sudo yum --enablerepo=remi install mysql-server php-mysql phpmyadmin

4. phpmyadmin設定

phpmyadminの設定をします。
今回設定するものはsessionに関してくらいです。

※ 設定ファイルをバックアップ
$ sudo cp /etc/php.ini /etc/php.ini.org

※ phpmyadminがつかうsessionディレクトリのパスを設定
$ sudo vi /etc/php.ini
---- vi編集 ----
session.save_path = "/var/lib/php/session"
---------------

※ /var/lib/php/sessionの権限を変更
※ のまえに今の権限を確認
$ ls /var/lib/php -l
drwxrwx--- 2 root apache 4096 10月 31 05:17 2014 session

※ 権限の変更
$ sudo chown -R apache.apache /var/lib/php/session

※ 確認
$ ls /var/lib/php -l
drwxrwx--- 2 apache apache 4096  7月 11 17:33 2015 session
補足1

/var/lib/php/sessionの権限を変更しましたが、
デフォルトのままだとひととおり設定したあとにブラウザからアクセスすると
こんな感じで表示されたりします。

f:id:tweeeety:20150711192318p:plain

こんなときはsessionディレクトリの権限を疑ってみてください。

補足2

今回はnginxユーザを作成していないので、apacheユーザで作成しました。
nginxを使ってるのにw

nginxの設定やユーザを正しく作成したあとはnginx:nginxとかしたほうが良いですね。

nginxの実行ユーザも本当はnginxに合わせたいですね。
今回は上述の通りnginxユーザはいないのでnginxもapacheユーザで起動してます。

$ sudo vi /usr/local/nginx/conf/nginx.conf
user apache;
worker_processes  2;

5. nginxの設定

nginxの設定をします。
nginxのインストール状況によってはconfのパスが違うと思いますが
入れた環境に合わせて読み替えてください。

ログディレクトリの作成

phpmyadmin用にログディレクトリを作成しておきます。

※ nginx経由でphpmyadmin用のログを吐くディレクトリを作成
$ sudo mkdir /var/log/phpmyadmin
confの設定

phpmyadmin用にconfファイルを作成します。

$ sudo vi /usr/local/nginx/conf/extra/phpmyadmin.conf
---- vi作成 ----
server {
    listen 5050;
    server_name  hoge.exsample.com;
    access_log /var/log/phpmyadmin/access.log;
    error_log  /var/log/phpmyadmin/error.log warn;

    location / {
        root /usr/share/phpMyAdmin;
        index index.php;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
        include fastcgi_params;
    }
}
---------------

6. ポートの開放

こちらは余談的な感じです。
nginxの設定でlisten 80;とかで指定する場合は飛ばしてください。

今回の環境では、server_name hoge.exsample.com;がサービスかなにかで
すでに使ってしまっている想定なのでドメインは同じまま、ポートで分ける設定として書いてます。

※ iptables変更してポートあける
$ sudo vi /etc/sysconfig/iptables
---- vi追記 ----
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5050  -j ACCEPT
---------------

※ iptables再起動
$ sudo /etc/init.d/iptables restart

とはいえ実際の設定はリンクをおいて手抜きしますw
さくらvpsの設定自分メモ - iptables②(パケットフィルタリング)

7. 確認

ブラウザからhoge.exsample.com:5050にアクセスして確認します。
こんな感じで表示されればオッケーです。
f:id:tweeeety:20150711194034p:plain

ログインしてみる

データベースやユーザ設定をしてあればログインしてみます。
こんな感じで表示されれば問題なし! f:id:tweeeety:20150711191117p:plain

補足

#2002 MySQL サーバにログインできませんとかでてログインできない場合、こちらも参考にしてみてください。

【phpMyAdmin】#2002 MySQL サーバにログインできませんのときの対処法

8. basic認証かける

こちらはおまけです。
簡易的な認証にはなりますが、ないよりはマシってことで。

こちらもリンクで手抜きします。ww

【nginx】nginxとhttpd-tools(htpasswd)でサクっとbasic認証をかけるメモ

basic認証をかける設定ができたらnginxのconfに下記のように追記します。

$ sudo vi /usr/local/nginx/conf/extra/vhost.conf
---- vi追記 ----
server {
    ・・・省略・・・
    
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
----------------

参考

こちらを主に参考にさせていただきました!ありがとうございます!

おわりに

phpMyAdminはみためもしっかりしてて使いやすいので個人で使うにもいいですよね!
さくらVPSなんかでも問題なく動くので入れてみたい方は使ってみると良いかもです。
enjoy!