Configurar directivas de configuración en el servidor HTTP Apache

  El servidor HTTP Apache es un servidor web HTTP, es decir, un programa informático que procesa una aplicación del lado del servidor, realizando conexiones bidireccionales o unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una respuesta en cualquier lenguaje o aplicación del lado del cliente, de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual.
  Algunos usuarios informáticos empiezan a indagar las posibilidades de tener diferentes tipos de servidor en sus equipos, y experimentan de modo autodidacta o buscando quien les enseñe a gestionar sus propios servidores. Esta entrada es para esos emprendedores informáticos, y para otros que sepan más y deseen refrescar pequeños detalles del uso de este servidor web.
   Para este ejemplo sobre el uso de directivas en Apache, se usará el sistema operativo Ubuntu Server 16.04 LTS. Aquí se verá cómo configurar el Apache para que muestre la página web de inicio que desee el usuario y para cambiar la página de error predeterminada por otra al gusto del usuario.

  Para comenzar, si no se tiene instalado ya el Apache, puede hacerse, en Linux, mediante el comando sudo apt-get install apache2 (se debe actualizar antes la lista de paquetes con sudo apt-get update). En sistemas operativos Windows y Macintosh es mejor instalar un Xampp (o un Wampp o Mampp, según el sistema operativo), que ya tiene en su interior el Apache y no da tantos problemas de configuración como intentar instalar únicamente el servidor.
  Con el Apache funcionando, se comprueba que su página web por defecto es "index.html" escribiendo "http://localhost" en la barra de direcciones del navegador de internet. Esta página web está definida en una directiva escrita en el archivo "dir.conf" del módulo "dir" del servidor, y es heredada por el servidor virtual por defecto.
  Desde el terminal de Linux, se escribe sudo mv /var/www/html/index.html /var/www/html/indice.html para cambiarle el nombre al archivo predeterminado "index.html" por "indice.html". Habiendo hecho esto, se vuelve al navegador y se actualiza (o se vuelve a escribir "http://localhost" si previamente se ha salido del todo) para comprobar que, al no encontrar la página web predeterminada en el directorio raiz "/var/www/html", lo que hace es enseñar su contenido (gracias a la directiva "Options Indexes").
  Ahora, para hacer la siguiente prueba, se creará un archivo llamado "red.html" dentro del mismo directorio donde estaba el otro (con el contenido que el usuario crea oportuno). Esto puede hacerse con el editor Nano mediante el comando sudo nano /var/www/html/red.html, lo que abrirá el fichero vacío.
  Se rellena el archivo con las etiquetas básicas para una página web: <html>...</html>, <head>...</head>, <body>...</body> (si un usuario tiene más conocimientos sobre creación de páginas web puede añadir más cosas). Luego se cierra el archivo pulsando "Ctrl + x" y diciendo que sí cuando pregunte si se guardan los cambios. El fichero no estará realmente creado hasta que se cree de este modo.
  Seguidamente, se edita el fichero "000-default.conf" con el editor Nano. Como antes, se puede abrir directamente el fichero con un solo comando: sudo nano /etc/apache2/sites-available/000-default.conf (puede apreciarse que este fichero está relacionado con Apache; es uno de sus ficheros principales de configuración).
  Al contrario que el anterior, que había que escribirlo desde cero, este archivo está muy lleno. Se debe ir al final de todo y, tras la última línea, crear una sección de directiva "<Directory  /var/www/html > … </Directory>" con las siguientes directivas:
"DirectoryIndex red.html
Options Indexes FollowSymLinks Multiviews
AllowOverride None
Require all granted"
  Acto seguido, se guardan los cambios (pulsar teclas "Ctrl + o") y se sale del archivo (Ctrl + x). Para que los cambios tengan efecto, hay que reiniciar el servidor Apache, lo que se logra del mismo modo que para cualquier otro servicio, con el comando sudo service apache2 restart, o con el comando sudo /etc/init.d/apache2 restart.
  Si se abre el navegador y se va a "http:\\localhost", mostrará el contenido de la página web que el usuario ha creado.
  Antes de continuar, el lector debe comprender una cosa: la directiva recién creada contiene todas las directivas que determinan el modo en que el servidor Apache sirve el contenido de ese directorio, por lo que todos los directorios que estén dentro de "/var/www/html" heredarán su configuración.
  La configuración de la que se acaba de hablar puede sobreescribirse con otra directiva <Directory>.
  Antes de nada, se va a acceder a la ruta "/var/www/html" y se creará el directorio "datos" mediante el comando sudo mkdir datos (puede hacerse directamente desde otro lado, pero así hay menos probabilidades de error).
  Ahora se crea la nueva directiva <Directory> en el mismo archivo donde se creó la de antes bajo esta, pero sin definir la opción "Indexes", para que no liste el contenido del directorio si no encuentra los archivos definidos en "DirectoryIndex". La nueva directiva quedaría como sigue.


  Nuevamente se vuelve a reiniciar el servidor Apache para que los cambios tengan efecto. Luego se accede a "localhost" desde el navegador y se verá el archivo "red.html". Si se accede a "localhost/datos" aparecerá el error "403 Forbidden", ya que no hay ninguna página "index.html" y no está permitido el listado del directorio.

   Si se consulta el archivo "apache2.conf", alojado en "/etc/apache2/" puede comprobarse que, generalmente, el registro de errores de Apache se escribe en un fichero cuyo nombre suele ser "error.log", que suele tener un nivel de prioridad de advertencia ("warn" en inglés). Puede configurarse editando el archivo "000-default.conf" con Nano y buscando la línea "ErrorLog ${APACHE_LOG_DIR}/error.log", ya que está bajo la directiva "ErrorLog". Si se quiere consultar el archivo de errores sólo hay que utilizar el comando cat /var/log/apache2/error.log.
  Por otra parte, el registro de accesos de Apache se escribe en el archivo "access.log", como puede verse si se consulta el archivo "000-default.conf". Este registro, que funciona bajo la directiva "CustomLog", suele tener el formato predeterminado del servidor principal y se puede cambiar en la línea "CustomLog ${ APACHE_LOG_DIR }/access.log combined" del archivo en el que está. Para consultar el archivo de accesos se deberá utilizar el comando cat /var/log/apache2/access.log.
   Bien, todo esto sirve al usuario para poder cambiar la página de error del servidor por otra personalizada. En primer lugar, esto puede hacerse directamente editando el archivo "000-default.conf" con Nano, y añadiendo la directiva "ErrorDocument" para el código de error 404 (error de página no encontrada) del siguiente modo:
  Tras guardar y salir del archivo, se reinicia el servidor, se abre el navegador de internet y se accede a una página inexistente (en este ejemplo, "noesta.html") en el servidor escribiendo en la barra de direcciones "http://localhost/noesta.html". En el navegador de internet aparecerá algo así:


  Ahora se hará lo mismo pero en una página web que se creará en el directorio raíz del servidor principal. Usando Nano de nuevo, se creará la página web "no_encontrada.html" en la ruta "/var/www/html/" con el contenido que se desee (pero que haga referencia al error 404, naturalmente).
  Con la página creada, se vuelve a editar el archivo "000-default.conf", se busca la directiva "ErrorDocument 404" y se cambia el texto anterior por la ruta a la página que se acaba de crear.

   El resultado de estos cambios puede comprobarse desde el navegador de internet. Se escribe "http://localhost/noesta.html" en la barra de direcciones y se va al lugar.

  Espero que esta entrada del blog haya sido útil al usuario que se acaba de iniciar en el uso de Apache, y a aquellos que, aún siendo veteranos, desconocían los temas que aquí se tratan.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.