Mac OS X Mountain LionでMAMP環境を構築する

Mac OS X Mountain LionでPHPアプリケーションを構築できる環境を整える手順書です。
使用するバージョンはそれぞれ以下の通りです。それぞれの環境でバージョンは読み替えてください。

- Apache 2.2.22
- MySQL 5.5.29
- PHP 5.4.11
- PHPMyAdmin 3.5.5


## 1.基本方針
* デフォルトでインストールされているパッケージは利用しない。
* 可能な限りHomebrewを利用してパッケージをインストールする。

## 2.Homebrew

### 2.1.準備
まず、Homebrewをインストールするため、JavaとXcode(コマンドラインツール)をインストールします。

#### 2.1.1.Java
Javaのバージョンを確認しようとするとインストールを促されるので、そのままインストールします(JDK 1.6)。

```bash:Terminal
$ java -version
```

#### 2.1.2.Xcode(コマンドラインツール)
AppStore([Mac App Store - Xcode](https://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12 Mac App Store - Xcode))からXcodeをインストールし、

**Preferences > Downloads > Components**

のCommand Line Toolsをインストールします。

![Command Line Tools](http://i.imgur.com/NoB7Y.png)

### 2.2.インストール
[Homebrew — MacPorts driving you to drink? Try Homebrew!](http://mxcl.github.com/homebrew/ Homebrew — MacPorts driving you to drink? Try Homebrew!)の最下部のコマンドを入力してインストールします。
インストールコマンドはちょくちょく更新されるようなので、Homebrewのページで確認した上で実行してください。

```bash:Terminal
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
```

### 2.3.初期設定
何はともあれ最新版に更新します。

```bash:Terminal
$ brew doctor
$ brew update
$ brew -v
```

## 3.MySQL

まず、MySQLをインストールします。

### 3.1.インストール
```bash:Terminal
$ brew install mysql
```

### 3.2.初期設定

インストール後のメッセージに従って以下のコマンドを実行し、初期化します。

```bash:Terminal
$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
```

### 3.3.起動

`mysql.server`コマンドで起動します。root権限は不要です。
<font color="E0E0E0">Linuxの`service`コマンドとの違いに慣れません。</font>

```bash:Terminal
$ mysql.server start
```

### 3.4.セキュリティ設定

セキュリティのためにrootパスワードを設定します。以下のようにmysqladminコマンドを利用して設定するか、普通に接続してコマンドを実行します。

```bash:Terminal
$ mysqladmin -u root password 'new-password'
$ mysqladmin -u root -h host.local password 'new-password'
```

## 4.Apache

Homebrewは、基本的にシステムにデフォルトでインストールされているものはFormulaが提供されていません。今回で言えばApacheとPHPが該当します。
そこで、Homebrewの`tap`コマンドを利用して外部リポジトリを追加し、インストールします。

### 4.1.リポジトリの追加

システムデフォルトでインストールされているアプリケーションのFormulaを提供している https://github.com/Homebrew/homebrew-dupes を追加します。

```bash:Terminal
$ brew tap Homebrew/dupes
```

### 4.2.インストール

MySQL同様、`brew`コマンドでインストールします。

```bash:Terminal
$ brew install httpd
```

### 4.3.初期設定

インストールは終わりましたが、以下の理由で少し修正が必要です。

1. PATHの設定でデフォルトのapachectl(httpd)が優先されるので、Homebrewでインストールしたapacectl(httpd)を使えない。
2. /usr/local/homebrew/Cellar/httpd/2.2.22/var/apache2/logが存在せず、起動時にエラーが発生する。
3. /usr/local/homebrew/Cellar/httpd/2.2.22/var/apache2/runが存在せず、起動時にエラーが発生する。

#### 4.3.1.PATHの編集

Homebrewでインストールしたパッケージを優先的に使用するためにはいくつか方法がありますが、システム全体に影響を及ぼさないため、~/.bash_profileに以下のように記述することでPATHの設定を上書きします。

```bash:~/.bash_profile
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
```

### 4.3.2.必要なディレクトリの作成

次に、起動時のエラーを回避するため、ログ用のディレクトリを作成します。

```bash:Terminal
$ mkdir /usr/local/homebrew/Cellar/httpd/2.2.22/var/apache2/log
$ mkdir /usr/local/homebrew/Cellar/httpd/2.2.22/var/apache2/run
```

### 4.4.起動

起動、停止は`apachectl`コマンドで制御しますが、MySQLとは異なり、root権限が必要です。
<font color="E0E0E0">エラーメッセージがやや不親切なので`httpd`コマンドを直接使ったほうが楽だったり…。</font>

```bash:Terminal
$ sudo apachectl start
```

### 4.5.動作確認
[http://localhost/](http://localhost/)にアクセスしてページを閲覧できるかどうか確認します。
"It works!"と表示されていれば成功です。

## 5.PHP

Apache同様、リポジトリを追加してインストールします。

### 5.1.リポジトリの追加

```bash:Terminal
$ brew tap josegonzalez/homebrew-php
```

### 5.2.インストール

MySQLと連携させるため、インストール時のオプションに`--with-mysql`をつけます。

```bash:Terminal
$ brew install php54 --with-mysql
```

### 5.3.Apacheの設定

ApacheでPHPを有効にするため、3つの設定+αを行います。

#### 5.3.1.モジュールの有効化
 `LoadModule`群の最後に以下の行を追加します。

```conf:httpd.conf
LoadModule php5_module /usr/local/Cellar/php54/5.4.16/libexec/apache2/libphp5.so
```

#### 5.3.2.PHPの有効化

デフォルトの状態ではPHPが実行されないので、以下の行を追加します。

```conf:httpd.conf
<IfModule mime_module>
…
AddType application/x-httpd-php .php
…
</IfModule>
```

#### 5.3.3.index.phpの有効化

デフォルトでindex.phpを表示するよう、以下のように修正します。

```conf:httpd.conf
<IfModule dir_module>
…
DirectoryIndex index.html index.php
…
</IfModule>
```

#### 5.3.4.URL書き換えの有効化(任意)

デフォルトの状態では.htaccessによるURL書き換えができないので、以下のように設定しておきます。

```conf:httpd.conf
<Directory "/usr/local/Cellar/httpd/2.2.22/share/apache2/htdocs">
…
AllowOverride All
…
</Directory>
~~~


### 5.4.パーミッションの設定

PEARを使うために以下のようにパーミッションを設定します。

```bash:Terminal
$ chmod -R ug+w /usr/local/Cellar/php54/5.4.16/lib/php
$ pear config-set php_ini /usr/local/etc/php/5.4.16/php.ini
```

### 5.5.動作確認
`/usr/local/Cellar/httpd/2.2.22/share/apache2/htdocs/index.php`を以下の内容で作成し、ブラウザから http://localhost/index.php を確認します。
PHPに関する情報が沢山表示されれば成功です。

```php:index.php
<?php

phpinfo();
```

## 6.PHPMyAdmin

### 6.1.インストール
他と同様に`brew`コマンドでインストールします。

```bash:Terminal
$ brew install phpmyadmin
```

### 6.2.初期設定
インストール後のコマンドに従い、`htpd.conf`に以下の行を追加します。

```conf:httpd.conf
Alias /phpmyadmin /usr/local/share/phpmyadmin
<Directory /usr/local/share/phpmyadmin/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
```

### 6.3.動作確認

ブラウザで[http://localhost/phpmyadmin](http://localhost/phpmyadmin/)にアクセスしてトップページが見えれば成功です。

## 参考
* [[Mac] Mountain Lionへパッケージ管理「Homebrew」をインストールする手順のメモ | Tools 4 Hack](http://tools4hack.santalab.me/howto-mountainlion-install-homebrew.html)
* [HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳](http://tukaikta.blog135.fc2.com/blog-entry-197.html)
* [MacでApache、MySQL、PHPの環境を作る - ほげほげ（仮）](http://starzero.hatenablog.com/entry/20120916/1347786793)
* [homebrewでインストールしたものを優先的に使う | bulblub](http://bulblub.com/2010/11/18/homebrew%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%82%92%E5%84%AA%E5%85%88%E7%9A%84%E3%81%AB%E4%BD%BF%E3%81%86/)
* [httpd log and run directories not being created · Issue #119 · Homebrew/homebrew-dupes](https://github.com/Homebrew/homebrew-dupes/issues/119)
* [HomebrewでPHP環境 現時点でのまとめ - なんたらノート第三期ベータ](http://tanakahisateru.hatenablog.jp/entry/20121001/1349093118)