|
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)
- ¿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.
- Preguntas que deben hacerse al administrador del servidor Web
- 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.
- 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.
- 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.
- 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.
- 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
- 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
- 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';
- 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).
- Tras todo esto guarda en formato ASCII el CGI modificado
- 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.
- 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.
- 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.
|
Propietario | Grupo | Todos |
| leer | 400 | 40 | 4 |
| escribir | 200 | 20 | 2 |
| ejecutar | 100 | 10 | 1 |
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.
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">.
|