読者です 読者をやめる 読者になる 読者になる

letsspeak's diary

世界を大いに盛り上げるためのletsspeakの日記。

初心者がMac OS X 10.7 Lion でFuelPHPのサンプルを動かすためにやったこと

初心者がMac OS X 10.7 Lion 上で20時間かけてMAMP環境を構築しFuelPHPのサンプルを動かす為にやったことをまとめます。
序盤とかはわりと忘れかけていますが、自分がはまった箇所などピックアップして書いています。 

外部公開を前提にしていない実験環境としての構築となっており、私自身の知識も浅いため設定内にセキュリティ面の問題が発生している可能性が考えられます。各自、ルーターを使用するなど安全な環境でお試しください。

 

<動作環境>

Mac OS X  10.7 Lion
Apache/2.2.21 (Unix) DAV/2
MySQL / Ver 14.14 Distrib 5.5.19, for osx10.7 (i386) using readline 5.1 
PHP 5.3.8 with Suhosin-Patch
・FuelPHP Ver 1.1

 

Mac OS X 10.7 Lion>
Snow LeopardからiTunes Card 2600円でアップデートできます。 

 

Apache
Mac OS X 10.7 Lion に標準で入っています。
・起動と終了は「システム環境設定」>「共有」>「Web共有」のチェックを入れる/外すで行います。
・上記以外での起動、終了はあまりよろしくないようです。
・起動後ウェブブラウザでhttp://localhost/~[username]/にアクセスすると開かれます。
・開かれるディレクトリはフルパスで/Users/[username]/Sites/です。ユーザーからは cd /Sites です。
httpd.confは/etc/apache2/httpd.conf にありますが、基本設定だけのものです。
・/etc/apache2/users/[username].conf に/Sitesなどの設定が置かれていますので、
 LoadModuleや言語環境などの設定はhttpd.conf、<Directory>の設定は[username].confで行います。
・ちなみにLoadModuleが読み込もうとするモジュールは/usr/libexec/apache2/にあります。
・またエラーログ、アクセスログは/private/var/log/apache2/にあります。

上記は標準設定時のものなのでMac OS X のバージョンやApache2のバージョン変更により変わる場合があります。パスの多くはhttpd.conf内に書かれているのでそちらを参照するのが一番かと思います。

 

PHP
・記憶が曖昧ですが、これもMac OS X 10.7 Lion に標準で入っていたような気がします。 
・ ターミナルで php -version で返答があれば入っています。
httpd.confでmod_phpの行だけコメントアウトされているのを有効にします。
・普通のサーバーと同じようにhttpd.confを弄りますが、ExecCGIは[username].confに記述します。
・/Users/[username]/Sites/ 直下で <?php phpinfo(); ?>が動けば問題なしです。
php.ini は /etc/php.ini にあります。

 

MySQL

・Homebrewからインストールしましたが結構詰まりました。
 より簡単な方法があれば初心者はそちらを選ぶべきだと思います。
・/usr/local/Cellar/mysql/5.5.19/にインストールされましたが、
 他の文献では/usr/local/mysqlが一般的のようです。
(勝手に移動させるのが怖いのでとりあえずln -sで対応しましたが謎です。)
mysql.server start で起動、mysql.server stop で停止します。
・socketエラーを内包していても起動するため設定後はmysql.server restartをします。 
・設定ファイルは/etc/my.cnf にあります。
・ちなみに設定ファイルをユーザーで書き込むために
 sudo chmod 666 my.cnf したところ起動のたびに警告されるようになりました。
 sudo chmod 640 my.cnf でなおりましたが正しいアクセス権が謎です。
 この事件以降 root で操作するようになりましたw

 

<FuelPHP>

・先駆者様のありがたい解説に則りhwとM&H、
 stationwagonのサンプルコードが動作するところまで確認しました。

 FuelPHP のサンプルアプリ「Stationwagon」をみてみる
 http://d.hatena.ne.jp/Kenji_s/20111122/1321965606 

 FuelPHP のブログチュートリアル
 http://d.hatena.ne.jp/Kenji_s/20111109/1320827056

 ・MySQLがなくてもある程度動くようですが、
 私はindex.phpから別のページへ移動する際にmod_rewriteの設定で詰まりました。
 FuelPHPではmod_rewriteにより

 http://localhost/~username/xxxx/public/aaa/bbb/

 を

 http://localhost/~username/xxxx/public/index.php/aaa/bbb/
 
 というindex.phpへのリクエストに変換するようです。

mod_rewriteの設定は.conf もしくは .htaccess で行うようです。
 当然.confの方が読み込み回数が少なく、.htaccessは毎時読み込みのため負荷が増大するのですが、
 RewriteBaseの設定が謎なため /Users/[username]/Sites/xxx/public/.htaccess で対応しました。

・設定例は下記サイトに記載されています。

 FUELPHP、ブログチュートリアル
 http://kore1server.com/create-your-site/44-note/164-fuelphp-blog-tutorial.html

http://localhost/~username/xxxx/public/aaa/bbb/ でForbiddenになる場合は、
 Apacheの設定 /etc/apache2/users/[username].conf を確認します。
 標準でAllowOverrideの設定がNoneになっているますので、これをAllに変更します。

・それでも動かない場合は
 /Users/[username]/Sites/xxx/public/.htaccess 内のRewriteBase を確認します。
 私の場合は、
 RewriteBase /public を RewriteBase /~[username]/blog/public に変更したところうまくいきました。

 

と、これを書いていて気づいたのですが、またstationwagonなどMySQLとの連携箇所を確認していませんでした。.confによるmod_rewriteの設定等も含め、何か確認できた際には改めて追記もしくは新規記事で書いていきたいと思います。