Servidor web/http con Apache 2.4

¿Quieres crear y mantener una página web en tu propio ordenador?

En el momento de escribir este artículo, hay tres grandes sistemas que podéis instalar para tener vuestro propio servidor web: IIS (Microsoft), Apache y Nginx. Del primero no voy a hablar porque se trata de un sistema propietario. Los dos siguientes son sistemas libres que podréis descargar y utilizar a discreción con licencia de uso GPL. La de Apache, la podéis leer aquí. Nginx me gusta mucho por su altísimo rendimiento y sencillez, pero lo dejo para otro artículo específico.

Aprovechando el relativamente reciente lanzamiento de la versión 2.4 de Apache y, aunque todavía hay millones de sitios bajo la 2.2, voy a aprovechar para invitaros a leer una guía paso a paso de montaje de servidor web con Apache2.4 y Ubuntu 14.04LTS Server (sin xwindows).

Puede parecer complicado evitar el uso del entorno gráfico, pero os garantizo que será más sencillo de lo que parece y, además, nos ahorraremos el consumo de recursos del modo gráfico de Ubuntu, que pesa lo suyo y empeora el rendimiento.

Esta versión de Apache 2.4 ha cambiado los archivos de configuración para hacer más sencilla la creación de VirtualHost y, aunque mantiene compatibilidad hacia atrás, conviene ir retocando los archivos de configuración de nuestras webs si tenemos la versión anterior.

Complejidad: Media. Requiere conocimientos técnicos para la instalación del sistema operativo- Intentaré usar terminología sencilla y referenciar aquellas partes más complejas.

Instalación manual de Apache2.4

Para la práctica que nos ocupa, vamos a utilizar una versión recién instalada y limpia de Ubuntu 14.04LTS Server. Tenéis aquí una guía paso a paso de instalación de Ubuntu.

Desde la terminal:

sudo su

Subimos a superusuario indicando la clave.

apt-get install apache2

Instala el servidor y prepara los directorios por defecto.

http://localhost

Nada más instalar el paquete, podremos probar a ver si funciona nuestro flamante servidor web. Abrimos cualquier navegador en cualquier equipo que forme parte de la misma red e insertamos en su barra de navegación la dirección IP del ordenador que tiene Apache. Si estamos usando máquinas virtuales, procedemos igual. Si estuviéramos usando un Ubuntu con entorno gráfico, podremos usar el propio navegador e indicar “localhost” en la barra.

Si la instalación es correcta, obtendremos una pantalla como esta:

Apache 2.4 funcionando

VirtualHost por defecto con Apache 2.4

Un poco más abajo encontraremos la estructura de directorios y la explicación de los archivos de configuración de Apache y sus módulos:

Apache 2.4 directorios por defecto

Árbol de directorios por defecto de Apache 2.4

Vamos uno por uno:

El propio archivo “apache2.conf” contiene instrucciones y explicación de cada archivo y directorio del servidor.

apache2.conf: Este es el archivo de configuración principal del servidor. Desde aquí se pueden configurar la mayoría de las opciones con las que cuenta apache para el servicio. Lee y ordena el resto de los archivos de configuración cuando arranca el servidor.

Ports.conf: Este archivo especifica los puertos de escucha de los hosts virtuales. Se agrega al archivo de configuración “apache2.conf”. Se agregan tantos “Listen numpuerto” como puertos queramos que escuche nuestro servidor.

Los directorios:

mods-enabled: Contiene configuraciones de módulos opcionales del servidor (seguridad, speedy, ssl, multiproceso) y los módulos en sí mismos. Están todos explicados aquí:

http://www.ducea.com/2006/05/30/debian-apache2-modules-appendix-3-extra-modules-available/

conf-enabled: Fragmentos de configuración global. Almacena archivos “.conf” que contienen parte de la configuración de apache.

Sites-enabled: Definiciones de los host virtuales del servidor Apache.

Creando nuestro primer VirtualHost

  1. En primer lugar, accedemos al directorio donde vayamos a almacenar los archivos web. Lo recomendable es usar el árbol de directorios por defecto e ir creando allí los directorios separados a los que se apuntará cuando definamos los VirtualHost que veremos en el siguiente punto.
cd /var/www/html/
mkdir misitioweb

Con estos dos comandos accedemos al directorio “html” y creamos el directorio “missitiosweb”. Ahora, preparamos un archivo “index.html” con la información básica que contiene una página de hypertexto:

nano index.html

Contenido:

<!DOCTYPE html>
<html>
   <body>
       <h1>Mis Sitios Web</h1>
       <p>Apache 2.4 funcionando estupendamente</p>
   </body>
</html>

  1. Dentro del directorio “sites-available” vamos a crear archivos con extensión “.conf” que incluirán la información necesaria para que Apache sirva las páginas a las que hace referencia el VirtualHost.
nano missitiosweb.conf

Podemos ponerle cualquier nombre siempre que respetemos la extensión “.conf”. En versiones anteriores de Apache no era necesario indicar extensión.

