Generalidades
Common Gateway Interface (CGI) es una importante tecnología World Wide Web que permite al navegador web de un cliente solicitar datos de un programa ejecutado un servidor web. CGI especifica un estándar para pasar datos de solicitud entre un servidor web y el programa utilizado para atender esa solicitud. Los desarrolladores web a menudo prefieren los scripts CGI debido a su velocidad y sus requisitos mínimos de recursos. Los scripts CGI en DreamHost se pueden escribir en todos los lenguajes comúnmente utilizados con CGI (Perl, Python, Ruby, incluso scripts shell), siempre que tengas un intérprete para compilar ese lenguaje.
Ejecutar un script CGI en DreamHost
Para ejecutarlo, copia el script en un directorio accesible desde la web, por ejemplo:
/home/username/example.com/cgi-bin
Cambia username a tu usuario Shell y example.com a tu sitio website. No tienes que poner tus scripts CGI en un directorio cgi-bin, ya que los scripts CGI pueden ejecutarse desde cualquier directorio dentro de tu dominio en DreamHost. El servidor comprende varias extensiones de archivo (por ejemplo, .pl), pero si ves el código fuente de tu script en lugar del resultado de su ejecución, intenta usar la extensión genérica .cgi.
Si obtienes un "500 Internal Server Error", puede que necesites cambiar los permisos del archivo:
[server]$ chmod 755 script.cgi
Ejecutar un script CGI sin una extensión .cgi
Si deseas instalar un script CGI sin la extensión .cgi, simplemente usa una directiva <Files> en tu .htaccess. Por ejemplo, si deseas tener un directorio cgi-bin, crea un archivo llamado .htaccess dentro de él y luego inserta lo siguiente:
<Files *> SetHandler cgi-script </Files>
Una vez que agregues esta directiva, todos los archivos dentro del directorio se ejecutarán como scripts CGI.
Ejemplos de scripts CGI
Perl
#!/usr/bin/perl use strict; use CGI; my $q = CGI->new; print $q->header(); print "Hello, world!";
Python
#!/usr/bin/python print "Content-type: text/html" print print "Hello, world!"
Ruby
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi.out{ 'Hello, world!' }
Shell Script
#!/bin/sh echo "Content-type: text/html" echo echo "Hello, world!"
suEXEC
suEXEC está habilitado para todos los usuarios de DreamHost y no se puede deshabilitar. Debido a esto, algunas características, como la directiva SetEnv en archivos .htaccess, no funcionarán como se esperaba. Revisa la página de suEXEC para obtener soluciones y más detalles.
Solucionar problemas CGI
Consulta el siguiente artículo para obtener ayuda con la solución de problemas de CGI: