sifue's blog

プログラマな二児の父の日常

MacPortsからHomebrewに完全移行してApache2.2+PHP5.3.10+MySQL5.5を構築

前々からずっと気になっていたHomebrew。
MacPortsからHomebrewへの移行メモ
以上を参考に、MacPortsからMAMP環境をHomebrewに完全移行しました。


Homebrewって何かと調べてみると、その特徴が本家( http://mxcl.github.com/homebrew/ )にまとめられていました。

  • Homebrewは最も簡単で柔軟性のあるOSX用のUNIXツールをインストーラ
  • パッケージはCellarというプレフィックスで分離され、/usr/binにリンク置いて管理
  • Homebrewには自分自身も同梱されている
  • 数秒でHomebrewのパッケージを作成可能
  • Git管理で簡単にカスタマイズや上流バージョンのマージができる
  • HomebrewのformulaはRubyスクリプトで記述


とのこと。いろいろなブログを見てみるとまず、Macにそもそも入っているバイナリを再コンパイルしないこと、インストールが速いことが特徴としてあげられていました。RubyGitHubの有機的なネットワークとの結合も大きな魅力です。


やはりインストール時間はやっぱり短いほうが良いし。どんどん新しい主流にチャレンジしていくべき、というわけで移行を決意。変化を恐れたらそこでおしまいですよね。


ちなみに前提条件ですが

とこんな感じです。

Homebrewのインストール

まずはmacportsでインストールしていたパッケージのバックアップ。
一応念のためにTimeMachineでバックアップを取っておきました。

sudo port installed > myports.txt


次にMacPortsを除去。ドキドキします。

$ sudo port -f uninstall installed
$ sudo rm -rf /opt/local/


そして、公式にしたがってインストール。

/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

実行後、なんどかEnter入力を求められ、rootのパスワードを聞かれます。
とんでもなく早くインストールが済みます。数秒?
MacPortsのインストールの数十分のインストールが信じられないぐらい。


Homebrew自体のインストールのためにgitが必要なようなので、まずはここから。

brew install git

3分ぐらいでしょうか。しかもsudoが要らなくなっている。
そしてbrew本体のアップデートです。

brew update

30秒もしないで終了。これも速い。今後は、このコマンドでアップデートするらしいです。


というわけで必要な物を少しずつインストールしていきます。
参考にしたのは、
HomebrewをインストールしてMacPortsをアンインストールする
HomebrewでPHP5.3.6をインストールする
HomebrewでPostgresqlをインストール
以上のエントリ。

curlのインストール

$ brew install curl

2分ぐらいで完了。速い!

readlineのインストール

$ brew install readline
$ brew link readline

50秒ぐらい。これも速いです。

phpmysqlとpgsqlとapacheとintlをインストール

Install PHP 5.3 with Homebrew on 10.6 Snow Leopard
HomebrewでApache2.2+MySQL5.1+PHP5.3環境を構築

を見つつ、Formuraを所定の位置に置く。

$ curl -O https://raw.github.com/ampt/homebrew/php/Library/Formula/php.rb
$ mv php.rb `brew --prefix`/Library/Formula


どんなインストールオプションがあるのか確認

$ brew options php
--with-mysql
	Include MySQL support
--with-pgsql
	Include PostgreSQL support
--with-mssql
	Include MSSQL-DB support
--with-fpm
	Enable building of the fpm SAPI executable
--with-apache
	Build shared Apache 2.0 Handler module
--with-intl
	Include intl extension
--with-readline
	Include readline extension


ということで、自分は以下のオプションでインストール。

$ brew install php --with-mysql --with-pgsql --with-apache --with-intl --with-readline

さすがにこれは30分ぐらいかかりましたw


最後に、今インストールされたPHPに向き先を変えるために以下を実施

$ echo 'export PATH='`brew --prefix php`'/bin:$PATH' >> .bashrc
$ php -version
PHP 5.3.10 (cli) (built: Mar 18 2012 15:39:12) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

これでphpのインストールは完了。

MySQL5.5の確認

HomebrewでMySQL 5.5.10をインストール
以上を参考に。
先程、すでにMySQL5.5のインストールは終了しているのでデータベースを作成。

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


以下で起動確認して、データベースの内容を確認します。

$ mysql.server start
$ mysql -u root
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

これでOK。


なお、MySQLの起動、終了、再起動のコマンドは以下のとおり。

$ mysql.server start
$ mysql.server stop
$ mysql.server restart


次はセキュリティ設定。

$ sudo /usr/local/Cellar/mysql/5.5.20/bin/mysql_secure_installation

以上でパスワードなどを設定。


またmy.cnfの設定は/etc/my.cnfを作成、または引き継いで管理

[mysqld]
character-set-server = utf8
init-connect='SET NAMES utf8'

Apache2.2の設定を変更

そのまま入っているApache2.2が使われているようなので、その設定を変更。
開発用なので実行ユーザーを自分にして、バーチャルホストを使ってhtdocsをDropbox内に変更。まずは、バーチャルホストの設定を読み込むようにしたり、PHPを読み込めるように変更。

$ sudo vim /private/etc/apache2/httpd.conf

User soichiro
Group everyone

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf


PHPを起動し、.phpのindexが見れるようにしておく。


...
AddType application/x-httpd-php .php
...


#DirectoryIndex index.html
DirectoryIndex index.html index.php

#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/Cellar/php/5.3.10/libexec/apache2/libphp5.so


バーチャルホストの設定を作成。

$ sudo vim /private/etc/apache2/extra/httpd-vhosts.conf


ServerName dev.localhost
DocumentRoot "/Users/soichiro/Dropbox/Dev/htdocs"
DirectoryIndex index.php index.html


AllowOverride All
Allow from All

ErrorLog "/private/var/log/apache2/dev.localhost-error_log"
CustomLog "/private/var/log/apache2/dev.localhost-access_log" common

を追記。


バーチャルホストにしたホスト名を/etc/hostsに登録。

$ sudo vim /etc/hosts

127.0.0.1 dev.localhost

以上を追記。ブラウザなどは再起動しないと適用されないので注意が必要。


あとは、Apacheの停止、起動、再起動は、

$ sudo apachectl stop
$ sudo apachectl start
$ sudo apachectl restart

でできるようになる。


これで、ブラウザで

http://dev.localhost

にアクセスすれば開発中のものを閲覧することができます。


というわけで、これでHomebrewによるMAMPの構築法でした。
Homebrewのコマンドは、
MacPortsより使いやすい!?パッケージ管理システムHomebrewの使い方
がよくまとまっていました。


日頃から

$ brew update

で本体をアップデートしたり、

$ brew outdated

このコマンドで、新しいバージョンの出たものを確認したりしていきたいですね。


なお、以下、MAMPのメンテナンスコマンドです。メンテナンスにお役立て下さい。

MAMPのメンテナンス用のコマンド

MySQLの起動コマンド
$ mysql.server start
$ mysql.server stop
$ mysql.server restart
Apacheの起動コマンド
$ sudo apachectl stop
$ sudo apachectl start
$ sudo apachectl restart
httpd.confの更新
$ sudo mvim /private/etc/apache2/httpd.conf
php.iniの更新
$ sudo mvim /usr/local/etc/php.ini 
my.cnfの更新
$ sudo mvim /etc/my.cnf


ちなみにMacPortsでのMAMPの構築法は、自分の書いた
MacOSX 10.7.3 LionにPHP開発環境を整える
を参考下さい。

お疲れ様でした。