NAME
HTTP::Engine::Interface::ModPerl - mod_perl Adaptor for HTTP::Engine
SYNOPSIS
# App.pm
package
App;
use
Data::Dumper;
use
HTTP::Engine;
sub
setup_engine {
my
(
$self
,
$conf
) =
@_
;
$conf
->{request_handler} =
sub
{
$self
->handle_request(
@_
) };
HTTP::Engine->new(
interface
=>
$conf
,
);
}
sub
handle_request {
my
(
$self
,
$req
) =
@_
;
HTTP::Engine::Response->new(
status
=> 200,
body
=> Dumper(
$req
),
);
}
# app.pl
use
strict;
use
warnings;
use
App;
App->new->setup_engine({
module
=>
'ServerSimple'
,
args
=> {
port
=> 9999 },
})->run;
# App/ModPerl.pm
package
App::ModPerl;
use
App;
sub
create_engine {
my
(
$class
,
$r
,
$context_key
) =
@_
;
App->new->setup_engine({
module
=>
'ModPerl'
,
});
}
# in httpd.conf
PerlSwitches -Mlib=/foo/bar/app/lib
<VirtualHost 127.0.0.1:8080>
<Location />
SetHandler modperl
PerlOptions +SetupEnv
PerlResponseHandler App::ModPerl
</Location>
</VirtualHost>
When you move the same application by two or more server name. Because the reason is because it makes instance every combination of SERVER_NAME, SERVER_PORT and DOCUMENT_ROOT.
# in httpd.conf
PerlSwitches -Mlib=/foo/bar/app/lib
<VirtualHost 127.0.0.1:8080>
ServerName www.example.com
ServerAlias host1.example.com
ServerAlias host2.example.com
ServerAlias host3.example.com
<Location />
SetHandler modperl
PerlOptions +SetupEnv
PerlSetEnv HTTP_ENGINE_CONTEXT_KEY YOUR_CHOICE_APPLICATION_UNIQUE_KEY
PerlResponseHandler App::ModPerl
</Location>
</VirtualHost>
CONFIG
required configuration in httpd.conf
SetHandler modperl
PerlOptions +SetupEnv
or
SetHandler perl-script
AUTHORS
Daisuke Maki
Tokuhiro Matsuno
Kazuhiro Osawa