Fatal Error: Unexpected BLOG

主に自分用の備忘録として

【VM】【環境構築】VirtualBoxを使ってPC上に開発環境を構築する(6 - phpMyAdminを設置する)

データベースを視覚的に操作するために、phpMyAdminを設置します。
前回までに構築している環境は以下の通り。

Nginxの設定やら何やらで大分手こずりました。
以下のサイトを参考にしました。

ググりまくったw

phpMyAdminのダウンロード・設置

yumでインストールすると最新版が入らないし、余計なものも付いてきそうなので、ソースコードをダウンロードして展開します。
執筆時点での最新版は4.4.4でした。
通常phpMyAdminは /user/share/配下にインストールされるようなので、そこで展開します。

# cd /usr/share/
# wget http://jaist.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.4.4/phpMyAdmin-4.4.4-all-languages.tar.gz
# tar xvzf phpMyAdmin-4.4.4-all-languages.tar.gz

このままだと名前がめんどくさいので、変更します。
併せて、Nginxから利用できるようにchownしておきましょう。

# mv phpMyAdmin-4.4.4-all-languages phpmyadmin
# chown -R root.nginx /usr/share/phpmyadmin/

phpMyAdminがsessionを保存するために利用するディレクトリのパーミッションも変更します。

# chmod 775 /var/lib/php/session

無かったらmkdirで。

phpMyAdminの設置は完了です。

phpMyAdminの設定

続いて、phpMyAdminの設定を行います。
設定時にランダムな文字列が必要になるので、expectでmkpasswdします。

# yum install -y expect

46文字のランダムな文字列を生成します。

# mkpasswd -l 46

続いて、設定ファイルを編集します。
作業ディレクトリは /usr/share/phpmyadmin/です。

# cd /usr/share/phpmyadmin
# cp ./config.sample.inc.php ./config.inc.php
# vi config.inc.php

以下、設定例です。

<?php
/*...(略)...*/
/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = 'ランダムな文字列';

/*...(中略)...*/

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'ユーザ名';
$cfg['Servers'][$i]['password'] = 'パスワード';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'socket'; //'tcp'から変更
$cfg['Servers'][$i]['socket'] = '/var/lib/mysql/mysql.sock'; //sampleには無いので追加
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'コントロールユーザのホスト';
$cfg['Servers'][$i]['controlport'] = 'コントロールユーザのポート';
$cfg['Servers'][$i]['controluser'] = 'コントロールユーザのユーザ名';
$cfg['Servers'][$i]['controlpass'] = 'コントロールユーザのパスワード';

//以下、sampleだとコメントアウトされているので有効化
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';

/*...(中略)...*/

/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';
$cfg['DefaultLang'] = 'ja-utf-8';
$cfg['Lang'] = 'ja-utf-8';
$cfg['DefaultCharset'] = 'utf-8';

/*...(略)...*/

Nginxの設定

Nginx側でphpMyAdminへのアクセスを設定します。
Nginxは/etc/nginx/conf.d/配下にある.confファイルを読み込むようになっているので、そこに追加します。

# vi /etc/nginx/conf.d/phpmyadmin.conf

ポート8080へのアクセスをphpMyAdminへリダイレクトするようにしました。

server{
    listen       8080;
    server_name  mydomain.com;

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

    location ~ \.php$ {
        root          /usr/share/phpmyadmin;
        fastcgi_pass  unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

確認

Nginx / PHP-FPM / MySQLをそれぞれrestartします。

# service mysqld restart
# service php-fpm restart
# service nginx restart

以下のURLへアクセスしてrootのパスワードでログイン出来れば成功です。
iptablesで8080番ポートのアクセスを許可しておいて下さい。

http://mydomain.com:8080

f:id:al_lucky:20150428103431p:plain

ソケットのパスが不正だの、MySQLサーバにアクセス出来無いだのと、いろいろあって行ったり来たりしましたが、何とか設置出来ました。

次回はmemcacheをインストール・設定します。
すっかり忘れてた。