Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

apache y mod_perl: no lo consigo :(

BocaDePez
BocaDePez

Antes de nada, felices fiestas a todos/as y enhorabuena por este foro tan útil y recomendable :) (por cierto, soy el del servidor de correo. Al final opté por postfix y qpopper, funciona bastante fino, gracias :) eso si, aun he de ajustar un poco mas la configuracion)

En fin, mi problema ahora es con mi servidor apache. Veréis, lo tengo puesto con php+mod_ssl funcionando y sin problemas (en una slackware). Pero ahora quería añadirle mod_perl (ya que quiero utilizar una herramienta -Gallery- para montarme en mi servidor un sistema de administración de albumes de fotos :)

El problema es que no he conseguido por ninguna de las formas implementar mod_perl en mi apache. He intentado hasta rehaciendolo todo (tenia apache+php+ssl instalados mediante paquetes precompilados para slackware. Los quite y empece por montar apache y mod_perl a partir del código) pero nada... :( he ido siguiendo un texto que he encontrado por medio de mi mejor amigo (google :)

Si alguno/a ha logrado montar un apache con mod_perl desde 0 (a partir de su codigo) y le ha funcionado (y tiene ganas de perder su preciado tiempo en ayudarme :D) ... aqui estaré escuchando sus sabias palabras jeje :) y bueno, cualquie sugerencia por supuesto es más que bien recibida.

Muchas gracias por antelación y feliz año nuevo! :-)

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
FreeBSD

Te descargas apache, mod_perl y mod_ssl en un directorio y escribes:

shell#> tar -xzf apache_1.3.27.tar.gz
shell#> tar -xzf mod_perl-1.27.tar.gz
shell#> tar -xzf mod_ssl-2.8.12-1.3.27.tar.gz
shell#> cd mod_ssl-2.8.12-1.3.27
shell#> ./configure --with-apache=../apache_1.3.27 --with-ssl=/usr --enable-shared=ssl --with-mm=/usr/local
shell#> cd ../mod_perl-1.27
shell#> perl Makefile.PL DO_HTTPD=1 USE_APACI=1 APACHE_PREFIX=/usr/local EVERYTHING=1 APACI_ARGS='--server-uid=www, --server-gid=www, --enable-module=so --enable-module=most, --enable-shared=max --disable-shared=perl, --enable-module=perl, --without-confadjust'
shell#> make test
shell#> cd ../apache_1.3.27
shell#> make certificate TYPE=custom
shell#> cd ../mod_perl-1.27; make install

Mas o menos es la manera que utilizo para instalarlo en FreeBSD. He omitido un detalle aunque creo que no te hará falta. Si no te sirve avisa que te doy otra solución.

Salu2.

🗨️ 7
BocaDePez
BocaDePez

Hola, antes de nada darte las gracias por esta forma de hacerlo. Aunque no me ha funcionado.. El perl Makefile.PL funciona, el problema viene cuando hago el make test. Se tira un buen rato compilando, copiando cosas de un sitio a otro, etc... y llega un momento en el que falla:

( ... )
cp t/conf/mod_perl_srm.conf t/conf/srm.conf
./apaci/load_modules.pl ../apache_1.3.27/src
../apache_1.3.27/src/httpd -f `pwd`/t/conf/httpd.conf -X -d `pwd`/t &
httpd listening on port 8529
will write error_log to: t/logs/error_log
letting apache warm up...\c
done
/usr/bin/perl5.8.0 t/TEST 0
Can't locate LWP/UserAgent.pm in @INC (@INC contains: ../blib/lib ../blib/arch /usr/lib/perl5/5.8.0/i386-linux /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl ../.) at t/TEST line 48.

I still can't find LWP::UserAgent, try:
/usr/bin/perl5.8.0 -MCPAN -e install LWP

or

(link roto)

Must skip important tests without LWP...

kill `cat t/logs/httpd.pid`
cat: t/logs/httpd.pid: No existe el fichero o el directorio
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
make: *** [kill_httpd] Error 1

Un saludo

🗨️ 6
FreeBSD

Porque he dado por supuestas muchas cosas. Previamente tienes que instalar el siguiente programa:

p5-libwww--->(link roto)

Después create un fichero al que puedes llamar linux.layout con el siguiente contenido:

