• Publicidad

Configurar Apache para ejecutar Perl

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Configurar Apache para ejecutar Perl

Notapor Perl » 2009-04-09 10:25 @475

Hola, soy completamente nuevo en Perl y en este foro. He estado buscando por todos lados la manera de ejecutar archivos Perl con Apache pero nada de lo que he encontrado me ha funcionado. Llevo desde la mañana intentándolo y he decidido venirme y preguntar.

También he mirado en el tutorial de esta web de lo que no viene nada sobre el asunto, me imagino que podrá ser una tonteria pero necesito ayuda, les agradecería mucho una ayuda, un saludo.
Perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-04-09 10:14 @468

Publicidad

Notapor explorer » 2009-04-09 10:41 @487

Bienvenido a los foros de Perl en Español, Perl.

Lo que quieres hacer se llama tecnología CGI.

En la sección de Tutoriales hay dos dedicados a los primeros pasos en esa tecnología, pero parece que el problema se centra en la primera parte: la relativa a Apache.

Actualmente, prácticamente todos los Apache vienen configurados para usar CGI nada más ser instalados, así que las opciones de configuración son mínimas.

Un posible resumen:
  • Apache y Perl están instalados
  • Apache tiene permisos de ejecución del intérprete Perl
  • En el fichero de configuración de Apache, revisa todas las opciones que hacen referencia a 'cgi':
    • lugar de publicación de los CGI (por defecto será algo como /usr/lib/cgi-bin)
    • permisos de ejecución de cada uno de ellos (lo normal será 755, es decir, ejecución para todos los usuarios del servidor)
    • el sistema CGI está activo dentro de Apache: en el fichero de configuración deberán aparecer líneas que confirmen que el sistema está activado
Tienes una guía más amplia en este otro hilo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Perl » 2009-04-09 12:30 @562

Bueno, he probado todo y más.

Tenía instalado Apache perfectamente junto con PHP.
Perl está instalado por defecto en mi GNU/Linux Lenny.

El segundo paso no sé cómo se hace o no sé a qué te refieres.

He añadido al httpd.conf ( ya que lo incluye en el apache2.conf ):
Código: Seleccionar todo
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
    AllowOverride None
    Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>


Porque no me aparece estas lineas o por lo menos nada relacionado aparentemente
Código: Seleccionar todo
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/


Estaba ya creado el directorio donde me comentaste, solo que ya había 3 ejecutables de otros programas (no sé qué pueden hacer ahí).

Los permisos en orden solo que no se pueden cambiar los permisos de la propia carpeta cgi-bin que son root:root.
Perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-04-09 10:14 @468

Notapor explorer » 2009-04-09 12:46 @573

Yo lo veo todo perfecto. Es la configuración por defecto de casi todo sistema Linux.

Los programas que has visto en la carpeta cgi-bin están ahí para comprobar que funciona el sistema CGI. O dicho de otra manera: que el Apache está configurado de serie para hacerles ejecutar.

Abre un navegador web. Pon http://localhost/cgi-bin/nombre-de-tu-programa.pl y mira a ver qué sale en el registro de actividad (log) y en el de error (/var/log/apache2/error.log).

Y nos lo cuentas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Perl » 2009-04-09 14:56 @664

Esto es lo que me suelta, creo que al final podrá ser algo relacionado con Perl más que otra cosa.

Código: Seleccionar todo
[error] [client 127.0.0.1] Premature end of script headers: prueba.pl


De todas formas durante el día de hoy he hecho muchas cosas y una fue instalar estos paquetes que creo que son necesarios:

Código: Seleccionar todo
libapache2-mod-perl2
libapache2-mod-perl2-dev


También he probado a ejecutar desde Opera los programas que había en cgi-bin y me ha sorprendido la forma de ejecutarse, aunque de los 3 que había uno llamado qtest me da error como los *.pl

Código: Seleccionar todo
[error] [client 127.0.0.1] malformed header from script. Bad header=Trying and...: qtest


Y está todo relacionado con los headers, y la verdad no muy bien como está estructurado este lenguaje como para saber disgregar los headers y demás.

He visto que en una carpeta del Quanta hay un archivo como de boceto para meter Perl, por lo que pregunto, ¿si escribo en Quanta código Perl y le doy a visualizar el resultado como HTML se debería de ver si perl está bien?
Perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-04-09 10:14 @468

Notapor explorer » 2009-04-09 15:04 @669

No, no necesitas instalar el mod_perl para ejecutar los CGI.

Aquí tienes un CGI mínimo que te dará más pistas en pantalla para saber porqué falla.

En cuanto a lo del Quanta, efectivamente hay algunos editores de Perl que te permiten ejecutar código como si fuera CGI, y muestran el resultado como una petición HTTP. El problema de Quanta es que es un editor de HTML. No ejecuta código al modo de como lo hace el protocolo CGI (que yo haya visto hasta ahora en el Quanta que tengo instalado en mi máquina).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Perl » 2009-04-09 15:14 @676

Qué puedo decir de cómo me siento después de todo. Funciona perfectamente, y te agradezco mucho la ayuda. Un saludo y gracias.
Perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-04-09 10:14 @468

Notapor explorer » 2009-04-09 15:16 @678

¿Y cuál fue el problema?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Perl » 2009-04-11 04:59 @249

Pues que los pequeños ejemplos que cogí en Internet estaban mal, así que no se ejecutaban. Ya ves, un día enterito.
Perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-04-09 10:14 @468

Re: Configurar Apache para ejecutar Perl

Notapor Sergio Ling » 2017-04-28 01:32 @105

Hola, el problema está en el código que se está ejecutando. La primera línea debe decir "Content-Type: text/html" y luego debe haber un espacio en blanco, así Apache sabrá que se trata de un programa y no de cualquier otra cosa.

Prueba:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. print "Content-Type: text/html";
  3. print "\n";
  4. print "<HEAD>";
  5. print "<HTML>";
  6. print "<TITLE>titulo a mostrar</TITLE>;
  7. print "</HEAD>";
  8. print "<BODY>";
  9. print "<H1>subtitulo</H1>";
  10. print "lo que quieres";
  11. print "</BODY>";
  12. print "</HTML>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Sergio Ling
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2017-04-28 01:17 @095

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados