- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-Mojolicious/ApacheにCGIでデプロイ へ行く。
- 1 (2010-02-05 (金) 16:57:02)
- 2 (2010-02-05 (金) 19:24:32)
- 3 (2010-02-06 (土) 16:00:39)
Apache-CGIでデプロイ
概要
Mojoliciousで作成したアプリケーションをApacheにCGIとして動くようにデプロイする。Apacheのドキュメントルートにディレクトリを作り、そのディレクトリ以下で動作するようにする。
想定するURL・ファイルパス
- アプリケーションルートのURL
- http://example.com/my_app/
- アプリケーションルートのファイルパス
- /var/www/my_app/
- Apacheのドキュメントルート
- /var/www/htdocs/
アプリケーションのpublicをApacheのドキュメントルート以下にシムリンクを張る
ln -s /var/www/my_app/public /var/www/htdocs/my_app
フロントコントローラ
/var/www/my_app/public/index.cgiに設置する。
#!/usr/bin/perl use strict; use warnings; use lib qw( /var/www/my_app/lib ); use Mojo::Server::CGI; $ENV{MOJO_APP} = 'MyApp'; $ENV{SCRIPT_NAME} = ''; Mojo::Server::CGI->new->run;
- Mojoのルーティングを調整するために、$ENV{SCRIPT_NAME}(=/my_app/index.cgi)を空にしている。
- もっといい方法があるのかも?
mod_rewriteでフロントコントローラにリクエストを集める
RewriteEngine On RewriteBase /my_app RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.cgi [QSA,L]
アプリケーションクラスでのルーティング設定
$r->route('/my_app/login/index')->to(controller => 'login', action => 'index')->name('login/index'); $r->route('/my_app/:controller/:action/:id')->to(controller => 'example', action => 'welcome', id => 1); $r->route('(*path)')->name('static'); #(注)
注
- 画像などpublic/以下に置くファイルのため。
- http://d.hatena.ne.jp/perlcodesample/20091102/1246274997
テンプレートでURLを指定
<img src="<%= $self->url_for('static', path => '/my_app/img/foo.jpg');%>"> <a href="<%= $self->url_for('login/index');%>">/my_app/login/index</a><br>