lighttpdã§ãã¡ã¤ã«ãåå¨ããªãå ´åã«FastCGI-Catalystã¸é£ã°ãè¨å®ã¨ãã©ã°ã¤ã³
ããããªãã¨ããªãã¦ãããããçãªççãªåéãããã¦ãããã¿ã¾ããããã£ããæãã¦ãã ããã
Apacheã®
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ http://127.0.0.1:3000/$1 [L,QSA]
ã¿ãããªã¤ã¡ã¼ã¸ã§ã
- ãã¡ã¤ã«ãåå¨ããâãã®ãã¡ã¤ã«ãè¿ã
- ãã¡ã¤ã«ãåå¨ããªãâCatalystã¸é£ã°ã
ã¨ããã®ããããã£ãã
ç°å¢ã¯
http://unknownplace.org/slides/shibuyapm-7/start.html#slide30 ãåèã«
setenv.add-environment = ("SCRIPT_NAME" => "/") server.error-handler-404 = "/myapp" fastcgi.server = ("/myapp" => ( ("host" => "127.0.0.1", "port" => 3000, "check-local" => "disable" ) ))
ã¨ãã¦ã¿ããã$c->req->pathã$c->req->paramã空ã«ãªã£ã¦ãã¾ã£ã¦ http://localhost/foo/bar ã foo/barã¢ã¯ã·ã§ã³ã«é£ãã§ãããªããsetenv.add-environmentãã³ã¡ã³ãã¢ã¦ããã¦ãåæ§ã
ããã¾ã§ã¯ælighttpdã使ãå§ããé ã«ãã£ããã¨ããã£ã¦ãããã§è«¦ãã¦ãã
ãã ã ã ã ,. â''ä¸ã¾Â´å½¡ï½¼,=ï½ä¸¶ã ãããããï¼'".:=â¡ã_â§_尨彡ä¸:ã½ã ãããã/ï¼.:;:彡:f'"´â------ ï½`'ï½=:l ãã ã/ã彡_彡â²,.=、 ̄ ̄ ,.=、ã|ã:ã ããã'ï½=、、:ï½Â´===trï¼=、.___,. ==、._ã{ ããã{´yï¾l'â²ãã |ãã /âlâ²ã |ï½ï¼¹} ãããï¾ï½¤ã) ã ã ã `''''ï¾_ã _;`ï½°â'ï¾:::::ï½{ãã ãããããã .ãã ãã½.__ããããã,ィnmmm、ãã .:::|!ãããããã§è©¦åçµäºã§ããã»ã»ã»ã» ãã,.ã£'´ï¾.´ããããã´ï½"ï½"ï½ï¾â³ã.::::;' ã¤Â´::ï¾|::::l ï¼¼ ãã ã ããã"'ããã:::/ ::::::::::::|:::::l ã ã½ããã ããã..::ã .:::/.、 :::::: ::: |:::::ã½ ãã ã½ã.......::::ï¼..:::ï¼!\\ ::::::::::: |::::::::ã½ããã ï½`''â--ァt''â² |!:::ã½:::ï¼¼ :::::::::::::|::::::::::::ã½ã ã ã ã /i|iï¾ï½¤ã |l:::::::ã½:::::ï¼¼ :::::::::::::|::::::::::::::/:ã½ãã ãâ§|i|i|i|ã. ||::::::::::ã½:::::::ï¼¼
ããã天ã®å£°ã»ã»ã»
å çã«å±ã¾ããã¦èª¿ã¹ã¦ã¿ããPATH_INFOã¨QUERY_STRINGãè¨å®ããã¦ããªã模æ§ãä¸å¿Catalyst/Engine/FastCGI.pmã«ã¯
# If we're running under Lighttpd, swap PATH_INFO and SCRIPT_NAME # http://lists.rawmode.org/pipermail/catalyst/2006-June/008361.html # Thanks to Mark Blythe for this fix if ( $env{SERVER_SOFTWARE} && $env{SERVER_SOFTWARE} =~ /lighttpd/ ) { $env{PATH_INFO} ||= delete $env{SCRIPT_NAME}; }
ã¨æ¸ãã¦ãããã ãã©ãããããSCRIPT_NAMEãåºå®ãªã®ã§ï¼ãªã¯ã¨ã¹ããåæ ã§ãã¦ãªãã®ã§ï¼æå³ç¡ããããªãã ãã©ã
REQUEST_URIã¯ã¡ããã¨å ¥ã£ã¦ãã£ã½ãã£ãã®ã§ãèªåã§è§£æãããã©ã°ã¤ã³
# # $Id$ # package CatalystX::Engine::FastCGI::Lighttpd; use strict; use warnings; use version; our $VERSION = qv('0.0.1'); use NEXT; sub handle_request { my ( $c, %args ) = @_; if ( $args{env}{SERVER_SOFTWARE} && $args{env}{SERVER_SOFTWARE} =~ /lighttpd/msx ) { ( $args{env}{PATH_INFO}, $args{env}{QUERY_STRING} ) = ( split /\?/msx, $args{env}{REQUEST_URI}, 2 ); } return $c->NEXT::handle_request(%args); } 1;
ãæ¸ãã¦ã
# lib/MyApp.pm use Catalyst qw(+CatalystX::Engine::FastCGI::Lighttpd); # __PACKAGE__->setup(qw(+CatalystX::Engine::FastCGI::Lighttpd));
èªã¿è¾¼ã¾ããã¨ãããæãã«åãã¦ããã¾ããã
ãã£ãæ¸ããã°ãããªã®ã§æªããã¨ããã¯å¤ã ããããã ãã©ã
ã¨ããããæ°ã«ãªãç¹ã¨è¨ãã° REDIRECT_URL=/myappã«ãªã£ã¦ãã¦ããããã©ãããã°ããã®ãåãããªãã®ã§æ¾ç½®ä¸ãCatalyst::Engine::CGIãè¦ã¦ãã£ã½ããã ãã©ã