Apache Web Server:

  • El servidor web que de Red Hat es Apache Web Server.
  • En resumen, los servidores web gestionan peticiones URL hacia archivos almacenados localmente, utilizando Document Root (/var/www/html) como ruta inicial..
  • El servidor web asocia meta-datos con los archivos que se le solicitan, tales como fotos, vídeos, etc.
  • Cuando un usuario solicita un directorio en vez de un archivo, Apache muestra el archivo index.html (si existe), como fichero por defecto (esto se puede configurar para que pueda ser otro fichero), genera un listado de directorio generado en tiempo real (si está permitido), ó entrega un mensaje de error, generalmente error 404
  • Los servidores web y los ususarios, se comunican utilizando el protocolo HTTP
  • Normalmente la  información servida desde un servidor web, es estructurada utilizando el lenguaje de marcas HTM, aunque mediante modulos se incorporan otros lenguajes como php o ASP por ejemplo.

Instalación Servidor Web Apache:

 

Ejecutar:

[root@station ~]# yum install httpd

Dependencies Resolved

===================================================================

Package Arch Version Repository Size

===================================================================

Installing:

httpd i386 2.2.3-6.el5 rha-rhel 1.1 M

Installed: httpd.i386 0:2.2.3-6.el5

Complete!

 

Levantamos el Servicio:

  • En RHEL5, el servicio web se llama httpd
  • Se inicia con: service httpd start

[root@station ~]$ service httpd start

Starting httpd: [ OK ]

[root@station ~]$ chkconfig httpd on

Comprobamos la disponibilidad:

  • La disponibilidad del servicio puede ser probada con:
  • Navegador web por consola, local
  • Navegador web visual, local

Ejemplo:

[root@station ~]$ elinks -dump http://localhost

Red Hat Enterprise Linux Test Page

This page is used to test the proper operation of the Apache HTTP server

after it has been installed. If you can read this page, it means that the

Apache HTTP server installed at this site is working properly.

Esquema del Filesystem de Apache:

 
x

apache

apache

 

Document Root:

  • Carpeta raíz de todos los archivos del servidor web
  • Ruta por defecto: /var/www/html
  • Cuando un cliente solicita un directorio en vez de un archivo, Apache muestra el archivo index.html (si existe), genera un listado de directorio generado dinámicamente (si está permitido), ó entrega un mensaje de error

Logs de Apache ‏:

  • Estos archivos residen en /var/log/httpd
  • access.log proveee información de quién y dónde accedio en el servidor
  • error.log provee información acerca de los errores producidos, por ejemplo, la petición de un archivo     inexistente, o errores de debug los CGI, tales como PHP
  • Los Logs estan siempre solo en inglés

Configuración de Apache:

  • El directorio de configuración de Apache se encuentra en: /etc/httpd/conf
  • Archivo principal de configuración:

–/etc/httpd/conf/httpd.conf
–Utiliza una sintaxis similar al XML
–Cada línea que comienza por # es considerada un  comentario y no se ejecuta

Principales Directivas de Configuración:

  • Principales Directivas:

–DocumentRoot — Raíz de documentos contenidos en el servidor

  • Ej: DocumentRoot “/var/www/html”
–ServerRoot – Raíz de los archivos de configuración, error y log

  • Ej: ServerRoot “/etc/httpd”

–Listen – Dirección IP y puerto, o sólo puerto en el cual escuchar

  • Ej: Listen 80 — Escuchará en todas las direcciones IP del Server, en el puerto 80

–TimeOut – Tiempo que espera el servidor por un cliente que no responde (en segunos)‏

  • Ej: TimeOut 120

–KeepAlive – Aceptar o no conexiones persistentes

  • Ej: KeepAlive Off

–MaxKeepAliveRequest – Número máximo de conexiones persistentes (en el ejemplo 100)

  • Ej: MaxKeepAliveRequest 100

Extendiendo las configuraciones:
LoadModule e Include

 
  • El servidor web Apache es modular por diseño
  • El núcleo del servidor es en realidad pequeño y basico
  • Varios módulos proveen a Apache de muchas otras funcionalidades que lo convierten en el servidor web mas utilizado del mundo
  • Los módulos de Apache se sitúan en:

–/usr/lib/httpd/modules y se cargan con la directiva LoadModule

  • Ejemplo:

–LoadModule auth_basic_module modules/mod_auth_basic.so

  • Importante: Cada módulo añade nuevas directivas de configuración, es por eso utilizamos:
  • Include conf.d/*.conf

–Cargamos todos los archivos de este directorio terminados en .conf
–Podemos incluir nuestros propios archivos de configuración

Identidad del servidor: ServerName y ServerAdmin

 
  • Esta directivas establecen el nombre del servidor y el nombre del administrador del servidor
  • Se sitúan en: /etc/httpd/conf/httpd.conf

–Ej: ServerAdmin admin@dominio.cl
–ServerName www.dominio.cl

  • Si no especificamos ServerName, Apache lo determina automáticamente

Especificando el archivo índice de los directorios: DirectoryIndex

  • La directiva DirectoryIndex establece que archivo servir si un directorio es requerido por un cliente
  • Puede establecerse en /etc/httpd/conf/httpd.conf para todos los dominios o dentro de cada dominio virtual
  • Ejemplo

–DirectoryIndex index.html index.htm index.php

  • Tip: Puede establecerse un archivo según su ruta completa:

–DirectoryIndex /documentos/cgi/index.php

Personalizando contenido: Contenedores:

  • Apache permite personalizar las configuraciones, para directorios y archivos específicos
  • Los contenedores comienzan con un TAG de apertura XML, y terminan con un TAG de clausura XML
  • EJ:
–<Directory …>……

</Directory>

Ejemplo de Contenedores:

 

<Directory “/var/www/icons”>

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot /www/docs/dummy-host.example.com

ServerName dummy-host.example.com

ErrorLog logs/dummy-host.example.com-error_log

CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

Directivas de contenedores

  • Directory: Todos los archivos contenidos en el directorio dado, antes de que ocurra el mapeo de URL a nombre de archivo.
  • Location: Todos los archivos contenidos en el directorio dado, después de que ocurra el mapeo de URL a nombre de archivo.
  • Files: Todos los archivos que coinciden con el patrón, no importando si existen en el directorio o son URL.
  • VirtualHost: Todos los archivos servidor por un VirtualHost en particular.

Opciones Generales:

Estas directivas deben utilizarse dentro de las directivas contenedoras:

  • Indexes – Mostrar listado del directorio cuando una URL apunta a un directorio.
  • FollowSymLinks – Seguir los links simbólicos de los archivos.
  • Multiviews – Negocia el contenido entre el cliente y servidor, Habilita al servidor a servir documentos en el lenguaje apropiado para el cliente.
  • ExecCGI – Habilita la ejecución de CGI’s, dependiendo del ámbito en donde es llamada.

Control de acceso a clientes: Order, Allow, Deny

  • Apache permite al administrador definir restricciones de control de acceso directorio por directorio, e incluso archivo por archivo
  • Para esto utiliza listas de control de acceso Directiva Allow – Permite conectarse a los host

–EJ: Allow from especificacion_del_cliente

  • Directiva Deny: Deniega la conexión a los host

–EJ: Deny from especificacion_del_cliente

  • Directiva OrderBy: — Ordena qué leer primero, si Allow u Order

–Ej: Order Allow,Deny

 

Virtual Hosts

  • Apache puede simular ser muchos servidores web
  • Puede servir a diferentes sitios: sitio1.cl, sitio2.cl, etc.
  • Existen 2 acercamientos de Virtual Hosts

–Virtual Hosts basados en IP – Asigna un sitio a una IP
–Virtual Hosts basados en nombres – Múltiples sitios en una IP

Virtual Hosts basados en IP:

<VirtualHost 192.168.0.1>

ServerAdmin webmaster@republica.cl

ServerName www.republica.cl

DocumentRoot /var/www/republica.cl

ErrorLog logs/republica.cl-error_log

CustomLog logs/republica.cl-access_log common

</VirtualHost>

<VirtualHost 192.168.0.2>

ServerAdmin webmaster@sitio2.cl

ServerName www.sitio2.cl

DocumentRoot /var/www/sitio2.cl

ErrorLog logs/sitio2.cl-error_log

CustomLog logs/sitio2.cl-access_log common

</VirtualHost>

Virtual Host Basados en Nombres:

NameVirtualHost 192.168.0.2

<VirtualHost 192.168.0.2>

ServerAdmin webmaster@democrat.pol

ServerName www.democrat.pol

DocumentRoot /var/www/democrat.pol

ErrorLog logs/democrat.pol-error_log

CustomLog logs/democrat.pol-access_log common

</VirtualHost>

<VirtualHost 192.168.0.2>

ServerAdmin webmaster@libertarian.pol

ServerName www.libertarian.pol

DocumentRoot /var/www/libertarian.pol

ErrorLog logs/libertarian.pol-error_log

CustomLog logs/libertarian.pol-access_log common

</VirtualHost>

Especificación de lista de control (especificacion_del_cliente)‏

  • Dirección IP completa: 192.168.1.1 — sólo este cliente
  • Dirección IP Parcial: 192.168.1 – Todos los clientes que comiencen con esa IP
  • Red/Máscara: 192.168.1.64/255.255.255.192 – Todos los clientes de esa sub red
  • Notación CIDR: 192.168.1.0/24
  • Un dominio completo o parcial: .dominio.cl

Otras directivas

 
  • HostnameLookups – Resuelve el nombre de los clientes (On Off)‏
  • ErrorLog – Dónde guardar los archivos logs
  • LogLevel – Mensajes a registrar en los archivos logs (debug, info, notice, warn, error, crit, alert, message)‏
  • Alias – Crea un “alias” para un directorio

–Ej: /imágenes/ “home/usuario/imagenes”
Un libro con respuestas a sus preguntas:
El paquete httpd-manual

Otro Ejemplo de Dominios Virtuales.

 

NameVirtualHost *:80

<VirtualHost *:80>

ServerAdmin correo@admin1.cl

DocumentRoot /var/www/html/

ServerName www.sitio1.cl

ErrorLog logs/www.sitio1.cl-error_log

</VirtualHost>

<VirtualHost *:80>

ServerAdmin correo@admin1.cl

DocumentRoot /var/www/html/hosting1

ServerName www.sitio2.cl

ErrorLog logs/www.sitio2.cl-error_log

</VirtualHost> – See more at: http://redesytrucos.blogspot.com.es/2012/03/apache-servidor-web.html#sthash.5wknnxFm.dpuf