prefix: /usr/local
exec_prefix: $prefix
bindir: $exec_prefix/bin
sbindir: $exec_prefix/sbin
libexecdir: $exec_prefix/libexec/apache
mandir: $prefix/man
sysconfdir: $prefix/etc/apache
datadir: $prefix/www
iconsdir: $datadir/icons
htdocsdir: $datadir/data
manualdir: $prefix/share/doc/apache
cgidir: $datadir/cgi-bin
includedir: $prefix/include/apache
localstatedir: /var
runtimedir: $localstatedir/run
logfiledir: $localstatedir/log
proxycachedir: $datadir/proxy

shell#> tar -xzf apache_1.3.27.tar.gz
shell#> tar -xzf mod_perl-1.27.tar.gz
shell#> tar -xzf mod_ssl-2.8.12-1.3.27.tar.gz
shell#> cd mod_ssl-2.8.12-1.3.27
shell#> ./configure --with-apache=../apache_1.3.27 --with-ssl=/usr --enable-shared=ssl
shell#> cd ../mod_perl-1.27
shell#> perl Makefile.PL DO_HTTPD=1 USE_APACI=1 APACHE_PREFIX=/usr/local EVERYTHING=1 APACI_ARGS='--server-uid=www, --server-gid=www, --enable-module=so --enable-module=most, --enable-shared=max --disable-shared=perl, --enable-module=perl, --with-layout=../linux.layout:Linux, --without-confadjust'
shell#> make test (o make)
shell#> cd ../apache_1.3.27
shell#> make certificate TYPE=custom
shell#> cd ../mod_perl-1.27; make install

Si te sigue dando fallos el make test, lo cambias por make. Posiblemente si no haces el make test no te dara el fallo por no tener los módulos perl (ese era uno de los fallos que te daba). Ahora creo recordar que con apache 1.3.27 falla, con 1.3.26 no fallaba y esta era la forma en la que yo lo instalaba.

Lo dicho, si te falla lo volvemos a mirar. Aunque estoy seguro que en linux debe haber alguna forma más sencilla que esta.

Salu2.

🗨️ 5
BocaDePez
BocaDePez

Hola :) joder... me sabe mal decirte que esto todavía no funciona (con la gran ayuda que me estas prestando, gracias!)

Estaba, en lo cierto, me faltaba el paquete libwww-perl. Leyendo su README me di cuenta de que tambien me faltaban (al menos, en el README recomendaban que los tuviese instalados) 5 paquetitos: URI, MIME-Base64, HTML-Parser, libnet y Digest-MD5)

Te cuento qué he hecho: Los instale todos antes de instalar libwww-perl (no hubo problemas) La cosa es que, al hacer el make test a la hora de instalar libwww-perl paso esto:

linux:~/libwww-perl-5.64# make test
/usr/bin/perl5.8.0 t/TEST 0
base/common-req......ok
base/cookies.........ok
base/date............FAILED test 51
Failed 1/58 tests, 98.28% okay
base/headers-auth....ok
base/headers-etag....ok
base/headers-util....ok
base/headers.........ok
base/http............ok
base/listing.........ok
base/mediatypes......ok
base/message.........ok
base/negotiate.......ok
base/response........ok
base/status..........ok
base/ua..............ok
html/form............ok
robot/rules-dbm......ok
robot/rules..........ok
robot/ua.............ok
local/autoload.......ok
local/get............ok
local/http...........ok
local/protosub.......ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
base/date.t 58 1 1.72% 51
Failed 1/23 test scripts, 95.65% okay. 1/302 subtests failed, 99.67% okay.
make: *** [test] Error 29

