Villanos.net El Villano
- la revista de villagüeb -
Cómo instalar un cgi
Impuesto de conexión...
¡Pégalo en tu página!
Jom
Buscar
Suscripción
Trastero
Kiosco
Top
E-mail
Editorial
Opinión
Técnicas
¡L@ hicimos!
i-niciativas
Villagüeb
Navegando
CajónDeSastre
Pasos a seguir para instalar un CGI

Aquí explicaré los pasos a seguir para instalar un CGI creado en Perl (los que encontrarás en estas páginas están escritos en este lenguaje). Si deseas saber como instalar CGIs creados en lenguajes compilados (C, etc) puedes consultar las FAQ de CGI de Gregorio (http://web.jet.es/gregorio)

  1. ¿Es UNIX tu servidor Web? Los CGIs que encontrarás en estas páginas estan creados para sistemas UNIX/LINUX. Si deseas adaptarlos a Windows deberás modificar el código. En algunos casos las modificaciones necesarias no serán muchas, pero en otros (sobre todo los que envian correos) será necesario incluir profundas modificaciones. Si el sistema operativo de tu servidor es UNIX/LINUX sigue adelante sin miedo.

  2. Preguntas que deben hacerse al administrador del servidor Web

    1. Pregúntale al administrador del servidor si tienes permiso para instalar CGIs y, si es así, en que subdirectorio debes instalarlos. si no tienes permiso para instalar CGIs no te pelees más, olvídate de los CGIs o cambia de servidor Web.

    2. Pregúntale el path del intérprete Perl. Es decir, en que lugar del disco se encuentra el interprete del lenguaje Perl. Ya que Perl no es un lenguaje compilado no necesitas un compilador, necesitas lo que se conoce con el nombre de intérprete.

    3. Pregúntale cual es el path real de tu espacio web en el servidor. Usualmente suele ser algo como /home/usuario o /usr/people/usuario/public_html. Por ejemplo si te dice que es /home/usuarios_web/pepe. Esto significa que te corresponde en el disco un subdirectorio llamado pepe que cuelga de usuarios_web, que a su vez cuelga del subdirectorio home. Todos los path que empiezan por / son paths absolutos. En otras palabras, son paths descritos a partir de la raíz del disco (/). En UNIX/LINUX la raíz del disco es / (es el equivalente a C:\ del DOS/WINDOWS). El paths relativo es el path de un subdirectorio referido a otro, por ejemplo el path relativo del subdirectorio /etc/X11 referido a /usr/local/bin seria ../../../etc/X11.

    4. Aunque no necesites más datos para instalar un CGI en particular pregunta al administrador más cosas: el path del sendmail y el del date. Posiblemente los necesitarás si decides instalar más CGIs. Necesitarás sendmail en aquellos CGIs que envien correos. El programa date da la fecha y hora del sistema, Perl tiene una función para ello, pero alguno de los CGIs que hay en estas páginas llaman a ese programa del sistema para saber la hora.



  3. Tras esto debes leer las instrucciones de instalación específicas de ese CGI en concreto. Esas instrucciones suelen estar al principio del programa (son líneas de comentario que empiezan con el símbolo #). Si es así, edita el CGI (usualmente con extension pl o cgi) con un editor ASCII (NotePad, WordPad o Edit de Windows o cualquiera de los que vienen con las diferentes distribuciones LINUX pueden servirte). En otras ocasiones las instrucciones de instalació están en un fichero aparte. Por norma general debes hacer tres cosas con el CGI antes de pasarlo al servidor

    1. La primera línea debe empezar por #! y en ella se indica el path del intérprete Perl. Así si el administrador te dijo que el intérprete Perl estaba en el path /usr/bin/perl debes poner en esa línea lo siguiente #!/usr/bin/perl

    2. Tras las explicaciones de instalación (o en medio de la explicación de como instalar el CGI), hay un apartado dedicado a dar el valor correcto a las variables necesarias. LAs variables en Perl se pueden declarar de esta forma
      $nombre_de_la_variable = "valor_de_la_variable";
      Aunque las dobles comillas pueden ser en ocasiones comillas simples. Estas variables las podemos clasificar en dos tipos, variables de localización de programas de sistema y variables referentes a tu espacio Web. Algunos CGIs necesitan saber donde está algún programa específico del sistema (por ejemplo sendmail, date o ftp). Eso debes indicarlo en alguna variable que estará pensada para eso. Por ejemplo si al principio del programa hay algo como $mailprog='/usr/bin/sendmail'; y el administrador del sistema te dijo que sendmail está en /usr/local/bin/sendmail entonces debes modificar esa variable y poner $mailprog='/usr/local/bin/sendmail';

    3. Luego encontrarás generalmente una serie de variables que se refieren a datos de tu espacio Web, por ejemplo donde está algun fichero de datos o bien tu dirección de correo. Lo más seguro para asegurar que el CGI funcione a la primera es que des el path absoluto de los ficheros (por ejemplo $fichero_datos="/home/pepe/misdatos/datos.dat") en vez de dar paths relativos. Esto es criticado por algunos por ser una fuente de información para todos aquellos que vieran el código del CGI. Lo que pasa es que si alguien ve el código del CGI es que ya has cometido errores de seguridad mucho más graves que ese. Un detalle: si das una dirección de correo en alguna variable hazlo de la siguiente forma
      $mi_mail="pepe\@nosedonde.zz";
      Es decir no escribas @, escribe \@. Esto debe ser así para que el intérprete Perl no confunda @nosedonde con un vector (en Perl los vectores se indican de esa forma).

  4. Tras todo esto guarda en formato ASCII el CGI modificado

  5. A veces es necesario modificar otros ficheros (plantillas, ficheros de datos, etc). Si es así debe estar indicado en las instruciones de instalación del CGI en cuestión.

  6. Pasa (mediante FTP) el CGI y los demás ficheros necesarios al servidor. Recuerda dos cosas: que debes pasar el CGI por FTP en modo ASCII y que si indicaste en las variables los directorios donde debian estar el resto de ficheros debes ponerlos en esos directorios y no en otros.

  7. Una vez que el CGI está en el servidor debes darle permisos de ejecución. Si, ya se que eso de los permisos te sonará raro si vienes del mundo Windows... Si es así ahí va eso:

    Los permisos de un archivo UNIX son del la forma -rwxrwxrwx (es lo que aparece al lado del archivo cuando se ejecuta un ls -al). La primera letra (-) indica si es un directorio (d), un link simbólico (l), etc. Las tres siguientes hacen referencia a los permisos del propietario del archivo (r:read, el propietario puede leer el archivo,w:write, el propietario puede modificar el archivo y x:execute, el propietario puede ejecutar el archivo), las tres que siguen se refieren a los componentes del grupo al cual pertenece el usuario (normalmente el grupo es user) y las tres últimas se refieren a todos los demás (la persona que accede a vuestra página Web está en esta categoría). Si las cosas funcionan como debe ser, el administrador del sistema es el único que tiene prioridad para saltarse estas protecciones.

    Para darle los permisos necesarios a un archivo UNIX, primero es necesario tener ese archivo en el servidor. Una vez allí, conectamos con el servidor via FTP o TELNET. Los permisos se le imponen con la instrucción chmod numero nombre_del _fichero donde número es la suma de las siguientes prioridades.

    PropietarioGrupoTodos
    leer400404
    escribir200202
    ejecutar100101

    Así los CGI deben tener prioridad 755 (400+200+100+40+10+4+1) y un fichero de estadísticas (que pueda ser consultado desde la página web) debe tener prioridad 644 (400+200+40+4).

    En principio un cliente FTP convencional permite hacer esto. Desgraciadamente para muchos, parece ser que el FTP que viene de serie con Windows 95 no es precisamente un alarde de completitud, así que si usais ese sistema debereis conseguir un cliente de ftp que permita cambiar los permisos a los ficheros (la versión registrada de CuteFtp lo permite; la versión de prueba sólo lo permite durante los dias legales de prueba). Os recomiendo (para Windows) usar LeechFTP, lo podeis conseguir desde las páginas de Arrakis, en la sección Programas recomendados. Es freeware.

    Para cambiar los permisos con este programa teneis que bajaros el CGI al servidor (si está escrito en Perl debe bajarse en modo ASCII). Luego hay que señalar el fichero al que se desea cambiar los permisos (que tiene que estar en el servidor) clicando una vez sobre él (el nombre del fichero se pone azul). Luego hay que pulsar el boton derecho del ratón. Vereis que aparecen muchas opciones, una de ellas es "Set Attributes". Esa es la opcion que permite cambiar los permisos. Al clicar sobre ella aparece un menú como el de la figura

    Podeis cambiar los permisos usando la notación numérica que se explica más arriba o bien activando las casillas correspondientes.

    En ocasiones debes cambiar también los permisos de algún subdirectorio o fichero. Los permisos se asignan mediante un código de tres números. Te recomiendo que dejes el segundo a 0 en todo tu Web, así nadie que tenga una cuenta en el mismo sistema podrá chafardear tus ficheros. Por ejemplo da a los subdirectorios y CGIs permisos 705 y no 755, a los subdirectorios escribibles 707 y no 777 a los ficheros HTML 604 y no 644, etc.

  8. Por último debes modificar la página que llama al CGI. Para llamar un CGI desde una página Web, puedes usar los comandos del Server Side Includes (SSI)
    <!--#exec cmd="path y nombre de la rutina"-->
    o bien
    <!--#exec cgi="path y nombre de la rutina"-->.
    Simplemente pon eso dentro del body de tu página Web. Esto es necesario en el caso de que el CGI deba ejecutarse sin intervención de la persona que lee la página (contadores, estadísticas, etc). Si se hace de esta forma, entonces la página debe tener la extensión shtml. También podeis usar un formulario con la instrucción <FORM ACTION="path y nombre de la rutina" METHOD="POST">.
Escrito por Justino
Hecho por villanos.net en Junio de 1999