Como instalar el servidor Apache y configurarlo en Ubuntu

En Tutoriales y Guías por

Tras leer varios tutoriales y guías sobre como instalar el servidor Apache en Ubuntu, la gran mayoría se puede resumir en dos líneas porque sólo muestran el proceso de instalación, saltándose por completo la configuración. En este tutorial no sólo vamos a mostrar cómo instalar el servidor Apache, sino que además mostraremos cómo configurarlo de forma correcta para no ver comprometida la seguridad, al mismo tiempo optimizaremos el consumo de recursos y explicaremos varios comandos útiles.

Como instalar el servidor Apache y configurarlo en Ubuntu

Instalar Apache será el primer paso para disponer en nuestro servidor de un entorno LAMP (Linux, Apache, MySQL, PHP) y este será el segundo de una serie de artículos destinados a configurar nuestro propio servidor para alojar un blog WordPress.

Antes de entrar en materia, debo aclarar que todos los pasos descritos en este tutorial los hemos probado en un servidor VPS con Ubuntu 16.04 LTS x64 y Ubuntu 14.04 LTS x64.

Como instalar el servidor Apache en Ubuntu.

Instalar Apache en Ubuntu es un proceso sencillo que podemos conseguir usando el administrador de paquetes apt. Necesitamos acceder a nuestro servidor a través de la consola, en nuestro caso emplearemos PuTTY para acceder a la terminal.

Como ya explicamos en un artículo anterior, debemos elegir si hacer una instalación por defecto o personalizada de Apache. Podéis ver las diferencias entre una y otra opción en el artículo sobre instalar entorno LAMP stack o personalizado en Ubuntu.

Instalación de Apache por defecto con los repositorios oficiales de Ubuntu.

Si decidimos hacer una instalación por defecto ejecutaremos los comandos:

sudo apt-get update
sudo apt-get install apache2

En el momento de escribir este artículo, con esta opción instalaremos la versión 2.4.18 de Apache. Con esta opción no instalaremos la última versión disponible, pero al emplear los repositorios oficiales de Ubuntu tendremos garantías de estabilidad.

Según he podido leer, la política de actualizaciones de paquetes de Ubuntu, sólo realiza una actualización cada seis meses a no ser que se trate de problemas de seguridad o funcionalidad graves, ya que en ese caso se actúa con la mayor brevedad posible.

Instalación de Apache personalizada empleando repositorios no oficiales.

También podemos optar por usar un repositorio personalizado, yo recomiendo encarecidamente emplear el repositorio PPA de Ondřej Surý, ya que este técnico es el encargado de las tareas de empaquetado de software en la distribución Debian.

Empleando este repositorio personalizado solemos tener disponible la última version de Apache. En el momento de escribir este tutorial está disponible la versión 2.4.20 que es la más reciente.

Si elegimos esta opción, el comando para instalar Apache es:

sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get install apache2

Una vez instalado Apache, podemos comprobar que se ha instalado correctamente accediendo a través del navegador a la dirección http://la_IP_del_servidor y se nos debería mostrar en pantalla algo parecido a la siguiente imagen.

pagina instalación servidor apache por defecto

En este punto ya podemos decir que Apache se ha instalado correctamente y ahora procedemos con la configuración de seguridad y optimización básica.

Configuraciones de seguridad y optimizaciones básicas de Apache.

Por defecto se instalará y activará el módulo mpm-event, pero en pasos posteriores, cuando instalemos PHP, el módulo multiprocesamiento cambiará automáticamente al módulo mpm-prefork, que será el que utilizaremos a lo largo de este tutorial.

Llegados a este punto, aconsejo leer detenidamente el artículo donde explicamos las diferencias entre los módulos multiprocesamiento Apache prefork, event y worker.

Como ya dijimos, por defecto se instalará y activará el módulo mpm-event y a pesar de que se cambiará automáticamente durante la instalación de PHP, vamos a aprender a cambiar entre módulos mpm y así dejaremos ya activado el módulo mpm-prefork. Ejecutamos los siguientes comandos:

  • Desactivamos el módulo mpm-event: sudo a2dismod mpm_event
  • Activamos el módulo mpm-prefork: sudo a2enmod mpm_prefork
  • Reiniciamos Apache: sudo service apache2 restart

Si nos fijamos brevemente, los comandos a2dismod y a2enmod nos permiten desactivar y activar módulos en Apache.

Para comprobar que efectivamente se ha cambiado el módulo mpm podemos ejecutar el siguiente comando que nos muestra que módulo multiprocesamiento mpm está activo en Apache: sudo a2query -M

Podéis examinar todas las opciones disponibles del comando a2query ejecutando el comando: sudo a2query -h

Otros comandos que nos pueden ayudar a configurar Apache son:

  • Mostrar los módulos activos de Apache: sudo apache2ctl -M
  • Mostrar los módulos estáticos de Apache: sudo apache2ctl -l

El comando apache2ctl dispone de más opciones, para consultar todas opciones disponibles debéis ejecutar el comando: sudo apache2ctl -h.

Configuraciones básicas de seguridad en Apache.

A continuación realizaremos varias modificaciones de los ajustes por defecto de Apache, para hacerlo un poco más seguro y no dar información útil a posibles usuarios malintencionados.

Lo primero será editar el archivo de configuración destinado a los ajustes de seguridad, para esto ejecutamos el comando:

sudo nano /etc/apache2/conf-enabled/security.conf

Dentro del contenido buscamos las variables ServerSignature y ServerTokens, de forma que sus valores queden como mostramos a continuación:
ServerTokens Prod
ServerSignature Off

Con la opción ServerTokens Prod sólo mostraremos en las cabeceras de las peticiones HTTP que nuestro servidor es Apache, sin mostrar versión ni sistema operativo.

Con la opción ServerSignature Off evitamos que se muestre un pie de página en los documentos generados por el servidor. Estos pies de página incluyen la versión del servidor y sistema operativo, por ello es aconsejable mantener estos datos ocultos.

Optimización básica de Apache.

A continuación realizaremos varias modificaciones en el archivo de configuración general de Apache para tratar de conseguir un mejor rendimiento.

Ejecutaremos el siguiente comando: sudo nano /etc/apache2/apache2.conf

Ajustaremos los valores de las siguientes variables como se indica a continuación:

Timeout 150
MaxKeepAliveRequests 150
KeepAliveTimeout 3

Sobre la opción KeepAlive recomiendo leer con calma el artículo donde explicábamos como optimizar KeepAlive en servidores Apache.

Realizaremos una última optimización deshabilitando un módulo que no usaremos y así evitamos que consuma recursos, se trata de mod_status que sólo nos muestra estadísticas del funcionamiento nuestro servidor. Para desactivar mod_status ejecutaremos el comando:

a2dismod status

Comandos para reiniciar, parar e iniciar Apache.

Para reiniciar/parar/iniciar Apache podemos emplear los comandos:

service apache2 restart
service apache2 stop
service apache2 start

También podemos emplear los comandos siguientes que son más informativos:

/etc/init.d/apache2 restart
/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Si lo que queremos es reiniciar únicamente la configuración de Apache, es suficiente ejecutar uno de los siguientes comandos:

service apache2 reload
/etc/init.d/apache2 reload

Hasta aquí por el momento, en el siguiente artículo explicaremos como instalar MySQL (MariaDB) en nuestro servidor. Han quedado algunas cosillas pendientes en la configuración de Apache, pero las veremos con calma cuando llegue el momento de instalar WordPress.

Para terminar, recomiendo tener siempre a mano la documentación de Apache, ya que es donde podemos encontrar la información más detallada y ordenada.