Servidor web¶
En este apartado configuraremos el servidor web apache y trabajaremos con sus ficheros de configuración.
Objetivos¶
Vamos a alojar en nuestro servidor 5 web distintas:
- gestionaplus.iaw.com
- cristaleswagner.iaw.com
- navescinco.iaw.com
- bibliopartyextrem.iaw.com
- astana.iaw.com
Si queremos que un cliente acceda a estas páginas tenemos que dar de alta el dominio iaw.com en los DNS o tocar el fichero /etc/hosts. En este caso tenemos en nuestro DNS apuntando a la dirección privada de virtualhost por lo que nuestra máquina resolverá *.iaw.com a la dirección correcta.
/etc/hosts¶
Este fichero existe por motivos históricos en todos los sistemas operativos, es previo al servicio DNS y es consultado antes. Prueba a escribir en el fichero para que la dirección estoesmiprueba.com
resuelva a la dirección 10.100.200.50
Haz ping:
ping estoesmiprueba.com
Instalación de apache¶
La instalaremos en nuestro servidor con los repositorios oficiales:
#siendo root
apt install apache2
También vamos a instalar una aplicación para mostrar el árbol de directorios de forma tabulada.
apt install tree
Con esto ya podremos visitar desde el cliente cualquiera de las páginas (gestionaplus.com, cristaleswagner.es, etc...) y veremos el primer HTML de apache.
Ficheros de configuración¶
Para entender la estructura de configuración de un servicio siempre es bueno ver qué ficheros hay dentro de su configuración, para ello trabajaremos con tree
tree -L 1 /etc/apache
El resultado es:
/etc/apache2/
├── apache2.conf
├── conf-available
├── conf-enabled
├── envvars
├── magic
├── mods-available
├── mods-enabled
├── ports.conf
├── sites-available
└── sites-enabled
A parte de las configuraciones generales podemos ver 3 bloques principales: configuraciones, módulos y sitios. Si mostramos con ls -l
dos directorios available y enabled podemos ver la idea que hay detrás.
Fichero configuración y web¶
Es MUY importante que en este punto te detengas a entender qué ficheros y carpetas vamos a usar ya que de no tenerlo claro cometerás muchos errores.
Los archivos más importantes para configurar un servidor apache son:
- los archivos de configuración -> /etc/apache2
- y los archivos web. /var/www
Los archivos de configuración están en /etc/apache
y hay varios subdirectorios con configuraciones específicas, los archivos web están en /var/www
. Esto quiere decir que la página que estas viendo está alojada bajo /var/www
.
Tarea¶
Desde el servidor ve a esa localización y cambia el HTML de esa web para mostrar otra información. Para no machacar el fichero index.html
de apache copialo a index2.html
y crea un index.html
nuevo con tu texto. A continuación visita la página para ver que funciona.
Espacio web vs ficheros¶
Es importante diferenciar entre los ficheros de disco y lo que el público de nuestra web puede observar. Muchas páginas actuales utilizan técnicas para tener URL significativas y muchas veces la petición no se corresponde ni siquiera con un fichero.
Ejemplo:
Archivos de configuración de apache¶
Los archivos de configuración de apache tienen formato parecido al XML. Hay directivas que están escritas como etiquetas XML y dentro de estas puede haber parámetro o a su vez más directivas:
Este es un fichero de ejemplo de configuración
<VirtualHost *:80>
DocumentRoot "/www/example2"
ServerName www.example.org
# Other directives here
<Directory "/www/example2">
Options +Indexes
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example2.error.log
CustomLog ${APACHE_LOG_DIR}/example2.access.log combined
</VirtualHost>
Creación de dos espacios web de prueba¶
Necesitamos tener un archivo de configuración de apache y una carpeta con el contenido web para cada cliente.
Dentro del servidor y por cada espacio web:
- /etc/apache/sites-available/00X-XXXXX.conf
- /etc/var/www/ESPCAIOWEBCLIENTE1
¿Cuáles son los permisos que deben tener los ficheros HTML del servidor?
Configuración de permisos¶
Todos los procesos GNU/Linux se ejecutan bajo un usuario y un grupo, más adelante veremos cómo hacer que apache se ejecute con otros permisos más restrictivos dependiendo del usuario. ahora de momento apache se ejecuta con los permisos del usuario www-data
Vamos a verificar que apache se ejecuta con estos permisos:
ps ax o user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm,group,gid | grep apache2
¿Dónde aparece esta información?
Tarea¶
Todo esto también es configurable... busca en los ficheros de configuración de apache2 dónde se configura el usuario de ejecución.
Tarea¶
Configuración de dos espacio web distintos:
- Deshabilita la configuración
000-default.conf
- Haz dos copias:
001.prueba1.conf
y002.prueba1.conf
- Configura cada copia con los siguientes parámetros:
- DocumentRoot: ruta a documentos HTML:
/var/www/prueba1
y/var/www/prueba2
- ServerName: La url del espacio web:
p1.iaw.villablanca.com
yp2.iaw.villablanca.com
- Logs propios
/var/log/apache2/pruebaX.access.log
y/var/log/apache2/pruebaX.error.log
- Cambia las X por el valor apropiado
- DocumentRoot: ruta a documentos HTML:
- Habilita los dos espacios con los comandos de apache
- Esto creará un link simbólico entre
sites-enabled
ysites-availibles
- Esto creará un link simbólico entre
- Recarga la configuración
- Verifica con el cliente que funciona pero antes configura la resolución de nombres.
Dentro del cliente:
- Si no tienes el DNS de iaw.com, da de alta en tu cliente (
/etc/hosts
) las redireccionesp1.iaw.com
yp2.iaw.com
Cabecera Host y directiva ServerName¶
ServeName: Esta directiva mira dentro de la cabecera Host para determinar qué espacio web mostrar. La vimos al comienzo de curso con las prácticas de nc
Configuración Apache: estándar vs .htaccess¶
Existen dos formas de introducir configuraciones en nuestros servidores virtuales: Configuración en archivos de apache y configuración con archivos del espacio web .htaccess
. Es importante que la configuración en los archivos de apache es más rápida de procesar al cargarse en el arranque de los servidores y no tener que leer ficheros en cada petición. También nos ofrece pleno control como administradores.
La otra forma de configurar apache es con ficheros .htaccess
, estos ficheros de configuración pueden estar en cada directorio del espacio web /var/www/loquesea
. Esto da permisos a los administradores de cada espacio para sobrescribir nuestra configuración de apache, aunque esta solo afectará a su server virtual. ¡Hay que configurar esto con cuidado!
Para permitir o deshabilitar la sobreescritura del .htaccess
tenemos varias directivas para hacer funcionar todo esto. Ver tutorial
En este pequeña pŕactica permitiremos en uno de los servidores virtuales archivos .htaccess
y en el otro no, lo haremos con la directiva AllowOverride
También entenderemos como funciona la directiva Directory
para aplicar solo configuraciones a sectores de la web.
Para mostrar todo esto tocaremos la opción Options +Indexes
Tarea¶
Revisa el texto anterior aclara los siguientes conceptos:
- Config apache vs .htaccess
- AllowOverride
- Directory y ficheros index.html
Tarea¶
Vamos a configurar lo siguiente:
Servidor virtual:
p1.iaw.com -> No permite .htaccess
Estructura web:
\ index.html (Hola mundo y enlace a docs)
\ NO SE PERMITE LISTAR FICHEROS EN LA RAÍZ
\ docs1
\ NO SE PERMITE LISTAR FICHEROS AQUÍ
\ pdf1.pdf
\ pdf2.pdf
\ pdf3.pdf
\ docs2
\ SE PERMITE LISTAR FICHEROS AQUÍ
\ pdf1.pdf
\ pdf2.pdf
\ pdf3.pdf
Servidor virtual:
p2.iaw.com -> Permite .htaccess
Estructura web:
\ index.html (Hola mundo y enlace a imgs)
\ NO SE PERMITE LISTAR FICHEROS EN LA RAÍZ
\ imgs1
\ NO SE PERMITE LISTAR FICHEROS AQUÍ
\ imagen1.png
\ imagen2.png
\ imagen3.png
\ imgs2
\ SE PERMITE LISTAR FICHEROS AQUÍ
\ imagen1.png
\ imagen2.png
\ imagen3.png
Para ampliar en la asignatura¶
Temas interesantes para investigar:
- Apache como Proxy inverso: https://httpd.apache.org/docs/trunk/es/howto/reverse_proxy.html
- Tuneando apache: https://httpd.apache.org/docs/2.4/misc/perf-tuning.html
- Autentificación y Autorización: https://httpd.apache.org/docs/2.4/es/howto/auth.html
- Información de estado: https://httpd.apache.org/docs/2.4/mod/mod_status.html