[SP-pm] mod_perl, serviços, etc
Eden Cardim
edencardim at gmail.com
Sun Jan 9 14:56:58 PST 2011
>>>>> "Prof" == Prof Benedito A Cruz <bene em cria.org.br> writes:
Prof> Não entendi porque seria uma gambiarra...
Dá uma olhada no source do ModPerl::RegistryCooker, que é quem
efetivamente converte scripts cgi em handlers de mod_perl, em
particular, a subrotina convert_script_to_compiled_handler, que contém
esse trecho de código:
my $eval = join '',
'package ',
$self->{PACKAGE}, ";",
"sub handler {",
"local \$0 = '$script_name';",
$nph,
$shebang,
$line,
${ $self->{CODE} },
"\n}"; # last line comment without newline?
Se você quiser mesmo usar mod_perl, a forma correta é escrever um
handler tipo esse:
http://search.cpan.org/~gozer/mod_perl-2.0.4/docs/user/intro/start_fast.pod#Handler_Modules
Uma alternativa mais "moderna" é escrever tua aplicação usando um
middleware como o Plack, que é uma implementação de PSGI. Aí você vai
conseguir implantar tua aplicação nos ambientes CGI, FastCGI, mod_perl
(1 e 2), ou até transformar sua aplicação num servidor HTTP standalone o
que significa que você nem vai precisar de apache (ou qualquer outro web
server), isso tudo sem mecher em nada do código da aplicação.
É bem simples, você escreve algo assim:
http://search.cpan.org/perldoc?Plack#.psgi_files
E pra implantar no mod_perl2, você usa isso:
http://search.cpan.org/perldoc?Plack::Handler::Apache2
O recomendável mesmo, é além disso, você usar um framework como
Catalyst, Web::Simple, Mojo ou Dancer. Todos eles tem suporte a PSGI e
por isso, rodam em qualquer lugar onde o Plack conseguir rodar.
--
Eden Cardim
Software Engineer
+55 73 9986-3963
edencardim.com
More information about the SaoPaulo-pm
mailing list