snow leopard環境セットアップ

ということで早速、macportsで開発環境セットアップ。
php5、apache2、mysql5、symfonyセットアップまで。
もうこれでmacportsでの構築は3度目になりますが、いまだに時間かかってしまう。。

MacPortsでインストール

MacPortsの導入まではIT戦記を参照。
http://d.hatena.ne.jp/amachang/20090926/1253982602


パッケージは以下をインストール。
前回のようにシェルスクリプトで一気にインストール。

emacs install_ports.sh

list="
apache2
elk
lv
nkf
tree
rsync
wget
mysql5 +server
postgresql83 +server
curl +universal
php5 +apache2 +fastcgi +macosx +mysql5 +pcntl +pear +readline +sqlite +postgresql83
php5-xdebug
subversion +unicode_path
"
for i in $list
do
port -v install $i
done


※2009/11/1追記

従来のようにmysql5 +server では動作しません。
上記に加え以下のパッケージをインストールする必要があります
参考→http://www.serendip.ws/archives/3234


実行


sudo sh ./install_ports.sh

apacheの設定

デーモンの起動


sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

httpd.confの設定


sudo emacs /opt/local/apache2/conf/httpd.conf


DocumentRootを変更(変更は任意。ディレクトリ名をwwwにするのも任意)

DocumentRoot "/Users/tamac/www"



デフォルトではアクセス制限がかかっているので(apache2.2系かららしい)、
Deny from all をははずしてやる

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
#    Deny from all                
</Directory>

上記を設定しないとpermission deny が出てハマるときも。。↓

※2009/12/11追記
DocumentRootを変更した際はここも変更しないと。

<Directory "/opt/local/apache2/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:

これを

<Directory "/Users/TamaC/www">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:



conf.d をIncludeする設定にはなっていないので、適当な場所に追加してやる
(htttpd.confに直接設定を記入していくのなら必要なし)

Include conf.d/*.conf



その読み込みディレクトリをつくり、php読み込みを設定


sudo mkdir -p /opt/local/apache/conf.d
sudo emacs /opt/local/apache/conf.d/php.conf
内容:

LoadModule php5_module modules/libphp5.so
Include conf/extra/mod_php.conf

MacPortsやパッケージのバージョンによっても違うのかな。
自分はmacportsphp +apache2を導入すると /opt/local/apache/conf/extra/mod_php.conf
がデフォルトで存在したが、前に使っていたPCでは/opt/local/apache/conf/extras-conf/mod_php.confとなっていた。


apacheシンタックスチェック、再起動


/opt/local/apache2/bin/apachectl configtest
sudo /opt/local/apache2/bin/apachectl graceful


↓ようやくローカルで確認することができます

cd ~/www
emacs index.php
内容:

<?php phpinfo() ?>



php.iniの設定

タイムゾーン設定

date.timezone = Asia/Tokyo

エラーレベル設定

error_reporting = E_ALL



ここまでで、Noticeなどのエラーも出力されるように。(xdebug導入した)



php × apache の設定完了。

mysqlの設定(パスワードの設定はなし)



初期化


sudo -u mysql mysql_install_db5

mysql起動


sudo /opt/local/share/mysql5/mysql/mysql.server start

mysqlを動かそうとして以下のようなエラーが出たら、ソケットがない、所有者が違う、mysqlの再起動をしていない、の原因が多い。


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (38)


↑の解消のため、socketをつくり、所有者をmysqlに設定する

sudo mkdir -p /opt/local/var/run/mysql5
sudo touch /opt/loacl/var/run/mysql5/mysqld.sock
sudo chown mysql:mysql /opt/local/var/run/mysql5/mysqld.sock


再起動

sudo /opt/local/share/mysql5/mysql/mysql.server restart


phpのほうでもsocketパスの設定をしておく

sudo emacs /opt/local/etc/php5/php.ini

; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
; http://php.net/mysql.default-port
mysql.default_port = /opt/local/var/run/mysql5/mysqld.sock

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock



ここまでで、mysqlを実際に操作することができるようになる。

mysql5

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.40 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>



しかしこのままだとエンコードがlatin1になってるので、あとあと絶対困るのでmy.cnfで設定しておく。(最初はmy.cnfがないのでデフォルトのサンプルをコピーして編集)

sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
sudo emacs /opt/local/etc/mysql5/my.cnf
[client]、[mysqld]の下にdefault-character-set = utf8を記入

default-character-set = utf8


あとは再起動。

sudo /opt/local/share/mysql5/mysql/mysql.server restart


これでmysql完了。

symfonyを入れる

最後にsymfony入れる。
pear アップグレード


sudo pear upgrade PEAR
symfonyチャンネル追加

sudo pear channel-discover pear.symfony-project.com
symfonyインストール

sudo pear install symfony/symfony

downloading symfony-1.2.9.tgz ...
Starting to download symfony-1.2.9.tgz (2,700,635 bytes)
..................................................................................................................................done: 2,700,635 bytes
install ok: channel://pear.symfony-project.com/symfony-1.2.9

セットアップ完了!