Estás en:   ArielOrtiz.com > Desarrollo de aplicaciones distribuidas > Laboratorio 1: Introducción a Apache

Laboratorio 1: Introducción a Apache

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción de la actividad

Las actividades de la práctica se pueden elaborar de manera individual o en parejas.

El reporte de la práctica de laboratotio debe ser desarrollado de manera individual.

  1. Si aún no las hecho, instala el servidor de Web Apache en tu sistema de Ubuntu Linux. Desde la línea de comando teclea:
    sudo apt-get install apache2
    
    Verifica que esté funcionando el servidor usando el siguiente URL desde tu navegador: http://localhost/
  2. Configura Apache para que sepa donde encontrar los archivos de tu sitio Web. En $HOME/www/static residirá todo tu contenido estático, y en $HOME/www/cgi-bin estarán los scripts CGI para generar contenido dinámico. Para crear los directorios mencionados, teclea desde la línea de comando:
    cd
    
    mkdir www
    
    cd www
    
    mkdir static
    
    mkdir cgi-bin
    
  3. Abre el archivo /etc/apache2/sites-enabled/000-default con privilegios de administrador. Desde la línea de comando teclea:

    gksudo gedit /etc/apache2/sites-available/default
    

    Edita dicho archivo para que Apache pueda utilizar los directorios recién creados. Reemplaza username por el nombre de usuario correcto:

    <VirtualHost *:80>
        # Coloca aquí el correo electrónico del administrador de Apache
        ServerAdmin Webmaster@localhost username@example.com 
    
        DocumentRoot /var/www /home/username/www/static
        <Directory />
            Options FollowSymLinks
            AllowOverride None
        </Directory>
        <Directory /var/www/ /home/username/www/static/>    
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ /home/username/www/cgi-bin/
        <Directory "/usr/lib/cgi-bin" /home/username/www/cgi-bin>
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
    
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
    
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    
        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
    
    </VirtualHost>
    

    Siempre que se modifique la configuración de Apache es necesario reiniciarlo para que los cambios surtan efecto. Desde la línea de comando teclea:

    sudo /etc/init.d/apache2 restart            
    

    Además de la opción restart, se puede invocar el comando anterior con las opciones stop y start para detener e iniciar el servidor de Web Apache, respectivamente.

    Al reiniciar, detener e iniciar el servidor Web Apache aparece el siguiente mensaje:

    apache2: Could not reliably determine the server's fully qualified domain name,
    using 127.0.1.1 for ServerName
    

    Para evitar que aparezca este mensaje, se debe editar el archivo /etc/apache2/httpd.conf (no olvides usar privilegios de administrador) para que contenga la siguiente línea:

    ServerName localhost
    
  4. Crea una hoja de estilos estilos.css y una página de bienvenida index.html para probar que la configuración de tu sitio Web sea correcta. Ambos archivos deben localizarse en el directorio www/static.

    /* Archivo: estilos.css */
    
    body {
        background: #FFF;
        color: #000080;
        font-family: sans-serif;
        font-size: medium;
        margin: 20px;
    }
    
    h1 {
        color: #069;
        font-size: 230%;
        border-bottom: 4px solid #069;         
        margin: 10px 0px 20px 0px;
        padding: 0px;
    }
    
    table {
        border-collapse: collapse;
        border: 1px solid #000000;
        padding: 0px;
        margin-bottom: 10px;
        color: #000000; 
        background: #E6E6FA;
    }
    
    td {
        border: 1px solid #000000;
        padding: 10px;
        text-align: left;
    }
    
    th {
        border: 1px solid #000000;
        padding: 10px;
        color: #008080;
        background: #B0E0E6;
        text-align: center;
    }
    <!-- Archivo: index.html -->
    
    <!DOCTYPE html>
    
    <html lang="es">
    
        <head>
            <meta charset="utf-8"/>
            <link rel="stylesheet" type="text/css" href="/estilos.css"/>
            <title>El Chorrito</title>
        </head>
        
        <body>
        
            <h1>El Chorrito</h1>
            
            <p>
                <strong>Autor: Francisco Gabilondo Soler</strong>
            </p>        
            <p>       
                La gota de agua que da la nube<br/>
                como regalo para la flor<br/>
                en vapor se desvanece<br/>
                cuando se levanta el sol;<br/>
                y nuevamente al cielo sube<br/>
                hasta la nube que la soltó.<br/>
                La gotita sube y baja,<br/>
                baja y sube<br/>
                al compás de esta canción:<br/>
            </p>
            <p>
                Allá en la fuente<br/>
                había un chorrito,<br/>
                se hacía grandote<br/>
                se hacía chiquito;<br/>
                allá en la fuente<br/>
                había un chorrito,<br/>
                se hacía grandote<br/>
                se hacía chiquito;<br/>
                estaba de mal humor,<br/>
                pobre chorrito tenía calor<br/>
                estaba de mal humor,<br/>
                pobre chorrito tenía calor.
            </p>       
        </body>
        
    </html>

    Apunta nuevamente tu navegador a http://localhost/. Debes poder ver la página index.html rendereada de la manera esperada.

  5. Ahora revisaremos que los scripts CGI también funcionen correctamente. En el directorio www/cgi-bin coloca el siguiente archivo fuente de Python llamado ahorita.py:

    #!/usr/bin/env python
    # coding: utf-8
    
    # Archivo: ahorita.py
    
    from datetime import datetime
    
    # Imprimir encabezados de la respuesta
    print 'Content-type: text/html; charset=utf-8'
    
    # MUY IMPORTANTE: Imprimir una línea en blanco para delimitar
    # los encabezados del cuerpo de la respuesta.
    print 
    
    print '''<!DOCTYPE html>
    
    <html lang="es">
    
        <head>
            <meta charset="utf-8"/>
            <link rel="stylesheet" type="text/css" href="/estilos.css"/>
            <title>La hora de ahorita</title>
        </head>
        
        <body>
        
            <h1>La hora de ahorita</h1>
            
            <p>
                La fecha y hora del servidor Web en este momento es: 
                <strong>%s</strong>
            </p>
            
            <p>
                [<a href="">Actualizar</a>]
            </p>
                          
        </body>
        
    </html>''' % (datetime.now(),)

    Es indispensable que este archivo tenga permisos de ejecución. Desde la línea de comando (en el directorio www/cgi-bin):

    chmod +x ahorita.py
    

    Usa el siguiente URL desde tu navegador para ver el resultado: http://localhost/cgi-bin/ahorita.py

  6. Escribe un nuevo script CGI en Python llamado ambiente.py que imprima en orden alfabético todas las variables de ambiente que estén disponibles, utilizando una tabla de HTML parecida a la siguiente:

    Variable Valor
    DOCUMENT_ROOT /home/username/www/static
    GATEWAY_INTERFACE CGI/1.1
    ... ...

    Las variables de ambiente se pueden obtener en Python usando la variable environ del módulo os.

    El URL para el script debe ser: http://localhost/cgi-bin/ambiente.py

¿Qué se debe entregar?

Para entregar tu trabajo individual, sigue las siguientes instrucciones:

Fecha límite: Martes, Agosto 23.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

50% Implementación de los requerimientos.
50% Reporte de la práctica de laboratorio.
DA El programa y/o reporte es un plagio.
© 1996-2011 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
Desarrollado en Django | Licencia de Creative Commons | HTML5 válido | CSS válido