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:
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:
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
- 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:
1 2 3 4 5 6 7 | <!DOCTYPE html> <html> <body> <h1>Mis Sitios Web</h1> <p>Apache 2.4 funcionando estupendamente</p> </body> </html> |
- 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á:
1 2 3 4 5 6 | <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.
- 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
- 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:
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”:
Y activamos el sitio con “a2ensite missitiosweb2.conf”. Recargamos con “service apache2 reload”:
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.
Dos navegadores con los VirtualHost anteriores y accediendo por nombre de dominio.
NOTA: Licencia Creative Commons – Compartir,, no comercial