CakePHP2を使うためにMAMPを更新した

CakePHP2系をそろそろ使ってみようと思ったら、なんか自分の環境でうまく動きません。どうも調べてみるとphpのバージョンが低すぎるのが原因みたいなので、MAMPをアップデートする事にしました。

自分のMacはいまだにLeopardで、最新のMAMP2系は既にサポートしてくれてません。なので1系の最新である1.9.6にアップデートしました。もうMAMPは2系なので、後で役に立つ事は無いかもだけど、こういうのは書いておきたいので一応メモしておきます。

更新手順

  1. Rename the current program folder MAMP to MAMP_OLD
  2. Load the installation image of MAMP from http://mamp.info and open it
  3. Drag the MAMP folder from the installation image to your "Applications" folder
  4. Copy the directories "htdocs" and "db" from your MAMP_OLD folder into the MAMP folder. It contains your personal HTML files and database contents. Overwrite the folders in the new MAMP folder
  5. Check whether all data has been transferred correctly
  6. The MAMP_OLD folder can now be deleted. You may however keep it, so you can fall back to your original setup
http://documentation.mamp.info/en/mamp/installation/updating-mamp

公式ではこんな手順になっています。MySQLの中身とかは自動でうまい事やってくれたりはしない様子。自分の場合、Virtual Hostだったり自己証明のSSLだったりがあるので、もうちょっと手間がかかります。

$ cd /Applications
$ mv MAMP MAMP_OLD
#MAMP 1.9.6を/Applications/MAMPに設置
$ cd MAMP
$ rm -fR db/
$ cp ../MAMP_OLD/db .

まずは公式の手順どおりMySQLのデータベースであるユーザーデータの移行までやります。なお、Virtual Hostを作ってるから、htdocsは使ってませんでした。

Virtual HostとSSL
$ cp ../MAMP_OLD/conf/apache/myhttpd.conf conf/apache/
$ cp -R ../MAMP_OLD/conf/apache/ssl_crt conf/apache/
$ cp -R ../MAMP_OLD/conf/apache/ssl_key conf/apache/

httpd.confやssl.confは手をつけず、自分が書いた設定はmyhttpd.confにまとめました。これとSSL用のファイルをコピーします。

Include /Applications/MAMP/conf/apache/myhttpd.conf

httpd.confの最後で自分のconfを読み込むようにincludeを書きます。

相対パスはダメだった
Include myhttpd.conf
$ /Applications/MAMP/bin/apache2/bin/apachectl configtest
httpd: could not open document config file /Applications/MAMP/Library/myhttpd.conf

myhttpd.confとhttpd.confは同じディレクトリにあるので、相対パスでも良いんじゃないかと思ったけど、なんかダメでした。まぁ、絶対パスで困る事もないので、絶対パスで書きます。

ssl用の設定
$ vim /Applications/MAMP/bin/startApache.sh

# /bin/sh
/Applications/MAMP/Library/bin/apachectl startssl

MAMPSSL使うには、startApache.shも編集する必要があります。これも古いMAMPから新しいMAMPに、自分で移行しないといけないファイルです。といってもstartstartsslになるだけなので、普通に書き足します。

<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>

ちなみにこの変更は、httpd.confのこのIfDefine SSLが真になるようにしています。

MySQLのデータファイルのアップグレード

MAMP.appを起動すると、MySQLのデータファイルをアップグレードするようにメッセージが出ました。まぁMySQLは5.0から5.5になったので、やらざるを得ません。バックアップをしてからアップグレードを始めるように書いてあります。今回は特に問題なくアップグレードできたようだけど、どこかで止まったりしたらややこしそう。まぁ開発環境だから、最悪消しても良いけど。アップグレードツールのとこにも書いてあるけど、バックアップしてからのアップグレードが推奨されてます。なのでMAMP_OLDディレクトリを削除する前にやったほうが良いです。

その他

MAMP 1.9.6ではphp5.3系と5.2系を切り替えて使えるようです。なのでMAMP.appでどちらを使うか切り替えが出来ます。あとキャッシュもAPC, eAccelerator, XCacheから選べます。

あと、かなり前にmongodbが使えるようしたけど、流石に細かいとこ覚えてないので、また使うときに改めて導入するかなー。

環境

before
Mac Mac OS X 10.5.8(Leopard
MAMP 1.7.2
php 5.2.6
MySQL 5.0.41
after
Mac Mac OS X 10.5.8(Leopard
MAMP 1.9.6
php 5.3.5 or 5.2.17
MySQL 5.5.9