Qué es Apache y cómo configurar un servidor web Apache en CentOS 6

Objetivos

Realizar una breve configuración del servicio de servidor web apache observando sus componentes principales y realizar el despliegue de un sitio web a través de este servidor.

El Servidor Web Apache

Apache es un servidor HTTP o servidor web de código abierto multiplataforma y muy flexible debido a que puede desplegar aparte de archivos html, aplicaciones web hechas en lenguajes de script tales como perl, python y php. Apache es un servidor web muy popular, tanto que en términos de cifras la cuota de mercado de lo servidores web mas usados hasta agosto de 2013 son Apache con un 46.96%, Microsoft Internet Information System con 22.75%, Nginx con 14.55% y Google App Engine con el 4.26%.

En esta guía se realizará la instalación de apache y una configuración básica mostrando su funcionamiento; también se desplegará un sitio web, el cual será esta misma guía en formato web.

Instalación Y Puesta En Marcha

En el proceso de instalación de CentOS 6.5 que se realizó el capítulo anterior se instaló todo lo que pertenencia a la sección de paquetes de Web Services (Servicios Web), por lo tanto el servidor apache ya está instalado. Sin embargo si se quisiera realizar una instalación posterior a la instalación del sistema operativo se realiza lo siguiente.

Para instalar el servidor apache se instalar el parque httpd, y en el caso de necesitar ejecutar scripts de perl, php o python se deben instalar los paquetes de mod-perl y mod-python y php; también esta el modulo mod-ssl para poder hacer uso del protocolo SSL (Secure Socket Layer) y php-mysql para realizar conexiones a la base de datos mysql desde php. Todo lo anterior se instala con los siguientes comandos.

yum install httpd
yum install mod-perl mod-python mod-ssl php php-mysql

Una vez instalado todo lo necesario, lo siguiente es activarlo como servicio; con chkconfig se habilitará apache para que arranque aun despues de reiniciar la máquina y con service se activará para la sesión actual.

service httpd start
chkconfig --level 35 httpd on

Después de activar apache como servicio se pueden realizar las pruebas para revisar que esté corriendo adecuadamente. La primera prueba seria usando el comando netstat para revisar que este corriendo en los puertos 80 y 443 y la otra es abrir un navegador web e intentar hacer una petición desde la barra de urls a localhost, 127.0.0.1 o a la dirección ip de la máquina.

Configuración Básica

Después de tener instalado y corriendo el servidor apache es recomendable realizar una configuración básica, para lo cual es primero hay que familiarizarse con el sistema de archivos y la estructura que tienen los ficheros de configuración de apache.

Todos los archivo de configuración de apache se encuentran en la ruta /etc/httpd/, dentro de la cual hay secciones a destacar como lo son la carpeta de logs que es donde van todos los registros de errores y accesos que genera y recibe respectivamente el servicio de apache; aunque esta carpeta esté aquí en realidad como muestra la imagen siguiente la carpeta esta en /var/log/httpd/. Ahora, dentro de la carpeta conf/ esta el archivo de configuración principal de apache (httpd.conf) el cual contiene toda la configuración del servicio, aunque esta puede ser divida en varios archivos para una administración mas fácil.

Dentro de la carpeta logs/ se puede ver que apache por defecto va almacenando cuatro tipos de registros; de acceso (access_log), de acceso por https (ssl_access_log), de error (error_log) y de errores por accesos por https (ssl_error_log) y al mismo tiempo divide estos archivos por fecha, específicamente por día.

Las funcionalidades de apache pueden ser extendidas por medio de módulos, los cuales se instalan en la carpeta modules/ pero para activarlos es necesario ir al archivo de configuración httpd.conf y dentro de la sección de modulos agregar la linea LoadModule seguida del nombre del módulo. Cada vez que agrega un módulo a apache es necesario reiniciar el servicio para que los cambios surtan efecto.

Apache por defecto trae un módulo activado llamado proxy_ajp_module el cual permite actualizaciones automáticas en el servidor apache, lo cual puede convertirse en una vulnerabilidad del sistema, por ello es mejor desactivarlo comentando la linea dentro de httpd.conf y mover el módulo de la carpeta modules/ a otra parte como se muestra a continuación.

