ApacheにCGIでデプロイ概要Mojoliciousで作成したアプリケーションをApacheにCGIとして動くようにデプロイする。Apacheのドキュメントルートにディレクトリを作り、そのディレクトリ以下で動作するようにする。 想定するURL・ファイルパス
アプリケーションの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;
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'); #(注) 注
テンプレートで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> |
|