ウェブアプリケーションを作る時、Apacheの設定が煩わしくなる事があります。 以前バージョン0.6.xのSymfonyでは
symfony serverというのが用意されていてsymfonyコマンドからテスト用のウェブサーバを手軽に立てる事ができましたが何らかの理由により廃止されてしまったようです。そこでコマンド一発でlocalhostの任意のポートに手軽に立てられるサーバ環境を作ってみました。
lighttpd + fastcgi版PHP5
symfony.jpのwikiを参考にしてください。
サーバの設定ファイル
lighttpd開発元のwikiにあったサンプルをベースに以下のように作りました。config/lighttpd.confとして置いてあります。
server.modules = ( "mod_alias", "mod_fastcgi", "mod_accesslog" ) server.document-root = "~/myproject/web" alias.url = ( "/sf/" => "/usr/local/lib/php/data/symfony/web/sf/" ) accesslog.filename = "~/myproject/log/lighttpd-access.log" server.errorlog = "~/myproject/log/lighttpd-error.log" server.pid-file = "~/myproject/log/lighttpd.pid" index-file.names = ("index.php") server.event-handler = "freebsd-kqueue" # needed on OS X static-file.exclude-extensions = ( ".php" ) server.port = 10101 server.bind = "localhost" fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "~/myproject/log/php-fastcgi.socket", "bin-path" => "/path/to/php-fcgi" ) ) ) # mimetype mapping mimetype.assign = ( ".gif" => "image/gif", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".png" => "image/png", ".css" => "text/css", ".html" => "text/html", ".htm" => "text/html", ".js" => "text/javascript", )
lighttpdの実行
lighttpd -c config/ligihttpd.conf open http://localhost:10101/
きちんと動きます。
現状の問題点
Apacheではないんで、web/.htaccessで設定している内容なんて当然無効です、mod_rewriteが使えません。つまり、no_script_name: offでないと動きませんがテストでしか使わないのでとりあえず問題にしない事にします。
lighttpdプラグイン
lighttpdの実行を簡単にするsymfonyコマンドのタスクをsfLighttpdPluginプラグイン作成してみました。 sfConfigurePluginと一緒に使う前提で作られています。
sfLighttpdPluginには、init-lighttpdというタスクとlighttpdというタスクが追加されます。
symfony init-lighttpd はconfig/lighttpd.conf.inを作成します。symfony configureはこのファイルから設定されたconfig/lighttpd.confを生成します。設定可能な項目は以下の通りです。
$./configiure --help ./configure --with-lighttpd=CMD lighttpd command [lighttpd] --with-server-port=PORT server port to listen [10088] --with-server-bind=SERVER server name or ip to listen [localhost] --with-openurl=CMD open url command [open]
symfony lighttpdタスクは以下のサブコマンドを受け付けます。
サーバの開始
symfony lighttpd start
サーバの停止
symfony lighttpd stop
URLを開く
symfony lighttpd open
実行コマンドは–with-openurlで設定します。デフォルトはopenですMacOSX用です。
プロジェクトを手軽に作るシェルスクリプト
私はsfLighttpdPluginを使って以下のようなスクリプトを作成して手軽にプロジェクトを作れるようにしています。
#!/bin/bash project=$1 mkdir ${project} cd ${project} symfony new ${project} svn co http://svn.tracfort.jp/svn/dino-symfony/plugins/sfConfigurePlugin plugins/sfConfigurePlugin svn co http://svn.tracfort.jp/svn/dino-symfony/plugins/sfLighttpdPlugin plugins/sfLighttpdPlugin symfony init-bootstrap symfony init-configure symfony init-lighttpd # fix-up sed -e 's/^#//' < config/databases.yml.in >config/databases.yml.in.tmp mv config/databases.yml.in.tmp config/databases.yml.in ./bootstrap ./configure
実は今回初めてlighttpdを使ったのですが軽くて良いサーバですね。もうちょっと軽そうなshttpdとかも検討したのですがコンパイルが通らず今回は見送りました。またfastcgi版PHPを作るのが面倒なので遅くてもいいので普通のcgi版を使えないか今後研究課題にしたいとおもいます。