Crear Un Alias

Apache tiene varias características útiles que facilitan el trabajo, como pueden ser los alias, los cuales permiten estructurar de manera coherente un sitio web; por ejemplo al tener una empresa su sitio web y quiere tener varias secciones como talento humano, la sección financiera entre otros dentro de su sitio web, lo podrían organizar de la siguiente manera.

Un alias lo que hace en realidad es permitir mapear o direccionar una URL a un directorio en particular. En esta guía se creará un alias, el cual contendrá el contenido de esta guia formateado como sitio web, para lo que realizarán los siguientes pasos.

Primero por seguridad se debe realizar una copia del archivo de configuración de apache httpd.conf, después de esto, se edita el archivo ingresando al final del archivo los datos pertenecientes al alias.

cd /etc/httpd/conf/
cp httpd.conf /respaldo-archivos/httpd.conf.201410201023
vim httpd.conf

Entre los datos mas importantes en la configuración del alias, en este caso está que el nombre que recibe el alias es /jfnietos y la ruta real de los archivos es /var/www/jfnietos/guia/.

Otro paso importante con respecto a la seguridad, son los permisos que se le dan a la carpeta contenedora de los archivos, como se puede ver en la imagen justo abajo, primero se muestra que la carpeta tiene derechos de lectura, escritura y ejecución para todo el mundo y además son propiedad del root, lo correcto seria crear usuarios únicos para cada sitio web independiente que no tenga derechos de root y con respecto a los permisos el usuario propietario debe tener todos los permisos y El grupo al que pertenece y otros deben tener solo permisos de lectura y ejecución.

Por ultimo se reinicia el servicio de httpd y se prueba su funcionamiento desde un navegador web entrando a localhost o a la dirección ip directamente, esto mas el nombre del alias que se creó.

Eliminar Alias Del Manual De Apache

Cuando apache está recién instalado usualmente viene con un manual el cual está configurado como un álias, el cual se puede ver desde un navegador como se puede apreciar en la imagen de abajo al entrar en la URL localhost/manual. Aunque es útil, otra de las tareas comunes de configuración básica es quitarlo, como se hará a continuación.

Primero la configuración de este álias no esta en el archivo de configuración principal si no, en un archivo aparte en la ruta /etc/httpd/conf.d/. En las imágenes siguientes se muestra su ubicación y su contenido.

cd /etc/httpd/conf.d/
vim manual.conf

El archivo de álias y el contenido de la carpeta del sitio web del manual se pueden borrar inmediatamente; la carpeta contenedora del manual esta en /var/www/. A continuación se muestran los comandos utilizados en el proceso y su resultado.

rm manual.conf
cd /var/www/
rm -rf manual/

Crear Un VirtualHost

Un servidor web puede ser conocido por varios nombres, lo que le permite hospedar varios sitios web; esta característica se configura con apache por medio de los VirtualHost que permiten ya sea por medio de direcciones ip diferentes o nombres de dominio identificar diferentes sitios web dentro de un mismo servidor o máquina.

Un VirtualHost se puede crear dentro del archivo de configuración httpd.conf, normalmente se colocan al final de este. En esta guía se creará un VirtualHost basado en nombre, aunque para que funcione realmente es necesario tener el nombre de dominio registrado en un servidor DNS; esta parte sera realizada en el siguiente capítulo de esta guía.

Como muestra la imagen siguiente el VirtualHost se crear dentro de una directiva llamada <VirtualHost *:80> en la que se declara que estará escuchando en cualquier dirección ip y en el puerto 80. Dentro se debe asignar un ServerName el cual es el dominio que se le asignará y un DocumentRoot que identifica cual es la carpeta contenedora de mas alto nivel de este sitio web.

Si se deseara crear un VirtualHost basado en ip entonces en la parte que dice *:80 se cambia el asterisco por la dirección ip que se le quiere asignar. Una vez realizado esto solo que da reiniciar el servicio de apache y recordar que si el dominio no esta registrado en el servidor DNS, no funcionará. El resultado de probar a través de un navegador sería el siguiente.