SRI - 2º ASIR
INSTALACIÓN DEL SERVIDOR WEB APACHE EN UBUNTU
INDICE
1 – INSTALACIÓN DEL SERVIDOR APACHE............................................................................................................... 2
2 – ELEMENTOS DE LOS FICHEROS DE CONFIGURACIÓN ........................................................................................ 3
2.1 Directivas ....................................................................................................................................................... 3
2.2 Secciones o contenedores ............................................................................................................................. 3
2.3 Comentarios .................................................................................................................................................. 3
3 – ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS DE CONFIGURACIÓN................................................................... 4
3.1 Directorio /etc/apache2/ .............................................................................................................................. 4
3.2 Directorio /var/www/html/ .......................................................................................................................... 4
4 – FICHERO /etc/apache2/apache2.conf ............................................................................................................... 6
5 – FICHERO /etc/apache2/sites-available/000-default.conf ................................................................................. 9
5.1 Cambio del fichero índice por defecto ........................................................................................................ 10
1
SRI - 2º ASIR
1 – INSTALACIÓN DEL SERVIDOR APACHE
Antes que nada, actualiza el sistema operativo:
sudo apt-get update
A continuación, instala el servidor de Apache mediante el siguiente comando:
sudo apt-get install apache2
Comprueba que ya está instalado. Comprueba el estado desde la consola:
sudo service apache2 status
sudo systemctl status apache2
Tarea 1 – Realiza una captura del estado del servidor Apache 2 funcionando.
2
SRI - 2º ASIR
2 – ELEMENTOS DE LOS FICHEROS DE CONFIGURACIÓN
Dentro de los ficheros de configuración, se pueden encontrar los siguientes elementos:
2.1 Directivas
Compuestas por una palabra clave que identifica el comportamiento a cambiar y el valor al que se
modificará el parámetro. Veamos un ejemplo:
Listen 80
2.2 Secciones o contenedores
Permiten dividir el documento de configuración y conseguir que las directivas sólo se apliquen a una
parte del documento de configuración. Se configuran utilizando una notación similar a XML con una
etiqueta de apertura y otra de cierre. Por ejemplo:
<Directory /var/www/ejemplo.com>
Deny from all
Allow from 192.168.2.2
</Directory>
2.3 Comentarios
Líneas que comienzan con un carácter # que permiten realizar aclaraciones o en muchos casos sirven
como instrucciones para configurar el servidor o mostrar ejemplos de configuración.
# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
3
SRI - 2º ASIR
3 – ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS DE CONFIGURACIÓN
3.1 Directorio /etc/apache2/
Una vez instalado el servicio, nos encontramos con la siguiente estructura de directorios y archivos
dentro de /etc/apache2/:
• apache2.conf: Fichero de configuración general del servicio Apache2.
• conf-available: Directorio que contiene ficheros de configuración específica.
• conf-enable: directorio que contiene enlaces simbólicos hacia el directorio conf-available.
• envvars: fichero donde se asignan variables de entorno.
• magic: Instrucciones para determinar tipos MIME basándose en los primeros bytes de los archivos.
• mods-available: Directorio que contiene módulos adicionales y sus configuraciones.
• mods-enabled: Directorio que contiene enlaces simbólicos al directorio mods-available. Esta es la
carpeta donde se encuentran los módulos habilitados. Para habilitarlos se utiliza el comando
a2enmod.
• ports.conf: Fichero donde se configuran los puertos por los que escucha apache. Por defecto,
Apache escucha por el puerto 80, reservado para tráfico http y si el módulo que permite el cifrado
SSL está activado, quedará a la escucha del puerto 443, reservado para tráfico https.
• sites-available: Directorio que contiene los ficheros de configuración para los hosts virtuales. Cada
sitio virtual tiene su fichero de configuración aparte lo que facilita la gestión. Por defecto contiene
el fichero de configuración del sitio por defecto 000-default.conf.
• sites-enabled: Es la carpeta que contiene los enlaces simbólicos a los ficheros del directorio sites-
available, es decir, los sitios web “habilitados”. Para habilitarlos se utiliza la orden a2ensite que
genera el enlace simbólico del fichero *.conf desde el directorio sites-available al directorio sites-
enabled.
Tarea 2 – Comprueba que APACHE está escuchando en el puerto 80 y en el 443. Para ello, edita el
fichero ports.conf con un editor de texto y muestra una captura de pantalla. Puedes usar nano, cat o
gedit y haz captura de su contenido.
3.2 Directorio /var/www/html/
Aparte de la carpeta /etc/apache2/ también se ha creado la carpeta /var/www/html/.
Por defecto, Apache muestra las páginas web que están almacenadas en la carpeta /var/www/html/,
donde, en la instalación, se ha creado el archivo index.html, que será el que permita comprobar el
correcto funcionamiento justo después de instalarse.
Este directorio puede ser modificado cambiando los ficheros de configuración del servidor Apache y
recibe el nombre de DocumentRoot. En este directorio podemos crear nuevas carpetas donde ubicar
nuestras páginas web.
De este modo, si añadimos nuevas carpetas dentro de este directorio, se podrá acceder a ellas,
añadiendo a la dirección web los nombres de estas carpetas separados por una barra invertida /. En el
4
SRI - 2º ASIR
siguiente ejemplo, se puede ver una correlación entre las direcciones físicas y aquellas que se
mostrarían en la URL.
URL en el navegador Ruta física
www.ejemplo.com /var/www/html/index.html
www.ejemplo.com/tienda /var/www/html/tienda/index.html
www.ejemplo.com/tienda/configuración.html /var/www/html/tienda/configuración.html
Tarea 3 – Accede a la carpeta /var/www/html y abre el archivo index.html con un editor de textos y
muestra captura de pantalla de una parte del contenido.
5
SRI - 2º ASIR
4 – FICHERO /etc/apache2/apache2.conf
Es el fichero de configuración principal del servidor que puede contener directivas que modifiquen el
funcionamiento global del mismo. Este fichero utiliza referencias a otros ficheros de configuración
almacenados en /etc/apache2 que contienen aspectos concretos de la configuración del servidor.
Ofrece todas las posibilidades de configuración del servidor web. Sin embargo, para mejorar la claridad
en este fichero se suelen utilizar directivas Include, que permiten utilizar diferentes ficheros de
configuración.
Este fichero de configuración se suele dividir en tres secciones:
• La configuración global del Servicio.
• La configuración del servidor por defecto.
• La configuración de los hosts virtuales.
En la configuración global del servicio podemos configurar algunas opciones del funcionamiento
general de Apache. Algunos ejemplos de las opciones que pueden modificarse en esta sección son:
• Server Root: Directorio principal del servicio.
• Timeout: Número de segundos límite entre la petición del cliente y la respuesta del servidor.
• KeepAllive: Directiva que activa las conexiones TCP persistentes. Se permitirán múltiples peticiones
sin cerrar la conexión, evitando sobrecargar el servidor.
• MaxKeepAliveRequests: Número de peticiones máximas que se pueden realizar con una conexión
persistente. 0 indica peticiones ilimitadas.
• KeepAliveTimeout: Tiempo entre la finalización de una petición y otra antes de cerrar la conexión.
Cuando se alcanza este tiempo máximo la conexión se cerraría y se tendría que crear una nueva
conexión si el cliente realiza una nueva petición.
• ErrorLog: Fichero donde se almacenen los logs.
• LogLevel: Nivel de eventos que se registrarán en los logs.
• LogFormat: Formato del fichero de log.
• ErrorDocument: Página personalizada para mensajes de error.
• Include: Permite incluir otros ficheros en la configuración (por ejemplo, el fichero ports.conf).
A continuación, se muestra el contenido de apache2.conf básico:
6
SRI - 2º ASIR
# The directory where shm and other runtime files will be stored.
DefaultRuntimeDir ${APACHE_RUN_DIR}
# PidFile: The file in which the server should record its process identification number
when it starts.This needs to be set in /etc/apache2/envvars
PidFile ${APACHE_PID_FILE}
# Timeout: The number of seconds before receives and sends time out.
Timeout 300
# KeepAlive: Whether or not to allow persistent connections (more than one request per
connection)
KeepAlive On
# MaxKeepAliveRequests: The maximum number of requests to allow during a persistent
connection.
MaxKeepAliveRequests 100
# KeepAliveTimeout: Number of seconds to wait for the next request from the same client
KeepAliveTimeout 5
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
# ErrorLog: The location of the error log file.
ErrorLog ${APACHE_LOG_DIR}/error.log
# LogLevel: Control the severity of messages logged to the error_log. Available values:
trace8, ..., trace1, #debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
# Include list of ports to listen on
Include ports.conf
# Sets the default security model of the Apache2 HTTPD server. It does# not allow access
to the root filesystem outside of /usr/share and /var/www.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# AccessFileName: The name of the file to look for in each directory for additional
configuration directives. See also the AllowOverride directive.
AccessFileName .htaccess
# The following lines prevent .htaccess and .htpasswd files from being viewed by Web
clients.
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
7
SRI - 2º ASIR
Se observa que por defecto se prohíbe el acceso a cualquier carpeta del servidor:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
Y explícitamente si permite el acceso a las carpetas /usr/share/ y /var/www/:
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Tarea 4 – Accede al fichero /etc/apache2/apache2.conf y haz una captura de pantalla de la sección
donde se configuran los accesos a las distintas carpetas como acabamos de ver.
Dentro de las secciones de configuración de los directorios tenemos las siguientes opciones para la
directiva Options:
• All: Todas las opciones excepto MultiViews.
• FollowSymLinks: Se pueden seguir enlaces simbólicos. Podremos acceder a un archivo o directorio
externo al DocumentRoot, si se añade un enlace simbólico en alguna de las páginas ofrecidas. Hay
que tener cuidado con esta opción porque puede producir problemas de seguridad
• SymLinkssIfOwnerMatch: Una mejora de FollowSymLinks. Se pueden seguir enlaces simbólicos,
sólo cuando el fichero destino es del mismo propietario que el enlace simbólico.
• Multiviews: Negociación de contenidos. Permite ofrecer versiones de los contenidos (ficheros) de
nuestro sitio web dependiendo de ciertas condiciones. Se utilizaba mucho para ofrecer una página
en un determinado idioma, dependiendo del idioma del cliente que solicita el contenido.
• ExecCGI: Permite ejecutar scripts CGI usando el módulo mod_cgi.
• Indexes: Si está activa esta opción, cuando NO haya una página llamada index.html, Apache
devolverá un listado con los ficheros y directorios correspondientes a la ruta. Si no está activa esta
opción, saldrá un mensaje de error 403 Forbidden.
La directiva Require permite controlar el acceso al directorio, por ejemplo:
Require all granted #permite el acceso a todos
Require all denied #impide el acceso a todos
8
SRI - 2º ASIR
5 – FICHERO /etc/apache2/sites-available/000-default.conf
Como se ha comentado anteriormente, sites-available es la carpeta donde se encuentran los ficheros
de configuración de los sitios web configurados en el servidor apache. 000-default.conf es el fichero
de configuración del sitio por defecto.
Veamos su contenido:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
DirectoryIndex index.html
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ServerAdmin
Correo del administrador del servidor.
DocumentRoot
Indica la raíz de donde colgará nuestro sitio y donde estará el index.html.
DirectoryIndex
DirectoryIndex especifica el nombre de la página principal si no se especifica en la url. Por ejemplo, si
escribimos la url http://www.ies.org donde no se especifica el nombre de la página principal, Apache
asumirá que intentamos ver el fichero index.html del sitio ies.org.
Es decir, Apache actúa como si hubiéramos escrito http://www.ies.org/index.html, combinando los
valores de las directivas DocumentRoot y DirectoryIndex.
Se pueden especificar varios valores como, por ejemplo:
DirectoryIndex index.html index.php
En este caso, primero se intentará buscar un fichero llamado index.html y si no existe, buscará el fichero
index.php
Si tuviéramos una carpeta dentro de la carpeta raíz para guardar otro html para “Contacto”
http://www.ies.org/contacto/indexcontacto.html y en la url no se especifica la ruta completa
(http://www.ies.org/contacto), Apache asumirá que intentas ver el fichero *.html de la carpeta
contacto por lo que habrá que añadir un bloque para el directorio contacto:
<Directory /var/www/html/contacto>
DirectoryIndex indexcontacto.html
9
SRI - 2º ASIR
Tarea 5 – Accede al fichero 000-default.conf y haz una captura de pantalla del mismo. Indica o señala
cual es la raíz o carpeta, de la que colgará el contenido de nuestra página web.
Tarea 6 – Desde un navegador en otro equipo, escribe la dirección IP del servidor y comprueba que se
carga la página por defecto. Muestra una captura de pantalla.
5.1 Cambio del fichero índice por defecto
Vamos a cambiar el fichero index.html que se muestra por defecto en nuestro sitio web por uno
personalizado.
Haz una copia del fichero original:
sudo cp /var/www/html/index.html /var/www/html/index_modificado.html
Haz alguna modificación en el fichero index_modificado.html incluyendo tu nombre, para que se
aprecie que es tu fichero modificado.
Ahora modifica el fichero /etc/apache2/sites-available/000-default.conf para que incluya la siguiente
configuración para el directorio /var/www/html:
Reinicia el Servicio:
service apache2 restart
Tarea 7 – Accede desde un navegador web del cliente a la dirección IP del servidor y comprueba que
se está aplicando bien la configuración y se muestra la página por defecto modificada. Incluye una
captura de pantalla donde se vea la nueva página por defecto.
10