OCULTAR MENU LATERAL >>

Instalar y configurar el servidor web Apache en Ubuntu

Cuando accedemos desde nuestro navegador a una determinada web lo que realmente está ocurriendo es que:
  1. Hacemos una petición web, la cual incluye la dirección del equipo donde se encontrará la web, el identificador de la página que queremos ver, la dirección de nuestro equipo,...
  2. Se envía la petición al equipo al que corresponde la dirección solicitada.
  3. Al llegar la petición al equipo remoto, éste toma el identificador de la web que pedimos, la procesa y la envía a la dirección de nuestro equipo.
  4. Nuestro equipo recibe la información y la muestra.
Estos pasos son evidentes, pero es necesario mencionarlos para explicar qué es un servidor web. Llamamos servidor web al equipo remoto donde se alojan las páginas que solicitamos, pero también es llamado servidor web el software que se encarga de procesar la página solicitada y enviarla hacia nuestro equipo.

Apache es un software servidor web, de código abierto, disponible para los principales sistemas operativos (Windows, MacOsX, BSD, Ubuntu,... y cualquiera basado en GNU/Linux). Es el más usado en el mundo para servir información mediante el protocolo HTTP. Este protocolo es el habitual para enviar páginas webs a través de internet o de redes locales.

Este monopolio se debe entre otros motivos a que es altamente configurable, posee bases de datos de autenticación y negociado de contenido, la mayoría de las vulnerabilidades de la seguridad descubiertas han sido resueltas y sólo afectaban a nivel local,...

Sin embargo no todo son ventajas. Algunas de las vulnerabilidades detectadas se pueden accionar remotamente en ciertas situaciones o pueden ser explotadas malévicamente por usuarios locales. Además, siempre ha sido criticado por no poseer una interfaz gráfica que facilite su configuración.

Si deseamos instalar Apache en un equipo, cuyo sistema operativo es Ubuntu, para servir páginas webs a otros equipo que se encuentran en su misma red haremos lo siguiente:
NOTA: Recuerda que para hacer solicitudes al equipo servidor es necesario que éste tenga una dirección conocida y accesible por los equipos que solicitarán las páginas.
  1. Abrimos una Terminal (Aplicaciones->Accesorios->Terminal).
  2. Instalamos el paquete software y el paquete que contiene la documentación oficial:
     ~$ sudo apt-get install apache2 apache2-doc
    Al instalar se indicará que es necesario instalar otros paquetes: "apache2-mpm-worker", "apache2-utils", "apache2.2-bin", "apache2.2-common", "libapr1", "libaprutil1", "libaprutil1-dbd-sqlite3", "libaprutil1-ldap". Los instalamos también.
  3. Al terminar, comprobaremos que Apache se ha configurado correctamente para iniciarse cada vez que arranquemos el sistema:
     ~$ ls /etc/init.d/apache2
    Esto devolverá el siguiente mensaje:
    /etc/init.d/apache2
Con esto ya tenemos instalado el servidor. Además, como el servidor ya debe estar iniciado al acabar la instalación, podemos verificar que está funcionando correctamente accediendo desde el navegador web en la máquina donde está instalado a la dirección "http://localhost/", que es la dirección local (equivale también a "http://127.0.0.1/"); entonces veremos una página como la de la derecha.

