会社で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を編集します。
基本的には、
- controluserとcontrolpassを設定する
- 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で開発できるぞー!!