Hola compañeros de la shell,
En esta entrada vamos a revisar las modificaciones que requiere un servidor apache recién instalado para ser capaces de servir ficheros bajo directorios definidos en el fichero de configuración conf/httpd.conf
La versión Apache que hemos utilizado es la 2.4.41.
Antes de nada, siempre es recomendable leer la documentación que ofrece Apache:
https://httpd.apache.org/docs/2.4/configuring.html
Como se indica en la documentación, es importante destacar que, en caso de que quisiéramos usar variables de entorno en las directivas de configuración, podremos hacerlo mediante la sintaxis:
${VAR}
Antes de arrancar httpd, procedermos a generar el usuario y las credenciales de autenticación que utilizará apache para servir el contenido del directorio que deseamos compartir:
htpasswd -bc /tmp/httpd-2.4.41/htpasswd_prueba prueba passprueba
En caso de error al ejecutar el comando htpasswd revisar el apéndice al final de la entrada.
La ejecución de este comando generará un fichero htpasswd_prueba en la ruta /tmp/httpd-2.4.41 que contendrá el usuario prueba y la password passprueba encriptada:
cat htpasswd_prueba prueba:$dofur1$cCODrM38$yCQlbdtAHv8M/T3zKdhR81
A continuación indicamos las directivas a modificar en el fichero conf/httpd.conf para permitir el acceso al usuario prueba al directorio /tmp/httpd-2.4.41/prueba:
ServerRoot "/tmp/httpd-2.4.41"
Listen HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE
ServerName HOST_EN_QUE_TENEMOS_APACHE
DocumentRoot "/tmp/httpd-2.4.41/htdocs"
<Directory "/tmp/httpd-2.4.41/htdocs">
# Directorio a compartir con el usuario prueba
<Directory /tmp/httpd-2.4.41/prueba/>
Options +Indexes +FollowSymLinks
IndexOptions +FancyIndexing +HTMLTable +SuppressDescription +NameWidth=*
IndexOrderDefault Descending Date
AllowOverride Limit
#Autenticacion usuario prueba
AuthName "Usuario prueba"
AuthType Basic
AuthUserFile /tmp/httpd-2.4.41/htpasswd_prueba
Require valid-user
</Directory>
Una vez realizadas las modificaciones en conf/httpd.conf (siempre que se realicen cambios en el fichero de configuración es necesario reiniciar los servicios httpd), arrancamos apache mediante:
httpd -k start -f /tmp/httpd-2.4.41/conf/httpd.conf
En caso de error al ejecutar el comando httpd revisar el apéndice al final de la entrada.
Finalmente, para comprobar que tenemos acceso al directorio /tmp/httpd-2.4.41/prueba pegaremos en nuestro navegador la URL (siendo HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE los definidos anteriormente en el fichero conf/httpd.conf)
http://HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE/prueba/
Una vez realizado este paso, nuestro navegador nos mostrará la ventana en la que nos solicitarán usuario y password para poder acceder al contenido del directorio /tmp/prueba
Apéndice:
Puede darse el caso de que al ejecutar httpd o htpasswd nos encontremos errores del tipo:
httpd -k stop -f /tmp/httpd-2.4.41/httpd.conf httpd: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
En estos casos, el origen del problema se encuentra en que hay librerías de apache que no están incluidas en la variable LD_LIBRARY_PATH.
Para solucionar este tipo de problemas es necesario añadir los paths que contienen estas librerías, sea incluyendo las rutas en el .profile del usuario o mediante un script intermedio a modo de wrapper que las añada antes de ejecutar el comando deseado. A modo de ejemplo:
APACHE_BINS=/tmp/httpd-2.4.41/bin APACHE_LIBS=/tmp/httpd-2.4.41/lib PATH=$APACHE_BINS:$PATH LD_LIBRARY_PATH=$APACHE_LIBS:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH
Espero que os sirva.
Nos vemos al otro lado de la pantalla negra.
