Actualizado el 21 de Marzo del 2018 (Publicado el 25 de Noviembre del 2017)
868 visualizaciones desde el 25 de Noviembre del 2017
169,0 KB
18 paginas
Creado hace 12a (26/03/2013)
Servidores Web – Apache
Aplicaciones Web/Sistemas Web
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid
Material bajo licencia Creative Commons
Esquema de funcionamiento de un servidor Web
web Servidor Web sencillo
Cliente
Navegador
Servidor Web
httpd
«request»
GET index.html
index.html
Busca página index.html
index.html
Repositorio
de páginas
Base de
datos
Juan Pavón - UCM 2012-13
Servidores Web- Apache
2
Esquema de funcionamiento de un servidor Web
web Servidor Web dinámico
Cliente
Navegador
Servidor Web
httpd
Intérprete PHP
(Genera HTML)
«request»
GET index.php
código
HTML
Busca página index.php
Consulta
index.php
Repositorio
de páginas
Base de
datos
Juan Pavón - UCM 2012-13
Servidores Web- Apache
3
Servidores Web
Apache
Microsoft-IIS
Nginx
LiteSpeed
Google Servers
Tomcat
Lighttpd
IBM Servers
Yahoo Traffic Server
Oracle Servers
Zope
Resin
Zeus
12/2012
63,90%
16,90%
13,90%
1,80%
1,30%
0,70%
0,50%
0,30%
0,20%
0,20%
0,10%
0,10%
0,10%
http://w3techs.com
Juan Pavón - UCM 2012-13
Servidores Web- Apache
4
Servidor HTTP Apache
Servidor HTTP libre, open source
http://www.apache.org/
Primera versión en 1995 (como sustituto del httpd de NCSA)
Apache Software Foundation (1999)
Ejecutable en varios sistemas operativos
Unix, FreeBSD, Linux, Solaris, Novell NetWare, OS X, Microsoft Windows
Permite múltiples lenguajes de script
PHP, Perl, Tcl, Python
Soporte J2EE
Con Tomcat (http://tomcat.apache.org/)
Virtual hosts
Un mismo servidor físico para varias IPs y nombres de dominio
Diseño modular
Se pueden crear nuevos módulos con el API de módulos de Apache
Configuración sencilla
Basada en directivas que se editan en ficheros: httpd.conf, access.conf
(en Unix), .htaccess, .htpasswd
Juan Pavón - UCM 2012-13
Servidores Web- Apache
Instalación de Apache - XAMPP
Instalación con XAMPP
http://www.apachefriends.org/es/xampp.html
Apache con mySQL, PHP y Perl
Para Linux, Windows y Mac
• En Ubuntu: http://www.ubuntu-guia.com/2011/07/instalar-xampp-en-ubuntu.html
• En Windows: hay un autoinstalable
Arranque:
En Windows utilizando el panel de control que hay para gestionar los
distintos servicios: Inicio->Programas->XAMPP
En Linux: Ejecutando /opt/lampp/lampp start
Prueba: accediendo en el navegador a http://localhost (o lo que
es lo mismo http://127.0.0.1)
Hay varios ejemplos y herramientas accesibles
Juan Pavón - UCM 2012-13
Servidores Web- Apache
5
6
Advertencia de Seguridad sobre XAMPP
XAMPP está orientado a desarrollo y no tanto a producción
Riesgos de seguridad con XAMPP
El administrador de MySQL no tiene password
El demonio de MySQL es accesible desde internet
Los usuarios de Mercury y FileZilla (Windows) y ProFTPD (Linux) usan
passwords por defecto que son conocidos
• Por ejemplo en ProFTPD el password "lampp" para el usuario nobody
PhpMyAdmin es accesible desde internet
Los ejemplos se pueden acceder desde la red
MySQL y Apache en Linux se ejecutan bajo el mismo usuario (nobody)
Por ello, para producción es mejor instalar Apache y MySQL en
un servidor apropiado con una buena configuración de seguridad
Ver apéndice sobre configuración de apache2
Y lo primero es revisar la configuración de seguridad básica
Hay ayudas para Linux y Windows (ver la documentación)
Juan Pavón - UCM 2012-13
Servidores Web- Apache
Ejercicio: instalación y configuración de XAMPP
Instala XAMPP en tu computadora
Arranca los servidores Apache y MySQL
Prueba a acceder a la página principal (http://localhost)
Aplica las recomendaciones de seguridad que se explican en:
http://robsnotebook.com/xampp-security-hardening
Juan Pavón - UCM 2012-13
Servidores Web- Apache
7
8
Directorios y ficheros de trabajo con XAMPP
En Linux
/opt/lampp/htdocs/
/opt/lampp/bin/
/opt/lampp/bin/mysql
/opt/lampp/etc/httpd.conf
/opt/lampp/etc/my.cnf
/opt/lampp/etc/php.ini
/opt/lampp/phpmyadmin/config.inc.php
Directorio raíz de documentos
XAMPP commands home
MySQL monitor
Apache configuration file
MySQL configuration file
PHP configuration file
phpMyAdmin configuration
En Windows se pueden encontrar los ficheros en el directorio
que se accede con:
Inicio->Apache Friends->XAMPP->XAMPP htdocs folder
Juan Pavón - UCM 2012-13
Servidores Web- Apache
9
Ejercicios
Localiza cual es el principal directorio para los contenidos web
(en principio, por defecto se llama htdocs)
Crea un fichero "prueba.html" en ese directorio y comprueba que
se accede correctamente con el URI
"http://localhost/prueba.html"
Crea otro fichero "prueba.php" en ese directorio y prueba que se
ejecuta correctamente invocando el URI
"http://localhost/prueba.php"
Puedes usar un script sencillo como el siguiente:
<?php
echo 'Hola mundo';
?>
Se pueden crear nuevos subdirectorios
Coloca el fichero "prueba.html" en un subdirectorio "pruebas" en
htdocs y accede con el URI: "http://localhost/pruebas/prueba.html"
Juan Pavón - UCM 2012-13
Servidores Web- Apache
10
Directorios y ficheros de trabajo con XAMPP
Directorios para contenidos específicos
HTML (.html .htm): \xampp\htdocs
SSI (.shtml), Apache::ASP Perl (.asp): \xampp\htdocs
CGI (.cgi), PHP (.php), Perl (.pl): \xampp\htdocs y \xampp\cgi-bin
JSP (.jsp) y Servlets Java (.html): \xampp\tomcat\webapps\java
(requiere Tomcat)
Juan Pavón - UCM 2012-13
Servidores Web- Apache
11
Configuración del servidor Apache
El fichero de configuración de Apache es el httpd.conf
En el subdirectorio "conf" del directorio de instalación
httpd.conf es un fichero ASCII con las directivas de configuración
Tres bloques de directivas (pueden aparecer mezcladas)
Parámetros globales
Directivas de funcionamiento
Hosts virtuales
El ámbito de las directivas puede ser:
Global: el conjunto del servidor web
Sección:
• Un conjuntos de directorios o ficheros
• Un servidor virtual
Juan Pavón - UCM 2012-13
Servidores Web- Apache
12
Configuración del servidor Apache
Especificación de secciones:
<Directory>: un directorio y sus subdirectorios
<DirectoryMatch>: Un conjunto de directorios según una expresión regular
<Files>: Un conjunto de ficheros especificados mediante su nombre
<FilesMatch>: Un conjunto de ficheros según una expresión regular
<Location>: Ficheros determinados mediante la URL
<LocationMatch>: como Location, pero acepta en el nombre expresiones regulares
<VirtualHost>: Un host virtual
<IfDefine>: sólo se aplica si al arrancar el servidor existe un parámetro concreto
definido en la línea de comandos con la opción -D
<IfModule>: sólo se aplica si el módulo especificado se encuentra cargado
(mediante LoadModule) en el momento de arrancar el servidor
En caso de conflicto, el orden de precedencia es:
1. <Directory> y .htaccess
2. <DirectoryMatch> y <Directory>
3. <Files> y <FilesMatch>
4. <Location> y <LocationMatch>
<VirtualHost> se aplica siempre después de las directivas generales, por tanto un
VirtualHost puede modificar la configuración por defecto
Juan Pavón - UCM 2012-13
Servidores Web- Apache
13
Directivas de configuración básicas (httpd.conf)
Directivas globales
Dirección de instalación del servidor
• ServerRoot "/opt/lampp/apache"
Puertos y direcciones IP donde escuchará el servidor
• Listen 80
• Listen 192.168.1.44:8080
Carga de módulos
• LoadModule <módulo> <fichero_módulo>
Directivas principales (a nivel global o de sección)
Nombre y puerto del servidor
• ServerName localhost:80
Documento raíz
• DocumentRoot "/opt/lampp/htdocs"
Email del administrador (aparece con los mensajes de error)
• ServerAdmin postmaster@localhost
Incluir otros ficheros de configuración
Include "conf/extra/httpd-xampp.conf"
Juan Pavón - UCM 2012-13
Servidores Web- Apache
14
Arquitectura del servidor Apache
clientes
HTTP
Apache
Core
Módulo
Módulo
Módulo
Módulo
Módulo
Juan Pavón - UCM 2012-13
Servidores Web- Apache
15
Módulos Apache
Módulo base
Core: Funcionalidad básica (asignación de peticiones, gestión de
conexiones)
Módulos multi-proceso
mpm_common, perchild, prefork, worker: Acepta peticiones por los
puertos y las dirige a los hijos responsables
Módulos adicionales
mod_access: control de acceso
mod_alias: redirección de URLs
mod_rewrite - reescritura de direcciones (transforma páginas
dinámicas como php en páginas estáticas html)
mod_auth_ldap – Autenticación de usuarios con servidor LDAP
mod_perl - Páginas dinámicas en Perl
mod_php - Páginas dinámicas en PHP
mod_python - Páginas dinámicas en Python
mod_ruby - Páginas dinámicas en Ruby
mod_ssl - Comunicaciones Seguras vía TLS
mod_security - Filtrado a nivel de aplicación, para seguridad
Juan Pavón - UCM 2012-13
Servidores Web- Apache
16
Directivas de configuración de módulos (httpd.conf)
Los módulos específicos que se van a incluir se definen en la
configuración del servidor (httpd.conf) con la directiva LoadModule
Se pueden definir configuraciones en función de los módulos
cargados al arrancar el servidor:
<IfModule modulo>
Configuraciones específicas si está el módulo
</IfModule>
<IfModule !modulo>
Configuraciones específicas si no está el módulo
</IfModule>
# DirectoryIndex: indica el fichero que servirá Apache si no se
# especifica uno concreto (el orden determina la prioridad)
<IfModule !autoindex_module>
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>
</IfModule>
Juan Pavón - UCM 2012-13
Servidores Web- Apache
17
Directivas de control de acceso
Se pueden definir dentro de un fichero de configuración o de un
fichero de control de acceso en un directorio (.htaccess )
.htaccess se recomienda solo cuando no se tiene acceso al fichero de
configuración del servidor
Determinan quién tiene derecho
Comentarios de: Servidores Web – Apache (0)
No hay comentarios