El contenido del archivo contendrá los valores del “virtualhost” que Apache procesará:


<VirtualHost *:80>
     ServerAdmin info@informaticacoslada.com
     ServerName www.missitiosweb.com
     DocumentRoot /var/www/html/missitiosweb/
     DirectoryIndex index.html
</VirtualHost>

El virtualhost responde desde cualquier IP (*) y escucha por el puerto 80.
ServerAdmin es una opción obligatoria e indica una dirección de correo electrónico del responsable del sitio
DocumentRoot apunta al directorio que aloja las páginas
ServerName Aquí anotamos el FQDN vinculado al sitio, es decir, el nombre de dominio que luego configuraremos en el servidor BIND9
DirectoryIndex indica el archivo de inicio definido por defecto.

  1.  Ahora debemos activar el nuevo sitio y recargar la configuración de Apache. Es sistema funciona enlazando de forma simbólica los .conf creados en el directorio “sites-available” hacia “sites-enable”. Los módulos activables y activados funcionan del mismo modo. Aunque se puede hacer a mano este enlace simbólico, es conveniente usar el comando “a2ensite archivo.conf” sustituyendo “archivo” por el nombre que acabamos de crear:
a2ensite missitiosweb.conf
service apache2 reload
  1.  Para comprobar que todo funciona, accedemos usando la dirección IP del servidor y el directorio donde está la web: “172.16.1.108/missitiosweb”

Mi máquina virtual con apache está en la IP referida arriba. La siguiente captura os muestra la web funcionando en esa dirección:

Mis Sitios Web

Variaciones

Podemos tener tantos VirtualHost como necesitemos e, incluso, configurar Apache para que escuche usando otros puertos. El cambio de puerto es imprescindible si vamos a tener sólo un dominio pero queremos que se sirvan varios sitios diferentes sobre el mismo.

Para obligar a Apache a escuchar otros puertos, se los tendremos que especificar en el archivo “ports.conf” localizado en “/etc/apache2/”.

Por ejemplo, para que escuche en el puerto 82 bastaría con añadir “Listen 82” en “ports.conf”.

Ahora creamos un nuevo archivo “.conf” en “sites-available”:

Mis Sitios Web 2

Y activamos el sitio con “a2ensite missitiosweb2.conf”. Recargamos con “service apache2 reload”:

missitiosweb2

BIND9 Servidor DNS

Para poder acceder al contenido utilizando nombres de dominio vamos a tener que configurar un servidor de nombres encargado de las zonas que necesitemos.

Sólo tenemos que añadir las zonas maestras y los registros A directos e inversos y recargar la configuración de BIND9.

Después, agregamos la IP del servidor dns a todos los ordenadores que vayan a utilizar los dominios con objeto de que puedan resolver la IP del servidor web. También podemos modificar el archivo “hosts” apuntando la dirección IP correspondiente.

Podemos cargar BIND9 en el servidor con Apache o en cualquier otro servidor o máquina virtual disponible. De hecho, la configuración habitual es tenerlos por separado con objeto de no cargar al servidor con varios servicios.

En un próximo post os explicaré paso a paso la configuración BIND9.

Apache con Bind

Dos navegadores con los VirtualHost anteriores y accediendo por nombre de dominio.

Web Segura con cifrado SSL En el siguiente post os explicaré paso a paso cómo configurar un Apache para que sirva el contenido con cifrado SSL. Pero eso lo dejamos ya para mañana.

NOTA: Licencia Creative Commons – Compartir,, no comercial

    Sugerencias y dudas

    ¿Quieres añadir alguna sugerencia?

    ¿Would you like to ask something or tell us what you think about us?

    ¿Te gustaría cambiar algo de esta web?

    Would you like to change something in this site?

    ¿Quieres publicar algo aquí?

    Would you like to publish a post in this blog?

    Si tu respuesta es afirmativa, recuerda que tienes que especificar tu email en el recuadro inferior para que podamos enviarte el formulario.

    Si quieres, puedes indicar un email para que te respondamos

    You can add an email where we can send our reply

    Para minimizar que los bots usen este formulario, por favor, inserta el siguiente código en el recuadro
    In order to void the internet bots to use this form, please, insert the code in the square

    Para usar CAPTCHA, tienes que tener instalado el plugin Really Simple CAPTCHA.

    Código:


    Usted consiente, a través de la marcación de la presente casilla, al tratamiento de sus datos con las finalidades descritas en la Política de Privacidad.

    Usted declara, a través de la marcación de la presente casilla, bajo su propia responsabilidad, tener cumplidos los catorce años de edad, respondiendo de manera exclusiva y personal de la veracidad de dicha declaración y asumiendo, por ende, las posibles responsabilidades legales al respecto.

    Usted consiente, a través de la marcación de la presente casilla, para la recepción de comunicaciones comerciales y de cortesía relacionadas con nuestra entidad a través del teléfono, correo postal ordinario, fax, correo electrónico o medios de comunicación electrónica equivalentes.

    .