vagrant-php-boxを使ってphp,mysql,phpMyAdminを使えるようにするまで

会社でVagrantを使っているので、自宅のMacでも、自分のWordPressのカスタマイズはVagrant上で動かすようにしようと思ってVagrantで環境を作ろうとしていたのですが、ひょっとしたらもうすでにそういうのはありそうだなと思ってぐぐったところ、公開されていました。

Link: https://github.com/sapienza/vagrant-php-box

このvagrant-php-boxを使えば、すぐにLAMP環境が手に入ります。便利。
しかし、phpMyAdminにログインしたところ、エラーメッセージがでていたので、これを消すのに手間取りました…。備忘録も兼ねて残しておきます。

vagrant-php-boxの導入

まずはvagrant-php-boxの導入です。
私の環境はMacOS 10.10.3なので、ほかの環境の方は適宜置き換えてください。
まず、ターミナルを起動後、vmディレクトリを作り、そこにvagrant-php-boxを置き、起動します。

mkdir ~/vm
cd vm
git clone git@github.com:sapienza/vagrant-php-box.git
cd vagrant-php-box
vagrant up

エラーなく起動できたら、次に進みます。

phpMyAdminにログインする

さっきまでの処理が終わったら、ブラウザでhttp://localhost:8080にアクセスすることができるようになっています。
そして、phpMyAdminも使えるようになっているのでアクセスしてみましょう。

http://localhost:8080/phpmyadmin/

ログインはデフォルトでユーザー名、パスワードともにrootです。
使い捨てられる開発環境なので、別にこのままでもいいと思います。

ログインしたら、警告文が下のほうに出ていると思います。これらを消していきます。

「環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。」を消す

これは、phpMyAdminの設定を保存するデータベースがないためです。これを作りましょう。
まず、vagrantで作ったサーバにログインします。

vagrant ssh

次にサーバ上で以下のコードを実行します。

cd $(sudo find / -type d -name "examples" | grep phpmyadmin)
gunzip -c create_tables.sql.gz | mysql -uroot -proot

説明しますと、これは、phpMyAdminの設定を保存するテーブルを作るファイルが保存されているところを探し出し、そこに移動後、mysqlにrootでログインして環境保管領域であるデータベースphpmyadminを作っています。

「設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました」を消す

次に、phpMyAdminの設定ファイルである、config.ini.phpを修正していきます。実は、これにハマりました。

phpMyAdminのプログラムは/usr/share/phpmyadmin以下に保存されており、config.sample.inc.phpもここにあったため、config.inc.phpをここに設定すればいいと考えていたのですが、これが間違っていました。
phpMyAdminのconfig.inc.phpの保存場所は/etc/phpmyadmin以下です。気をつけましょう!!

vagrant-php-boxが作っているconfig.inc.phpは別名で保存しておいて、config.sample.inc.phpを元に作りましょう。

cd /etc/phpmyadmin
sudo mv config.inc.php config.inc.old.php
cd /usr/share/phpmyadmin
sudo cp config.sample.inc.php /etc/phpmyadmin/config.inc.php

ここから、/etc/phpmyadmin/config.inc.phpを編集します。
基本的には、

  1. controluserとcontrolpassを設定する
  2. pmadb以下のコメントアウトを外す

だけです。今回はvagrant上の使い捨てなので、rootのままにしています。
本番環境や、外部から見られる環境の場合は止めましょう。

/*
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'root';

/* 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]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';

これらはphpMyAdminの設定を保存する場所(アクセスできる人、データベース、テーブル名)を示しています。

「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」を消す

最後に、mcrypt拡張のエラーメッセージです。
実はこれも、apt-getでphp5-mcryptがインストールされているのに出ていたエラーだったのでハマりました。

sudo apt-get install php5-mcrypt

を実行すると、すでにインストールされていると言われました。

ひとしきり悩んだのですが、有効になっていないだけかもしれないと思い、有効の仕方を調べて実行したら、うまくいきました。

sudo php5enmod mcrypt

mcryptを有効にしたら、apache2を再起動しておきましょう。

sudo service apache2 restart

その後、一旦phpMyAdminをログアウトして、再度ログインしてみてください。
エラーメッセージが消えているはずです!

さて、これで気兼ねなくPHPとMySQLで開発できるぞー!!


カテゴリー MySQL, PHP | タグ     | パーマリンク

コメント・トラックバック一覧

  1. Pingback: PCの80番ポートでvagrantの80番ポートにアクセスする方法 | 自転車で通勤しましょ♪ブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です