HomebrewでMAMP環境を構築する話
MAMPとかいう一瞬で環境構築が可能なソフトウェアがあったり、あらかじめMacにApacheやらPHPが入っている訳ですが、あえてHomebrewでMAMP環境を構築しようという試み。とりあえず「動いてるなー」というところまで
Homebrewはインストール済みということで話を進めていきます。
行うことは、
- PHPのインストール
- Apacheのインストール
- MySQLのインストール
PHPのインストール
今回はPHP5.3をインストール
$ brew install php53
多分恙無く終了するはず。
php.iniなどの場所は
$ brew info php53
で確認できます。
php.iniにて、MySQLとPHPで通信を行うためにソケットファイルの位置を設定。
1075行付近 pdo_mysql.default_socket= /tmp/mysql.sock 1230行付近 mysql.default_socket= /tmp/mysql.sock 1288行付近 mysqli.default_socket= /tmp/mysql.sock
念のためにpod_mysqlとmysqliも書いておく。
PEAR用にパーミッションの変更とcomfigの設定。これについては先のbrew infoから確認できる。
$ chmod -R ug+w /usr/local/Cellar/php53/5.3.xx/lib/php $ pear config-set php_ini /usr/local/etc/php/5.3/php.ini
ついでに拡張モジュールなどもインストール
$ brew install php53-intl $ brew install php53-apc $ brew install php53-xdebug
PEAR関係も
$ pear config-set auto_discover 1 $ pear install pear.phpunit.de/PHPUnit $ pear install PhpDocumentor $ pear install pear.phing.info/phing
ここで一旦Homebrewでリンクの張り直しをする。
$ brew unlink php53 Unlinking /usr/local/Cellar/php53/5.3.21... 33 links removed $ brew link php53 Linking /usr/local/Cellar/php53/5.3.21... 44 symlinks created
Apacheのインストール
$ brew install httpd
こちらも恙無く終了するはず。
で、このまま起動できるか試してみる
$ sudo apachectl start
そしたら、こんなエラー吐かれました
(2)No such file or directory: httpd: could not open error log file /usr/local/Cellar/httpd/2.2.23/var/apache2/log/error_log.
どうやらログファイルのディレクトリがないらしいので
mkdir -p /usr/local/Celler/httpd/2.2.23/var/apache2/log
としてディレクトリを作成し、再度起動してみる。
$ ps aux | grep httpd
とか打って、httpdプロセスが起動していれば問題なし。
しかしなぜか私のは起動していなかったので、errer_logを見に行くと...
[error] (2)No such file or directory: could not create /usr/local/Cellar/httpd/2.2.23/var/apache2/run/httpd.pid
とかなんとか。runディレクトリが今度はないようなので作成して再度起動させると今度はプロセスが確認できた。
続いて、軽くhttpd.confを編集し、
LoadModule php5_module /usr/local/opt/php53/libexec/apache2/libphp5.so
を追記してPHPのモジュールを読み込ませる。 また、PHPを認識させるためにhttpd.confの
<IfModule mime_module> TypesConfig etc/apache2/mime.type AddType application/x-compress .Z AddType application/x-gzip .gz .tgz </IfModule>
の部分を
<IfModule mime_module> TypesConfig etc/apache2/mime.type AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php </IfModule>
と追記し、
<IfModule dir_module> DirectoryIndex index.html </IfModule>
に
<IfModule dir_module> DirectoryIndex index.php index.html </IfModule>
と追記する。 index.phpをindex.htmlより先に書くと優先的に読み込まれるようになる。
httpd.confを変更したので
$ apachectl congigest
を実行し、Syntax OKと出力されれば問題ないので、設定を反映する為にApacheの再起動を行う。
$ sudo apachectl stop $ sudo apachectl start
MySQLのインストール
$ brew install mysql
でインストール。
$ brew info mysql
で情報を表示させると初期設定する方法が簡易に書かれているので
$ unset TMPDIR $ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
を実行する。
そして、起動してみる
$ mysql.server start
Starting MySQL .. SUCCESS!
となれば起動成功かと。