En fin... no le di mucha importancia y prosegui. Fui paso a paso de lo que me has dicho y todo bien :) hasta llegar al paso en el que tengo que hacer lo de perl Makefile.PL DO_HTTPD=1 USE_APACI=1 APACHE_PREFIX=/usr/local EVERYTHING=1 APACI_ARGS='--server-uid=www, --server-gid=www, --enable-module=so --enable-module=most, --enable-shared=max --disable-shared=perl, --enable-module=perl, --with-layout=../linux.layout:Linux, --without-confadjust'
[ ## el Makefile.PL funciona correctamente. el poroblema viene con lo siguiente ## ]
shell#> make test
(...)
../apache_1.3.27/src/httpd -f `pwd`/t/conf/httpd.conf -X -d `pwd`/t &
httpd listening on port 8529
will write error_log to: t/logs/error_log
letting apache warm up...\c
Syntax error on line 11 of /usr/src/mod_perl-1.27/t/conf/httpd.conf:
Cannot load /usr/src/mod_perl-1.27/t/../../apache_1.3.27/src/modules/standard/mod_include.so into server: /usr/src/mod_perl-1.27/t/../../apache_1.3.27/src/modules/standard/mod_include.so: undefined symbol: Perl_newSVpv
done
/usr/bin/perl5.8.0 t/TEST 0
modules/actions.......ok
modules/cgi...........ok
modules/constants.....ok
modules/cookie........skipped
all skipped: no reason given
modules/file..........ok
modules/httpdconf.....ok
modules/include.......ok
modules/log...........ok
modules/module........skipped
all skipped: no reason given
modules/perlrun.......ok
modules/psections.....skipped
all skipped: no reason given
modules/request.......skipped
all skipped: no reason given
modules/src...........ok
modules/ssi...........ok
modules/stage.........skipped
all skipped: no reason given
modules/status........ok
modules/symbol........skipped
all skipped: no reason given
modules/uri...........ok
modules/util..........ok
internal/api..........ok
internal/auth.........ok
internal/croak........ok
internal/dirmagic.....ok
internal/error........ok
internal/headers......ok
internal/hooks........ok
internal/http-get.....ok
internal/http-post....ok
internal/proxy........ok
internal/redirect.....ok
internal/rwrite.......ok
internal/stacked......ok
internal/table........ok
internal/taint........ok
All tests successful, 6 tests skipped.
Files=34, Tests=398, 120 wallclock secs (97.98 cusr + 5.59 csys = 103.57 CPU)
kill `cat t/logs/httpd.pid`
cat: t/logs/httpd.pid: No existe el fichero o el directorio
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
make: *** [kill_httpd] Error 1

y me da ese error el make test. en fin, no le doy importancia, vuelvo a poner un make (a secas) por si acaso. y funciona bien.

Y luego todo funciona bien, hasta el paso final: shell#> cd ../mod_perl-1.27; make install

Se compila el apache bien y todo. Ok, pruebo a conectarme al servidor y funciona bien. El problema viene al intentar visualizar un script de perl (sacado de un sistema de blogs -graymatter- que deberia funcionar porque se que funciona jeje :) que no me lo visualiza, me muestra el codigo.

Miro el error_log y veo esto:

[Mon Dec 30 14:33:07 2002] [notice] Apache/1.3.27 (Unix) configured -- resuming normal operations
[Mon Dec 30 14:33:07 2002] [notice] Accept mutex: sysvsem (Default: sysvsem)

Y me digo: ¿No deberia aparecer ahi en la primera linea esa que carga el modulo de perl y ssl? entonces me voy al httpd.conf y:
linux:/usr/local/apache/conf# grep perl httpd.conf
# avoid the ambiguity with the common suffix for perl scripts.
# which has a broken HTTP/1.1 implementation and does not properly

No esta el AddModule mod_perl.c ni el LoadModule perl_module extramodules/libperl.so que deberia haber en el archivo de configuracion (hasta busco por el archivo libperl.so por todo el sistema y NO ESTA!)

En fin... que pruebo a añadir esas lineas y (aun sabiendo que no tengo el libperl.so) hago un start al apache y rezo para que vaya. Logicamente, esta vez ni se carga el servidor:

linux:/usr/src/mod_perl-1.27# /usr/local/apache/bin/apachectl start
Syntax error on line 235 of /usr/local/apache/conf/httpd.conf:
Cannot add module via name 'mod_perl.c': not in list of loaded modules
/usr/local/apache/bin/apachectl start: httpd could not be started

y... asi estan las cosas jeje. Siento que no funcione :/ y la verdad, eso de que no este libperl.so me huele a que ni ha compilado bien el modulo (aunque al hacer el 'make' no dio error -eso si, el make test si fallo como he puesto) Yo no se que puede ser... a ver si me puedes seguir dando buenas sugerencias y diciendome cosas como hasta ahora. Gracias de ante mano

Un saludo :D

🗨️ 4
FreeBSD
🗨️ 2
BocaDePez
BocaDePez
🗨️ 1
FreeBSD
FreeBSD