Ahora veamos algunos comandos y configuraciones básicas:
  • INICIAR/PARAR/REINICIAR EL SERVICIO:
    El servidor ya debe estar iniciado al acabar la instalación pero por si falla o deseamos pararlo/reiniciarlo/iniciarlo más adelante, podemos hacerlo manualmente desde una Terminal mediante los siguientes comandos:
    • Iniciarlo:
       ~$ sudo /etc/init.d/apache2 start
    • Pararlo:
       ~$ sudo /etc/init.d/apache2 stop
    • Reiniciarlo:
       ~$ sudo /etc/init.d/apache2 restart

  • LISTAR LOS PROCESOS DE APACHE CARGADOS Y EN EJECUCIÓN:
    Para verlos haremos en una Terminal:
     ~$ ps -ef | grep apache

  • CAMBIAR LA RAIZ DE LA WEB:
    Las webs que serán servidas al exterior mediante Apache deben encontrarse por defecto en la ruta "/var/www/". Para cambiarla debemos reemplazar en el archivo "/etc/apache2/sites-available/default" cada aparición de "/var/www/" por la nueva ruta.

  • PERMITIR TILDES EN LAS PÁGINAS WEB:
    Por defecto, Apache no permite tíldes en la escritura regular de las páginas web. En su caso mostrará caracteres especiales.
    Para corregir este problema basta con ir al fichero "/etc/apache2/conf.d/charset" y cambiar la siguiente línea:
    #AddDefaultCharset       UTF-8
    por:
    AddDefaultCharset       UTF-8

  • VER ESTADISTICAS DE ACCESO Y ERRORES DE APACHE:
    Apache contiene 2 archivos en los cuales se almacenan los log de acceso y error.
    Esta información es importante para obtener estadísticas o un posible problema que tenga el mismo.
    Para ver esto ficheros podemos hacer desde una Terminal lo siguiente:
    • Log de errores (fichero "/var/log/apache2/error.log"):
       ~$ tail -f /var/log/apache2/error.log
    • Log de acceso (fichero "/var/log/apache2/access.log"):
       ~$ tail -f /var/log/apache2/access.log

  • GESTIÓN DE MÓDULOS:
    Para poder agrupar y modularizar ciertos funcionamientos del servidor, estos se dividen en módulos. Será necesario activar los módulos que vayamos a utilizar (si no están activos aún).
    El motivo de no estar todos activados por defecto es porque no toda instalación requiere de las mismas funcionalidades. Si fueran incluidas todas las funcionalidades posibles entonces Apache sería sumamente pesado en cuanto a requerimientos de Memoria RAM y espacio en Disco Duro.
    Existen dos tipos de módulos:
    • Los incluidos en el propio código fuente de Apache (Ejemplo: "Virtual Hosting","Rewrite",...).
    • Los distribuidos por terceros desarrolladores (Ejemplo: Mod_JK (Java),...).
    Podemos ver una lista de los principales módulos disponibles para Apache, así como una descripción de cada uno, en ésta web.
    Para ver los módulos que hay activados haremos en una Terminal:
     ~$ apache2ctl -l 
    Para activar un módulo que no está cargado haremos:
     ~$ a2enmod NOMBRE-MODULO
    Para desactivar un módulo que se encuentra cargado haremos:
     ~$ a2dismod NOMBRE-MODULO

  • GESTIÓN DE htaccess:
    Los htaccess son ficheros ocultos que contienen una serie de directivas o condiciones a cumplir por el servidor respecto al sitio en el que se incluyen. Es decir, junto a los ficheros de una web podemos añadir un fichero llamado ".htaccess" (así como otros que lo complementen), y según su contenido podremos:
    • Impedir listados del contenido del directorio
    • Redireccionar el trafico web hacia otro lugar
    • Crear mensajes de error personalizados
    • Dar seguridad extra a la web
    • ...

  • CONFIGURACIÓN DE DOMINIOS VIRTUAL:
    Por defecto, Apache usa como dirección propia del equipo el nombre del propio equipo (o la IP) y busca la página de inicio de la web alojada en el directorio "/var/www" (o el que configuramos como raiz en pasos anteriores).
    Si queremos usar otro nombre (también llamado dominio) o incluso varios, así como alojar diversas web en el servidor, tendremos que configurar un virtualhost para cada dominio. Es decir, Apache tomará cada sitio web como si se tratara de un sitio virtual que no tiene nada que ver con los demás.
    Para hacerlo debemos asegurarlos que el módulo "mod_proxy.c" está cargado y, si no lo está, cargarlo siguiendo los pasos indicados anteriormente.
    Una vez sabemos que el módulo "mod_proxy.c" está cargado, para crear diferentes virtualhost haremos lo siguiente desde una Terminal:
    1. Vamos al directorio donde se creará el fichero de configuración para cada virtualhost:
       ~$ cd /etc/apache2/sites-available/
    2. En dicho directorio creamos un fichero de configuración con extensión ".conf" para el primer dominio a configurar:
       ~$ vim mipaginaweb.conf
    3. Dentro del fichero incluimos el siguiente contenido:
      <virtualhost *="">
              DocumentRoot /var/www/mipaginaweb.com 
              ServerName www.mipaginaweb.com 
              ServerAdmin admin@mipaginaweb.com 
              ErrorLog /var/www/mipaginaweb.com/log/error_log 
              CustomLog /var/www/mipaginaweb.com/log/access_log combined 
      </virtualhost>
      <directory "="" mipaginaweb.com"="" var="" www="">
              AllowOverride All 
      </directory>
      Donde:
      • <virtualhost *>...</virtualhost> --> Indica que todas las direcciones IP asignadas a Apache serán utilizadas para soportar los Host Virtuales. Es decir, que sea cual sea la dirección del equipo local, el dominio seguirá direccionando hacia la web indicada
      • DocumentRoot /var/www/mipaginaweb.com --> Es el directorio desde donde se servirán los documentos web.
      • ServerName www.mipaginaweb.com --> Indica el nombre por el cual responderá su sitio web, es decir el dominio (tambien se puede especificar algún puerto de escucha).
      • ServerAdmin admin@mipaginaweb.com --> Especifica la dirección de e-mail del administrador del sitio web.
      • ErrorLog /var/www/mipaginaweb.com/log/error_log --> Es el fichero donde se registrarán los errores para dicha página web.
      • CustomLog /var/www/mipaginaweb.com/log/access_log combined --> Especifica el fichero donde se anotan las peticiones hechas al servidor y el tipo de anotación (combinada).
      • <Directory "/var/www/rodmen.com">... -->Permite especificar diversas configuraciones añadidas al sitio web indicado.
      • AllowOverride All --> Permite que todas las directivas incluidas e los ficheros "htaccess" sean aplicadas (también podríamos haber usado "AllowOverride None" para que fueran ignoradas).
      Asegurate que la ruta incluida en la configuración coincide con la ruta donde se aloja la web.
    4. Guardamos y salimos del fichero.
    5. Habilitamos el virtualhost creado:
      NOTA: Recuerda que está en el directorio que contiene el fichero de configuración del virtualhost.
       ~$ a2ensite mipaginaweb.conf 
    6. Repetimos el proceso para cada virtualhost que deseemos crear.
    7. Recargamos Apache:
       ~$ /etc/init.d/apache2 reload
    Listo. Ahora podemos probar desde el navegador web que los dominios que acabaos de configurar funcionan.
    Si deseamos desactivar un virtualhost haremos desde una Terminal:
     ~$ a2dissite mipaginaweb.conf
    Y luego recargamos Apache (mediante "/etc/init.d/apache2 reload").



Salu2,
elSant0

ALGUNOS ARTICULOS RELACIONADOS

2 comentarios:

Anónimo dijo...

Vaya men, gracias por tu ayuda. eres lo maximo.

Publicar un comentario

Escribe aquí tus valoraciones, dudas, sugerencias,... Son sólo unos instantes y ayuda a mejorar el blog.