Instalar un servicio HTTP#

Práctica Completa

Esta es la práctica final del tema Servicios Web (HTTP) . Puedes usar cualquier servidor y cualquier sistema operativo. Para ver los pasos que hay que hacer lo he concretado en el uso de apache sobre Debian 10.

Se trata instalar un servidor http de acceso público en tu máquina.

Requisitos Previos

  1. Tienes tu máquina instalada y con acceso remoto

    Acceder a un servidor remoto

  2. Tienes tu servidor http ya instalado

    > apt-get install apache2
    
  3. Tienes tu cliente http en consola ya instalado (p.ej lynx)

    > apt-get install lynx
    
  4. Puedes acceder en local (localhost / 127.0.0.1)

    > systemctl status apache2
    (...)
    > lynx localhost
    (... navegas en modo texto en local)
    

Configuración Básica#

  1. El contenido web estará en /var/www/mi_web

DocumentRoot /var/www/mi_web
  1. El log de acceso estará en /var/log/mi_log_acceso.log

CustomLog /var/log/mi_log_acceso.log combined
  1. El log del servidor estará en /var/log/mi_log_servidor.log

ErrorLog /var/log/mi_log_servidor.log
  1. Vas a revisar los campos del formato combined Tienes que saber qué es cada uno.

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
  1. Al archivo de índice de un directorio puede ser index.html index.txt index

DirectoryIndex index.html index.txt index
  1. Si no encuentra un recurso solicitado responde con el archivo 404.html, que estará en el directorio /codigos/404.html

ErrorDocument 404 /codigos/404.html
  1. Si el acceso a un recurso está prohibido, responde con el archivo 403.html, que estará en el directorio /codigos/403.html

ErrorDocument 404 /codigos/403.html
  1. Puedes descargarte algún repositorio de iconos de Internet y los pones en el directorio /var/www/mis_iconos . Este directorio se puede acceder desde <host>/iconos.

Alias /iconos /var/www/mis_iconos
  1. Cuando un usuario acceda a /m , lo rediriges a https://apod.nasa.gov/apod/astropix.html, así ves una foto chula del espacio

Redirect 302 /m  https://apod.nasa.gov/apod/astropix.html
  1. El directorio mis_iconos lo configurarás para que se pueda ver un listado de todos los archivos y directorios

<Directory /var/www/mis_iconos>
   Options +Indexes
</Directory>

Acceso, Autenticación y Autorización#

Vamos a trabajar sobre <host>/iconos , aunque podrías escoger cualquiera.

  1. Autoriza el listado de archivos en <host>/iconos . Sólo en este directorio, no en los demás

Options None
  (en el directorio principal y/o virtual host)

Option Indexes
  (en el directorio que quieras permitir el listado de archivos)
  1. Crear una base de datos de usuarios con dos usuarios (usuario1 y usuario2), con las claves correspondientes (clave1 y clave2)

> export ARCHIVO="/var/www/bd_usuarios" ; # Por ejemplo
> htpasswd -c $ARCHIVO usuario1
(...)
> htpasswd ${ARCHIVO} usuario2
(...)
> cat ${ARCHIVO}; # Para ver el contenido
  1. Dale permiso sólo al usuario1

AuthType Basic
AuthName "¿Quien eres?"
AuthBasicProvider file
AuthUserFile "/var/www/bd_usuarios"
Require user usuario1
  1. Dale permiso a cualquier usuario autenticado

Ídem anterior pero ... Require valid-user
  1. Prueba la autenticación con grupo

> echo "g1: usuario1 usuario2" > /var/www/bd_grupos;

Require group g1

(esto necesita que `esté habilitado el módulo mod_authz_groupfile`_

Comprobar

Y con esto, compruebas el funcionamiento desde un navegador. Puedes comprobarlo en http://cesareo.freeddns.org

Solución (Archivo Configuración)

Algunas distribuciones generan una estructura de archivos y configuración (por ejemplo Debian). He preferido configurar todo en un archivo único que creo que es mucho más claro httpd.conf