当前位置:  开发笔记 > 编程语言 > 正文

Apache mod_perl中的Mojolicious

如何解决《Apachemod_perl中的Mojolicious》经验,为你挑选了1个好方法。

我有一个〜15岁的Perl-Application.该应用程序在Apache上运行,示例代码如下所示:

use Apache2::RequestUtil ();
use Apache2::RequestRec ();
use Apache2::Const -compile => qw(OK);

sub handler {
  my $r = shift;
  Apache2::RequestUtil->request($r)                                     
  $r->subprocess_env;                      

  $r = Apache2::RequestUtil->request; 

  $r->content_type("text/html");
  $r->print("Hello World");
  };

 return Apache2::Const::OK;              
}
1;

这有效,但现在我想使用Mojolicious来实现这个应用程序的新功能.但是如何将Mojolicious整合到这个应用程序中呢?当我做以下

    use Apache2::RequestUtil ();
use Apache2::RequestRec ();
use Apache2::Const -compile => qw(OK);

sub handler {
  my $r = shift;
  Apache2::RequestUtil->request($r                                     
  $r->subprocess_env;                      

  $r = Apache2::RequestUtil->request; 

  get '/:foo' => sub {
    my $self = shift;
    my $foo  = $self->param('foo');
    $self->render(text => "Hello from $foo.");
  };

 return Apache2::Const::OK;              
}
app->start;
1;

我得到一个空白页面.是否可以将Mojo集成到我的应用程序中?



1> Helmut Wollm..:

如果您想要Mojolicious的好处,则不应直接使用Apache请求.

首先,您需要特殊的虚拟主机配置.请参阅https://github.com/kraih/mojo/wiki/Apache-deployment并向下滚动到Apache/mod_perl(PSGI/Plack)一章.我撰写了这一章,因为我在mod_perl下运行了十几个Mojo应用程序,并且找到一种有效的方法需要一些试验和错误.

这里以Apache配置文件为例:


  ServerName myapp.local
  DocumentRoot /home/sri/myapp

  PerlOptions +Parent

  
    $ENV{PLACK_ENV} = 'production';
    $ENV{MOJO_HOME} = '/home/sri/myapp';
    $ENV{MOJO_MODE} = 'deployment';
  

  
    SetHandler perl-script
    PerlResponseHandler Plack::Handler::Apache2
    PerlSetVar psgi_app /home/sri/myapp/script/myapp
  

其次你的模块MyApp.pm应如下所示:

package MyApp;
use Mojo::Base 'Mojolicious';

sub startup {
  my $app = shift;

  my $routes = $app->routes;

  $routes->get('/:foo' => sub {
    my $self = shift;
    my $foo  = $self->param('foo');
    $self->render(text => "Hello from $foo.");
  });

}

1;

这就是你所需要的.所述Plack::Handler::Apache2构建之间的层mod_perlMojolicious.当然你需要一个脚本myapp.此脚本还允许您从桌面控制台运行Web应用程序,例如在开发和测试期间.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有