Homebrew で Apache, PHP, MySQL, Composer をインストールして Yii Framework を動かすところまで

Homebrew での開発環境構築も少し慣れてきたので、Apache, PHP, MySQL, Composer をインストールして、Yii Framework を動かすところまで書きたいと思います。

# 実行環境

* OS X: 10.10
* Homebrew: 0.9.5

# Homebrew のインストール

**ターミナルを起動して、以下のコマンドを実行**

~~~sh
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
~~~

* Mac 本体のパスワードを聞かれるので入力
* 「... コマンドラインデベロッパーツールをインストールしますか？」みたいなことを聞かれるのでインストールをクリック
* インストール後、Enter で Homebrew のインストールが開始されます

コマンドラインデベロッパーツールについてのメッセージが出なかった場合は以下を入力。

~~~sh
xcode-select --install
~~~

**パスを通す ( bash なら .bash_profile に追加)**

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

**Java for OS X 20xx-xxx をダウンロード**
以下からダウンロードして、ダブルクリック。
http://support.apple.com/kb/DL1572

**Git のインストール**
Mac OS X に元々入っているけど、最新のものを。

~~~sh
brew install git
~~~

**Homebrew 本体のチェック**
とりあえずここで Homebrew がおかしくないかチェック。
「Your system is ready to brew.」と出れば OK。警告などが出たらその都度メッセージを読み解きながら対処。

~~~sh
brew doctor
~~~

OS X Yosemite でかつ Xcode がインストール済みの場合
6.1 以上でないと、エラーか警告が出るかもしれません。Xcode 6.1 以上をインストールしましょう。

# MySQL のインストールと設定

~~~sh
brew install mysql
~~~

**MySQL の起動**

~~~sh
mysql.server start
~~~

**root パスワードの変更**

~~~sh
mysqladmin -u root password
# 新しい root パスワードを入力する
~~~

**MySQL のセキュリティ設定**
( ルートパスワード項目以外はすべてそのままで OK )

~~~sh
mysql_secure_installation
~~~

**MySQL の停止**

~~~sh
mysql.server stop
~~~

# Apache のインストールと設定

**リポジトリを追加**

~~~sh
brew tap homebrew/dupes
brew tap homebrew/apache
~~~

**外部 formula がインストール可になっているか確認**

~~~sh
brew search httpd24
~~~

**Apache のインストール**

~~~sh
brew install httpd24
~~~

OS X 標準で入ってる Apache ではなく、
Homebrew でインストールしたものか確認してみたり。
( 多分 Yosemite では /usr/sbin/ に httpd, apachectl などが置いてある )

~~~sh
which apachectl
# /usr/local/bin/apachectl と出れば OK。
# /usr/sbin/apachectl と出る場合はターミナルを再起動して再度確認してみる
apachectl -v
~~~

**http.conf の設定**
( 場所は /usr/local/etc/apache2/2.4/ 、DocumentRoot のパスは任意 )

~~~httpd.conf
# php5 のモジュールの追加
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

# DocumentRoot の変更
DocumentRoot "/Users/jamband/Dropbox/htdocs"

# .htaccessでURLのoverwriteを許可 ( Directory "/Users/jamband/Dropbox/htdocs" 内 )
AllowOverride All

# .php で php を実行できるように MIME タイプの追加 ( IfModule mime_module 内 )
AddType application/x-httpd-php .php

# indexファイルに　index.php　を使えるように修正 ( IfModule dir_module 内 )
DirectoryIndex index.php index.html

# Virtual hosts のコメントアウトを解除
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf

# httpd-vhosts.conf には dummy があるので削除し、適当に任意のホスト追加し
# /etc/hosts も書き換えておく
~~~

**変更後は Apache の再起動**

~~~sh
apachectl stop
apachectl start
~~~



access_log, error_log の場所は /usr/local/var/log/apache2/ です

# PHP のインストールと設定

**リポジトリを追加**
( homebrew/dupes は Apache をインストール時に追加しましたが PHP 単体でインストールする場合は追加します )

~~~sh
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
~~~

**外部 formula がインストール可になっているか確認**

~~~sh
brew search php
~~~

**PHP54 のインストール**
APC も入れたかったので今回は php54 にしました

~~~sh
brew install php54
~~~

インストール後は Caveats を見ながら、またいろいろ修正、設定していきます

**php.ini の設定**
場所は /usr/local/etc/php/5.4/

~~~php.ini
date.timezone = Asia/Tokyo
default_charset = "UTF-8"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
~~~

**APC, Xdebug のインストール**

~~~sh
brew install php54-apc
brew install php54-xdebug
~~~

設定ファイルは /usr/local/etc/php/5.4/conf.d/　に置かれます

# Composer のインストールと設定

**外部 formula がインストール可になっているか確認**

~~~sh
brew search composer
~~~

**Composer のインストール**

~~~sh
brew install composer
~~~

# Yii Framework でユニットテスト及び機能テストを実行

これは読み手が限定されるので、必要な方だけどうぞ。

**プロジェクトのルートディレクトに移動して composer.json を作成**

~~~composer.json
{
    "require": {
        "yiisoft/yii": "~1.1"
    },
    "require-dev": {
        "phpunit/phpunit": "~3.7",
        "phpunit/phpunit-selenium": "*",
        "phpunit/phpunit-story": "*",
        "phpunit/dbunit": "*",
        "phpunit/php-invoker": "*"
    },
    "config": {
        "vendor-dir": "protected/vendor"
    }
}
~~~

**ライブラリのインストール**
protected/vendor/ が作成され、そこにいろいろ置かれる。

~~~sh
composer install
~~~

**ユニットテストの実行**

~~~sh
cd ./protected/tests
../vendor/bin/phpunit unit
~~~

**Selenium RC のインストール**

~~~sh
brew install selenium-server-standalone
~~~

**selenium-server-standalone を起動**

~~~sh
selenium-server -p 4444
~~~

**機能テストを実行**

~~~sh
../vendor/bin/phpunit functional
~~~

# 各パッケージの削除方法

**MySQL**

~~~sh
brew uninstall mysql
rm -rf /usr/local/var/mysql
~~~

**Apache**

~~~sh
brew uninstall httpd24
rm -rf /usr/local/etc/apache2/2.4
rm -rf /usr/local/var/log/apache2
~~~

**PHP**

~~~sh
brew uninstall php54
brew uninstall php54-apc
brew uninstall php54-xdebug
rm -rf /usr/local/etc/php
rm -rf /usr/local/opt/php54/
~~~

**Homebrew本体**

インストールしたパッケージなどがすべて削除されるので注意して行なってください。
また、.bash_profile などに追加したパスは手動で削除します。

[How do I uninstall Homebrew?](https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/FAQ.md#how-do-i-uninstall-homebrew)