[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