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
Tienes tu máquina instalada y con acceso remoto
Tienes tu servidor http ya instalado
> apt-get install apache2
Tienes tu cliente http en consola ya instalado (p.ej lynx)
> apt-get install lynx
Puedes acceder en local (localhost / 127.0.0.1)
> systemctl status apache2 (...) > lynx localhost (... navegas en modo texto en local)
Configuración Básica¶
El contenido web estará en /var/www/mi_web
DocumentRoot /var/www/mi_web
El log de acceso estará en /var/log/mi_log_acceso.log
CustomLog /var/log/mi_log_acceso.log combined
El log del servidor estará en /var/log/mi_log_servidor.log
ErrorLog /var/log/mi_log_servidor.log
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
Al archivo de índice de un directorio puede ser index.html index.txt index
DirectoryIndex index.html index.txt index
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
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
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
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
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.
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)
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
Dale permiso sólo al usuario1
AuthType Basic
AuthName "¿Quien eres?"
AuthBasicProvider file
AuthUserFile "/var/www/bd_usuarios"
Require user usuario1
Dale permiso a cualquier usuario autenticado
Ídem anterior pero ... Require valid-user
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.
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