Apache.d4 admin web

5,350 views

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,350
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
169
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Apache.d4 admin web

  1. 1. ADMINISTRACION DE SERVIDORES LINUX ENTERPRISE Dictado por: Ing. Carlos Alcalá Helguero Consultas: [email_address] SERVIDOR WEB APACHE
  2. 2. SERVIDOR WEB APACHE <ul><li>TOPICOS CLASE 4: </li></ul><ul><li>SERVIDOR DE RESOLUCION DE NOMBRES DNS </li></ul><ul><ul><li>Introducción a Servidor Web </li></ul></ul><ul><ul><li>Instalación de Apache Web Server. </li></ul></ul><ul><ul><li>Creación del Certificado seguro SSL. </li></ul></ul><ul><ul><li>Configuración de directivas de ejecución: httpd.conf </li></ul></ul><ul><ul><li>Sitios Virtuales. </li></ul></ul><ul><ul><li>Introducción a PHP. </li></ul></ul><ul><ul><li>Instalación del modulo PHP5. </li></ul></ul><ul><ul><li>Configuración Post-instalación </li></ul></ul><ul><ul><li>Comprobación del servicio Web + SSL + PHP + Virtualhost </li></ul></ul><ul><ul><li>Solución de problemas frecuentes. </li></ul></ul>
  3. 3. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Conceptos básicos del servidor web </li></ul><ul><li>Un servidor Web es un programa que sirve para atender y responder a las diferentes peticiones de los navegadores, proporcionando los recursos que soliciten usando el protocolo HTTP o el protocolo HTTPS (la versión cifrada y autenticada). Un servidor Web básico cuenta con un esquema de funcionamiento muy simple, basado en ejecutar infinitamente el siguiente bucle: </li></ul><ul><ul><li>Espera peticiones en el puerto TCP indicado (el estándar por defecto para HTTP es el 80). </li></ul></ul><ul><ul><li>Recibe una petición. </li></ul></ul><ul><ul><li>Busca el recurso. </li></ul></ul><ul><ul><li>Envía el recurso utilizando la misma conexión por la que recibió petición. </li></ul></ul><ul><ul><li>Vuelve al segundo punto. </li></ul></ul><ul><li>A partir del anterior esquema se han diseñado y desarrollado todos los servidores de HTTP que existen, variando sólo el tipo de peticiones (páginas estáticas, CGIs, Servlets, etc.) que pueden atender, en función de que sean o no sean multi-proceso o multi-hilados, etc. A continuación se detallan algunas de las características básicas de los servidores web, que amplían, obviamente el esquema anterior. </li></ul>
  4. 4. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Servicio de ficheros estáticos </li></ul><ul><li>Todos los servidores web deben incluir, al menos, la capacidad para servir los ficheros estáticos que se hallen en alguna parte del disco. Un requisito básico es la capacidad de especificar qué parte del disco se servirá. No resulta recomendable que el programa servidor obligue a usar un directorio concreto, aunque sí puede tener uno por defecto. </li></ul><ul><li>La mayoría de servidores web permiten añadir otros directorios o subdirectorios para servir, especificando en qué punto del &quot;sistema de ficheros&quot; virtual del servidor se localizarán los recursos. </li></ul><ul><li>Algunos servidores web permiten también especificar directivas de seguridad (quién puede acceder a los recursos), mientras que otros hacen posible la especificación de los ficheros que se deben considerar como índice del directorio. </li></ul>
  5. 5. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Seguridad y autenticación </li></ul><ul><li>La mayoría de los servidores web actuales permiten controlar desde el programa servidor los aspectos relacionados con la seguridad y la autenticación de los usuarios. </li></ul><ul><li>Podemos, por ejemplo, tener la siguiente situación: </li></ul>/informe-2006 /home/estudiante/informe /docs /home/empresa/docs / /usr/local/apache/html Directorio web Directorio del disco
  6. 6. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Seguridad y autenticación </li></ul><ul><li>En este caso, el servidor debería traducir las direcciones web de esta manera: </li></ul><ul><li>El modo más sencillo de control es el facilitado por el uso de ficheros .htaccess . Se trata de un sistema de seguridad que deriva de uno de los primeros servidores web (&quot;NCSA httpd&quot;), que consiste en incluir un fichero de nombre .htaccess en cualquier directorio del contenido web que se deba a servir, indicando en este fichero qué usuarios o máquinas, etc. tienen acceso a los ficheros y a los diferentes subdirectorios del directorio donde está instalado el .htaccess. Como el &quot;NCSA httpd&quot; fue el servidor más utilizado durante mucho tiempo, la mayoría de servidores actuales permiten utilizar un fichero .htaccess respetando la sintaxis original del servidor de NCSA. </li></ul>/home/estudiante/informe/index.html /informe-2006/index.html /usr/local/apache /html/empresa/quienes.html /empresa/quienes.html /home/empresa/docs/manuales/producto.pdf /docs/manuales/producto.pdf /usr/local/apache /html/index.html /index.html Fichero de disco URL
  7. 7. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Contenido dinámico </li></ul><ul><li>Uno de los aspectos fundamentales del servidor web elegido es el nivel de soporte que ofrece para servir contenido dinámico. Puesto que la mayor parte del contenido web que se sirve no viene de páginas estáticas, sino que se genera de forma dinámica, y esta tendencia se mueve claramente al alza, el soporte para contenido de tipo dinámico que ofrece un servidor web es uno de los puntos críticos en la elección. </li></ul><ul><li>La mayor parte de los servidores web ofrecen soporte para CGI (se debe recordar que los CGI son el método más antiguo y sencillo para generar contenido dinámico). Otros muchos ofrecen soporte para algunos lenguajes de programación (normalmente lenguajes interpretados) como PHP, JSP, ASP, etc. </li></ul><ul><li>Es muy recomendable que el servidor web que vayamos a utilizar proporcione soporte para algunos de estos lenguajes, especialmente PHP, sin tener en cuenta JSP, que normalmente requerirá un software externo para funcionar (como un contenedor de Servlets). </li></ul><ul><li>La oferta es muy amplia, pero antes de elegir un lenguaje de programación de servidor se debe plantear si se desea un lenguaje muy estándar para que la aplicación no dependa de un servidor web o una arquitectura concreta o si, al contrario, la portabilidad no es prioritaria y sí lo es alguna otra prestación concreta que pueda ofrecer algún lenguaje de programación concreto. </li></ul>
  8. 8. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Servidores virtuales </li></ul><ul><li>Una prestación que gana aceptación y usuarios rápidamente, muy especialmente entre los proveedores de servicios de Internet y las empresas de alojamiento de dominios, es la capacidad de algunos servidores Web de facilitar múltiples dominios con una única dirección IP, discriminando entre los diferentes dominios alojados en función del nombre de dominio enviado en la cabecera HTTP. Esta prestación permite la administración racional y ahorradora de un bien escaso, las direcciones IP. </li></ul><ul><li>Si se necesitan muchos nombres de servidor (porque proporcionamos alojamiento o por cualquier otro motivo) debemos asegurarnos de que el servidor web elegido ofrezca esta facilidad y que el soporte que ofrece para servidores virtuales permita una configuración distinta para cada servidor. Sería perfecto que cada servidor se comportara como si fuese un ordenador diferente. </li></ul>
  9. 9. SERVIDOR WEB APACHE <ul><li>INTRODUCCION </li></ul><ul><li>Protocolos adicionales </li></ul><ul><li>Algunos servidores, no sólo atienden y sirven peticiones HTTP (y HTTPS), sino que pueden servir también peticiones basadas en otros protocolos o en protocolos implementados sobre HTTP. Algunos de estos protocolos pueden ser requisitos fundamentales de nuestro sistema (en función de nuestras necesidades) y decantar nuestra elección de un programa servidor. </li></ul>
  10. 10. SERVIDOR WEB APACHE <ul><li>INTRODUCCION APACHE WEB SERVER </li></ul><ul><li>Servidor Apache </li></ul><ul><li>El servidor HTTP Apache es un servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etcétera), Windows y otras, que implementa el protocolo HTTP/1.1 (RFC 2616) y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que originalmente Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor parcheado ). </li></ul><ul><li>El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. </li></ul><ul><li>Apache presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración. </li></ul><ul><li>En la actualidad (2006), Apache es el servidor HTTP más usado, siendo el servidor HTTP del 70% de los sitios web en el mundo y creciendo aún su cuota de mercado (estadísticas históricas y de uso diario proporcionadas por Netcraft). </li></ul>
  11. 11. SERVIDOR WEB APACHE <ul><li>INTRODUCCION APACHE WEB SERVER </li></ul><ul><li>Estadística 2006 </li></ul>
  12. 12. SERVIDOR WEB APACHE <ul><li>INTRODUCCION APACHE WEB SERVER </li></ul><ul><li>Historia de Apache </li></ul><ul><li>En febrero del año 1995, el servidor web más popular era un servidor desarrollado por el NCSA (National Center for Supercomputing Applications de la Universidad de Illinois). </li></ul><ul><li>Sin embargo, al dejar el principal desarrollador del servidor, Rob McCool, la NCSA en el año 1994, la evolución del programa había quedado seriamente comprometida. La responsabilidad del desarrollo recayó en los responsables de sitios web, que introdujeron mejoras progresivas en sus servidores. Un grupo de ellos, utilizando el correo electrónico como herramienta principal de coordinación, se pusieron de acuerdo para poner en común estas mejoras en forma de &quot;patches&quot; o parches. 2 de ellos, Cliff Skolnick y Brian Behlendorf, iniciaron una lista de correo, un espacio para compartir información y un servidor en California donde los desarrolladores más importantes pudiesen trabajar. A principios del año siguiente, 8 programadores fundaron lo que había de ser el Grupo Apache. </li></ul><ul><li>Éstos, utilizando como base de trabajo el servidor NCSA 1.3, incorporaron las correcciones de errores publicadas y las mejoras más importantes que encontraron y probaron el resultado final en sus servidores. Después publicaron lo que había de ser la 1a versión oficial del servidor Apache (la 0.6.2, en abril del año 1995). Casualmente, por esas fechas, la NCSA reemprendió el desarrollo de su servidor NCSA. </li></ul>
  13. 13. SERVIDOR WEB APACHE <ul><li>INTRODUCCION APACHE WEB SERVER </li></ul><ul><li>Historia de Apache </li></ul><ul><li>En aquel momento el desarrollo de Apache continuó por 2 líneas paralelas. Por un lado, algunos desarrolladores siguieron trabajando en el Apache 0.6.2 para llegar a la serie 0.7, incorporando diversas mejoras. Otro grupo reescribió por completo el código de la primera versión, creando una nueva arquitectura de tipo modular. En julio del año 1995 migraron a esta nueva arquitectura las mejoras desarrolladas para Apache 0.7, haciéndose público como Apache 0.8. </li></ul><ul><li>El día 1 de diciembre del año 1995, apareció Apache 1.0, que incluía abundante documentación y muchas mejoras en forma de módulos que se podían incrustar. Después, Apache sobrepasó al servidor NCSA como el más popular en Internet, posición que ha mantenido hasta hoy. En el año 1999 los miembros del Grupo Apache fundaron la Apache Software Foundation, que da soporte de tipo legal y financiero al desarrollo del servidor Apache y los proyectos relacionados que ha ido surgiendo. </li></ul>
  14. 14. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Existen 2 opciones principales para instalar Apache: compilar el código fuente o instalarlo a partir de un paquete binario apropiado para cada sistema operativo. </li></ul><ul><li>Descargar los fuentes </li></ul><ul><li>Para compilar Apache a partir de su código fuente, se debe obtener previamente de la web de Apache la versión más reciente ( http://httpd.apache.org ). </li></ul><ul><li>shell> wget http://mirrors.combose.com/apache/httpd/httpd-2.2.0.tar.gz </li></ul><ul><li>Descomprimimos el paquete obtenido previamente e ingresamos al directorio: </li></ul><ul><li>shell> cd /tmp </li></ul><ul><li>shell> tar xvfz httpd-2.2.0.tar.gz </li></ul><ul><li>shell> cd httpd-2.2.0/ </li></ul>
  15. 15. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Configuración de Fuentes </li></ul><ul><li>Configurar el código para su compilación. Para ello ejecutaremos: </li></ul><ul><li>$ ./configure </li></ul><ul><li>Existen algunos parámetros que permiten ajustar la compilación de Apache. Los más importantes son: </li></ul><ul><li>--prefix Directorio donde instalar Apache </li></ul><ul><li>--enable-modules=LISTA-MODULOS Módulos que se desean activar </li></ul><ul><li>--enable-mods-shared=LISTA-MODULOS Módulos shared que se desean que activar </li></ul><ul><li>--enable-cache Caché dinámica </li></ul><ul><li>--enable-disk-cache Caché dinámica en el disco </li></ul><ul><li>--enable-mem-cache Módulo de caché de la memoria </li></ul><ul><li>--enable-mime-magic Determinación del tipo MIME automática </li></ul><ul><li>--enable-usertrack Seguimiento de la sesión de usuario </li></ul><ul><li>--enable-proxy Módulo Apache-proxy </li></ul><ul><li>--enable-proxy-connect Módulo Apache-proxy para CONNECT </li></ul><ul><li>--enable-proxy-ftp Módulo Apache-proxy para FTP </li></ul>
  16. 16. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Configuración de Fuentes </li></ul><ul><li>--enable-proxy-http Módulo Apache-proxy HTTP </li></ul><ul><li>--enable-ssl Soporte de SSL/TLS (mod ssl) </li></ul><ul><li>--enable-http Manejo del protocolo HTTP </li></ul><ul><li>--enable-dav Manejo del protocolo WebDAV </li></ul><ul><li>--disable-cgid Soporte para CGI optimizado </li></ul><ul><li>--enable-cgi Soporte para CGI </li></ul><ul><li>--disable-cgi Soporte para CGI </li></ul><ul><li>--enable-cgid Soporte para CGI optimizado </li></ul><ul><li>--enable-vhost-alias Soporte de hosts virtuales </li></ul>
  17. 17. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Configuración de Fuentes </li></ul><ul><li>A continuación ejecutamos configure con algunas opciones especiales. </li></ul><ul><li>shell> ./configure --enable-ssl --with-ssl=/usr --enable-suexec </li></ul><ul><li>--with-suexec-docroot=/usr/local --enable-cgi --enable-rewrite </li></ul><ul><li>--enable-so --enable-logio --prefix=/usr/local/apache2 </li></ul><ul><li>--enable-module=most --enable-shared=max --bindir=/usr/bin </li></ul><ul><li>--sbindir=/usr/sbin --sysconfdir=/etc/httpd </li></ul><ul><li>(TODO UNA SOLA LINEA) </li></ul>
  18. 18. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Compilación de Fuentes e Instalación de Binarios </li></ul><ul><li>Nota : Se puede cambiar el comando configure para satisfacer sus necesidades. Escribir ./configure –help para obtener una lista de todas las opciones disponibles) </li></ul><ul><li>Luego se prosigue con la compilación de los fuentes: </li></ul><ul><li>shell> make </li></ul><ul><li>Se debe recordar que para compilar Apache se requiere, como mínimo, GNU Make y GNU CC. </li></ul><ul><li>A continuación si no se ha encontrado ninguna falla de compilación se procede a instalar los binarios resultantes del proceso de compilación: </li></ul><ul><li>shell> make install </li></ul><ul><li>Esto instalara Apache2 en el directorio /usr/local/apache2 . El directorio web principal es /usr/local/apache2/htdocs , el directorio de logs es /usr/local/apache2/logs, , el directorio de configuración es /etc/httpd . </li></ul>
  19. 19. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Comprobación inicial del Servicio </li></ul><ul><li>Una vez instalado, disponemos, dentro del subdirectorio &quot;bin&quot; dentro del directorio de instalación, el que hemos especificado con PREFIX (/usr/local/apache2), un script denominado &quot;apachectl&quot; que permite controlar el servidor. </li></ul><ul><li>Para iniciarlo: </li></ul><ul><li>shell> cd <PREFIX>/bin </li></ul><ul><li>shell> ./apachectl start </li></ul><ul><li>Luego accedemos a un navegador (Firefox en Linux) y accedemos a la dirección del servidor web local: http://localhost o http://127.0.0.1 , ambas que hacen referencia a la dirección de loopback (red virtual) de la maquina </li></ul><ul><li>Para detenerlo: </li></ul><ul><li>shell> cd <PREFIX>/bin </li></ul><ul><li>shell> ./apachectl stop </li></ul>
  20. 20. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Soporte de encriptación SSL </li></ul><ul><li>Si se desea levantar apache con soporte SSL es necesario generar el archivo /etc/httpd/ssl.crt/server.crt mediante el siguiente procedimiento: </li></ul><ul><li>Creamos el directorio temporal para los certificados y llaves: </li></ul><ul><li>shell> mkdir /etc/httpd/ssl.crt </li></ul><ul><li>Se genera la llave con encriptacion DES de 1024 bits: </li></ul><ul><li>shell> openssl genrsa -des3 -passout pass:asecretpassword –out </li></ul><ul><li>/etc/httpd/ssl.crt/server.key.org 1024 </li></ul><ul><li>Se genera la duración del certificado a 3650 días(10 años): </li></ul><ul><li>shell> openssl req -new -passin pass:asecretpassword -passout </li></ul><ul><li>pass:asecretpassword -key /etc/httpd/ssl.crt/server.key.org -out </li></ul><ul><li>/etc/httpd/ssl.crt/server.csr -days 3650 </li></ul><ul><li>Se genera el certificado: </li></ul><ul><li>shell> openssl req -x509 -passin pass:asecretpassword -passout </li></ul><ul><li>pass:asecretpassword -key /etc/httpd/ssl.crt/server.key.org -in </li></ul><ul><li>/etc/httpd/ssl.crt/server.csr -out /etc/httpd/ssl.crt/server.crt </li></ul><ul><li>-days 3650 </li></ul>
  21. 21. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Soporte de encriptación SSL </li></ul><ul><li>Generamos la llave del certificado del servidor: </li></ul><ul><li>shell> openssl rsa -passin pass:asecretpassword -in </li></ul><ul><li>/etc/httpd/ssl.crt/server.key.org -out </li></ul><ul><li>/etc/httpd/ssl.crt/server.key </li></ul><ul><li>Creamos un directorio para colocar las llaves del servidor: </li></ul><ul><li>shell> mkdir /etc/httpd/ssl.key </li></ul><ul><li>Movemos la llave creada al nuevo directorio y le damos permisos de solo lectura: </li></ul><ul><li>shell> mv /etc/httpd/ssl.crt/server.key /etc/httpd/ssl.key/server.key </li></ul><ul><li>shell> chmod 400 /etc/httpd/ssl.key/server.key </li></ul>
  22. 22. SERVIDOR WEB APACHE <ul><li>INSTALACION DE APACHE WEB SERVER </li></ul><ul><li>Soporte de encriptación SSL </li></ul><ul><li>( NOTA: Es seguro aceptar los valores por defecto en todas las preguntas que se vean cuando se crea /etc/httpd/ssl.crt/server.crt, dado que se mostrara una advertencia al momento de levantar el sitio Web, debido a que se esta usando un certificado autogenerado y que entornos de producción no tiene validez. </li></ul><ul><li>Si no se desea que se muestre una advertencia, es necesario comprar un certificado SSL &quot;real&quot; (que no es gratis). Se puede visitar uno de los siguientes sitios: </li></ul><ul><ul><li>http:// www.instantssl.com / </li></ul></ul><ul><ul><li>http :// www.verisign.com / </li></ul></ul><ul><ul><li>http :// www.thawte.com / </li></ul></ul><ul><ul><li>http :// www.baltimore.com / </li></ul></ul><ul><ul><li>http :// www.ipsca.com / </li></ul></ul><ul><ul><li>http :// www.entrust.com / </li></ul></ul><ul><ul><li>http :// www.geotrust.com / </li></ul></ul>
  23. 23. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>PHP es una tecnología del lado del servidor, que funciona embebida (es decir, incrustada) dentro del código HTML de una pagina, dándole mayor dinamismo a la misma, con acceso a bases de datos, creación de foros, libros de visita, rotación de banners, etc. Su sintaxis es heredada de C/Java y posee gran cantidad de funciones que permiten realizar todas las acciones que soporta el PHP. </li></ul><ul><li>Esta tecnología inició como un pasatiempo de Rasmus Lerdorf pero hoy en día, gracias a ser gratis, cuenta con miles de adeptos y actualizaciones muy constantes. Muchas empresas se han fijado en el potencial de PHP, y han dado su apoyo a esta, como es el caso de Zend, uno de los principales contribuyentes para el lanzamiento de la version 4 de este lenguaje. </li></ul><ul><li>La forma mas fácil de averiguar cuando una pagina es o no PHP, es verificando su extensión, que puede ser generalmente .php, .phtml, .php3, .php4 </li></ul><ul><li>PHP está siendo explotado con gran provecho alrededor de toda la red... </li></ul>
  24. 24. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>PHP es un lenguaje de programación usado generalmente para la creación de contenido para sitios web. PHP es el (acrónimo recursivo de &quot; P HP: H ypertext P reprocessor&quot;, inicialmente PHP Tools, o, P ersonal H ome P age Tools) es un lenguaje interpretado usado para la creación de aplicaciones para servidores, o creación de contenido dinámico para sitios web, y últimamente también para la creación de otro tipo de programas incluyendo aplicaciones con interfaz gráfica usando la librería GTK+. </li></ul><ul><li>Visión general </li></ul><ul><li>El fácil uso y la similaridad con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores experimentados crear aplicaciones complejas con una curva de aprendizaje muy suave. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y prácticas. </li></ul><ul><li>Debido al diseño de PHP, también es posible crear aplicaciones con una interfaz gráfica para el usuario (también llamada GUI), utilizando la extensión PHP-GTK. También puede ser usado desde la Línea de comandos, de la misma manera como Perl o Python puden hacerlo, esta versión de PHP se llama PHP CLI ( Command Line Interface ). </li></ul>
  25. 25. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Su interpretación y ejecución se da en el servidor, en el cual se encuentra almacenado el script, y el cliente sólo recibe el resultado de la ejecución. Cuando el cliente hace una petición al servidor para que le envíe una página web, generada por un script PHP, el servidor ejecuta el intérprete de PHP, el cual procesa el script solicitado que generará el contenido de manera dinámica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor, el cual se encarga de regresárselo al cliente. Además es posible utilizar PHP para generar archivos PDF, Flash, así como imágenes en diferentes formatos, entre otras cosas. </li></ul><ul><li>Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, IBM DB2, Microsoft SQL Server y SQLite; lo cual permite la creación de Aplicaciones web muy robustas. </li></ul><ul><li>PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos tales como UNIX (y de ese tipo, como Linux), Windows y Mac OS X, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI. </li></ul><ul><li>El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun Microsystems, y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador comercial llamado Zend Optimizer. </li></ul>
  26. 26. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Historia de PHP </li></ul><ul><li>PHP fue originalmente diseñado en Perl, seguidos por la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador Danés-Canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio del 1995 fue publicado &quot; P ersonal H ome P age Tools&quot; luego de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI. </li></ul><ul><li>Dos programadores israelíes de Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador gramatical ( parser en inglés) en el año 1997 y crearon la base del PHP 3, cambiando el nombre del lenguaje a la forma actual. Experimentaciones públicas de PHP 3 comenzaron inmediatamente y fue lanzado oficialmente en junio del 1998. </li></ul><ul><li>Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend. También conformaron a Zend Technologies en Ratmat Gan, Israel. En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El 13 de julio de 2004, PHP 5 fue lanzado, utilizando el motor Zend Engine II (o Zend Engine 2). </li></ul><ul><li>La versión más reciente de PHP es la 5.1, que incluye el novedoso PDO (Objetos de Información de PHP o PHP Data Objects) y mejoras utilizando las ventajas que provee el nuevo Zend Engine 2. </li></ul>
  27. 27. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Usos de PHP </li></ul><ul><li>Los principales usos del PHP son los siguientes: </li></ul><ul><ul><li>Programación de páginas web dinámicas, habitualmente en combinación con el motor de base datos MySQL, aunque cuenta con soporte nativo para otros motores, incluyendo el estándar ODBC, lo que amplía en gran medida sus posibilidades de conexión. </li></ul></ul><ul><ul><li>Programación en consola, al estilo de Perl, en Linux, Windows y Macintosh. </li></ul></ul><ul><ul><li>Creación de aplicaciones gráficas independientes del navegador, por medio de la combinación de PHP y GTK (GIMP Tool Kit), que permite desarrollar aplicaciones de escritorio tanto para los sistemas operativos basados en Unix, como para Windows y Mac OS X. </li></ul></ul><ul><li>Ventajas de PHP </li></ul><ul><ul><li>La principal ventaja se basa en ser un lenguaje multiplataforma. </li></ul></ul><ul><ul><li>Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad. </li></ul></ul><ul><ul><li>Leer y manipular datos desde diversas fuentes, incluyendo datos que pueden ingresar los usuarios desde formularios HTML </li></ul></ul><ul><ul><li>Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados ext's o extensiones). </li></ul></ul><ul><ul><li>Posee una muy buena documentación en su página oficial. </li></ul></ul><ul><ul><li>Es Libre, por lo que se presenta como una alternativa de fácil acceso para todos. </li></ul></ul><ul><ul><li>Permite las técnicas de Programación Orientada a Objetos. </li></ul></ul>
  28. 28. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Estadística de PHP </li></ul><ul><li>En el último año, el número de servidores que utilizan PHP se ha disparado, logrando situarse cerca de los 25 millones de sitios y 800.000 direcciones IP, lo que le ha convertido a PHP en una tecnología popular. Esto es debido, entre otras razones, a que PHP es el complemento ideal para que el tándem Linux-Apache sea compatible con la programación del lado del servidor de sitios web. Gracias a la aceptación que ha logrado, y los grandes esfuerzos realizados por una creciente comunidad de colaboradores para implementarlo de la manera más óptima, podemos asegurar que el lenguaje se convertirá en un estándar que compartirá los éxitos augurados al conjunto de sistemas desarrollados en código abierto. </li></ul>
  29. 29. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Gráfica del número de dominios y direcciones IP que utilizan PHP. </li></ul><ul><li>Fuente: de Netcraft. </li></ul>
  30. 30. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Poco a poco el PHP se va convirtiendo en un lenguaje que nos permite hacer de todo. En un principio diseñado para realizar poco más que un contador y un libro de visitas, PHP ha experimentado en poco tiempo una verdadera revolución y, a partir de sus funciones, en estos momentos se pueden realizar una multitud de tareas útiles para el desarrollo del web: </li></ul><ul><li>Funciones de correo electrónico Podemos con una facilidad asombrosa enviar un e-mail a una persona o lista parametrizando toda una serie de aspectos tales como el e-mail de procedencia, asunto, persona a responder... </li></ul><ul><li>Otras funciones menos frecuentes pero de indudable utilidad para gestionar correos electrónicos son incluidas en su librería. </li></ul><ul><li>Gestión de bases de datos Resulta difícil concebir un sitio actual, potente y rico en contenido que no es gestionado por una base de datos. El lenguaje PHP ofrece interfaces para el acceso a la mayoría de las bases de datos comerciales y por ODBC a todas las bases de datos posibles en sistemas Microsoft, a partir de las cuales podremos editar el contenido de nuestro sitio con absoluta sencillez. </li></ul><ul><li>Gestión de archivos Crear, borrar, mover, modificar...cualquier tipo de operación más o menos razonable que se nos pueda ocurrir puede ser realizada a partir de una amplia librería de funciones para la gestión de archivos por PHP. También podemos transferir archivos por FTP a partir de sentencias en nuestro código, protocolo para el cual PHP ha previsto también gran cantidad de funciones. </li></ul>
  31. 31. SERVIDOR WEB APACHE <ul><li>INTRODUCCION A PHP </li></ul><ul><li>Tratamiento de imágenes Evidentemente resulta mucho más sencillo utilizar Photoshop para el tratamiento de imágenes pero...¿Y si tenemos que tratar miles de imágenes enviadas por nuestros internautas? </li></ul><ul><li>La verdad es que puede resultar muy tedioso uniformar en tamaño y formato miles de imágenes recibidas día tras día. Todo esto puede ser también automatizado eficazmente mediante PHP. </li></ul><ul><li>También puede parecer útil el crear botones dinámicos, es decir, botones en los que utilizamos el mismo diseño y solo cambiamos el texto. Podremos por ejemplo crear un botón haciendo una única llamada a una función en la que introducimos el estilo del botón y el texto a introducir obteniendo automáticamente el botón deseado. </li></ul><ul><li>A partir de la librería de funciones graficas podemos hacer esto y mucho más. </li></ul>
  32. 32. SERVIDOR WEB APACHE <ul><li>INSTALACION DE PHP </li></ul><ul><li>Descargar los Fuentes </li></ul><ul><li>Para compilar PHP como modulo de Apache a partir de su código fuente, se debe obtener previamente de la Web de PHP la versión más reciente ( http:// www.php.net / downloads.php ). </li></ul><ul><li>shell> wget http://bo.php.net/distributions/php-5.1.2.tar.gz </li></ul><ul><li>Descomprimimos el paquete obtenido previamente e ingresamos al directorio: </li></ul><ul><li>shell> cd /tmp </li></ul><ul><li>shell> tar xvfz php-5.1.2.tar.gz </li></ul><ul><li>shell> cd php-5.1.2/ </li></ul>
  33. 33. SERVIDOR WEB APACHE <ul><li>INSTALACION DE PHP </li></ul><ul><li>Configuración de los Fuentes PHP </li></ul><ul><li>Ahora configura tu PHP. Aquí es donde personalizas tu PHP con varias opciones, por ejemplo que extensiones serán habilitadas. </li></ul><ul><li>Ejecuta ./configure --help para desplegar una lista de las opciones disponibles. En nuestro ejemplo haremos una configuración básica con soporte para Apache 2, MySQL y PostgreSQL. </li></ul><ul><li>La ruta de apxs pueden ser diferente, de hecho, el binario puede ser nombrado apxs2 en tu sistema. Por ejemplo: </li></ul><ul><li>./configure --with-apxs2= /usr/sbin/apxs </li></ul><ul><li>--with-mysql=/usr/local/mysql --with-pgsql=/usr/local/pgsql </li></ul><ul><li>Los binarios de PHP se pueden reconstruir cada vez que se necesite una nueva extensión del lenguaje y luego solo hay que reinstalar, esto mientras el servidor Apache esta parado, por ejemplo a continuación si quisiéramos aumentar opciones como XML, IMAP, KERBEROS, SYBASE, etc. </li></ul>
  34. 34. SERVIDOR WEB APACHE <ul><li>INSTALACION DE PHP </li></ul><ul><li>Ejemplo: </li></ul><ul><li>En un servidor especial se puede utilizar la siguiente configuración de opciones especiales que están habilitadas, para varios opciones diferentes. </li></ul><ul><li>./configure --with-apxs2=/usr/sbin/apxs </li></ul><ul><li>--with-pgsql=/usr/local/pgsql --with-mysql=/usr/local/mysql </li></ul><ul><li>--enable-track-vars --enable-sockets --with-config-file-path=/etc </li></ul><ul><li>--enable-ftp --with-zlib --with-openssl=/usr </li></ul><ul><li>--enable-force-cgi-redirect --enable-exif --with-gd </li></ul><ul><li>--disable-debug --disable-rpath --disable-static --with-pic </li></ul><ul><li>--with-layout=GNU --enable-calendar --enable-sysvsem </li></ul><ul><li>--enable-sysvshm --enable-sysvmsg --enable-trans-sid </li></ul><ul><li>--enable-bcmath --with-bz2 --enable-ctype --with-db4 --with-iconv </li></ul><ul><li>--enable-filepro --with-gettext --enable-mbstring --enable-shmop </li></ul><ul><li>--enable-wddx --with-xmlrpc --enable-yp --with-zlib --enable-dbx </li></ul><ul><li>--enable-experimental-zts --without-mm --enable-gd-native-ttf </li></ul><ul><li>--enable-soap --enable-dbase --with-xml </li></ul><ul><li>--with-sybase=/usr/local/freetds --with-dom --with-mcrypt </li></ul><ul><li>--enable-mbregex --with-mime-magic --with-imap --with-kerberos </li></ul><ul><li>--with-imap-ssl (UNA LINEA) </li></ul>
  35. 35. SERVIDOR WEB APACHE <ul><li>INSTALACION DE PHP </li></ul><ul><li>Compilación e Instalación: </li></ul><ul><li>En PHP, se debe especificar la opción --with-pgsql=/usr/local/pgsql --with-mysql=/usr/local/mysql, de otra forma PHP no tendrá soporte para MySQL o PostgreSQL, y si, MySQL y PostgreSQL deben estar instalados previamente antes de ejecutar la sentencia ./configure. (se recomienda instalar los mismos desde fuentes) </li></ul><ul><li>Luego se prosigue con la compilación de los fuentes: </li></ul><ul><li>shell> make Se debe recordar que para compilar se requiere, como mínimo, GNU Make y GNU CC. </li></ul><ul><li>A continuación si no se ha encontrado ninguna falla de compilación se procede a instalar los binarios resultantes del proceso de compilación: </li></ul><ul><li>shell> make install </li></ul><ul><li>Esto instalara el binario PHP (normalmente en /usr/local/bin/php ) que podrá ejecutarse desde línea de comandos así como un modulo de Apache2. </li></ul>
  36. 36. SERVIDOR WEB APACHE <ul><li>CONFIGURACION POSTINSTALACION </li></ul><ul><li>Configurar PHP </li></ul><ul><li>Luego se debe crear el archivo de configuración /etc/php.ini. Lo mejor es tomar los archivos de ejemplo que vienen con los Fuentes de PHP: </li></ul><ul><li>cp /tmp/php-5.1.2/php.ini-dist /etc/php.ini </li></ul><ul><li>Luego si se desea se puede modificar /etc/php.ini . para satisfacer las necesidades   </li></ul><ul><li>Configurar Apache2 </li></ul><ul><li>Ahora es necesario adicionar las siguientes entradas en el archivo de configuración de Apache2 / etc/httpd/httpd.conf : </li></ul><ul><li>AddHandler cgi-script .cgi </li></ul><ul><li>AddHandler cgi-script .pl </li></ul><ul><li>AddType text/html .shtml </li></ul><ul><li>AddOutputFilter INCLUDES .shtml </li></ul><ul><li>AddType application/x-httpd-php .php .php4 .php3 </li></ul>
  37. 37. SERVIDOR WEB APACHE <ul><li>CONFIGURACION POSTINSTALACION </li></ul><ul><li>Script de Inicio </li></ul><ul><li>Crear un script de arranque de sistema </li></ul><ul><li>/etc/init.d/httpd </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>case &quot;$1&quot; in </li></ul><ul><li>start) </li></ul><ul><li>/usr/sbin/apachectl startssl </li></ul><ul><li>;; </li></ul><ul><li>stop) </li></ul><ul><li>/usr/sbin/apachectl stop </li></ul><ul><li>;; </li></ul><ul><li>restart) </li></ul><ul><li>$0 stop && sleep 3 </li></ul><ul><li>$0 start </li></ul><ul><li>;; </li></ul><ul><li>reload) </li></ul><ul><li>$0 stop </li></ul><ul><li>$0 start;; </li></ul>
  38. 38. SERVIDOR WEB APACHE <ul><li>CONFIGURACION POSTINSTALACION </li></ul><ul><li>*) </li></ul><ul><li>echo “Forma de Uso: $0 {start|stop|restart|reload}&quot; </li></ul><ul><li>exit 1 </li></ul><ul><li>esac </li></ul><ul><li>Darle permisos de lectura y ejecución: </li></ul><ul><li>chmod 755 /etc/init.d/httpd </li></ul><ul><li>En orden de iniciar el servicio de Apache al iniciar el servidor Linux en tiempo de booteo crear los links necesarios: </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc2.d/S20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc3.d/S20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc4.d/S20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc5.d/S20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc0.d/K20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc1.d/K20httpd </li></ul><ul><li>shell> ln -s /etc/init.d/httpd /etc/rc6.d/K20httpd </li></ul><ul><li>Luego iniciar Apache2: </li></ul><ul><li>shell> service httpd start </li></ul>
  39. 39. SERVIDOR WEB APACHE <ul><li>CONFIGURACION SERVICIO </li></ul><ul><li>Probar Configuracion Servidor web </li></ul><ul><li>netstat -tap </li></ul><ul><li>Muestra que Apache2 usa el puerto 80 (http) y 443 (https). </li></ul><ul><li>Ahora ir al directorio /usr/local/apache2/htdocs y crear el archivo llamado info.php con el siguiente contenido: </li></ul><ul><li>shell> cd /usr/local/apache2/htdocs </li></ul><ul><li>shell> echo “<?php phpinfo();php?>” > info.php </li></ul><ul><li>chmod 755 info.php </li></ul><ul><li>  </li></ul><ul><li>Tratar de acceder con el navegador Web (Ej. Usando el nombre del servidor o numero IP) via http (http://192.168.3.136/info.php) y https (https://192.168.1.100/info.php). </li></ul>
  40. 40. SERVIDOR WEB APACHE <ul><li>CONFIGURACION SERVICIO </li></ul><ul><li>La salida debe ser algo parecido a la siguiente captura de pantalla: </li></ul>
  41. 41. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>/etc/httpd/httpd.conf </li></ul><ul><li>Cuando se ha instalado el servidor, hay que configurarlo. Apache incluye por defecto una configuración que arranca el servidor en el puerto TCP por defecto, que es el puerto 80, y sirve los ficheros del directorio que se ha especificado mediante la directiva de configuración denominada DocumentRoot. </li></ul><ul><li>Este fichero de configuración de Apache es el httpd.conf, localizado en el directorio /etc/httpd. httpd.conf es un fichero de tipo ASCII que contiene las directivas de configuración. </li></ul><ul><li>Estructura del fichero de configuración httpd.conf </li></ul><ul><li>httpd.conf está compuesto por tres bloques fundamentales, aunque las directivas de cada uno de los bloque pueden aparecer desordenadas o mezcladas. </li></ul><ul><li>Estos bloques son: </li></ul><ul><ul><li>Parámetros globales </li></ul></ul><ul><ul><li>Directivas de funcionamiento </li></ul></ul><ul><ul><li>Hosts virtuales </li></ul></ul>
  42. 42. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Parámetros de Configuración </li></ul><ul><li>Algunos parámetros son propósito general, y otros son configurables de forma independiente para cada conjunto de directorios o de ficheros o incluso para un servidor virtual específico. En tales casos, estos parámetros se encuentran dentro de secciones en las que se indica el contexto de aplicación de dicho parámetro. Las secciones fundamentales son: </li></ul><ul><li><Directory>: los parámetros que se encuentran dentro de la sección Directory sólo se aplican al directorio indicado y sus subdirectorios. </li></ul><ul><li><DirectoryMatch>: igual que Directory, aunque acepta expresiones regulares en el nombre del directorio. </li></ul><ul><li><Files>: los parámetros de configuración facilitan control de acceso a los ficheros mediante su nombre. </li></ul><ul><li><FilesMatch>: igual que Files, pero acepta en el nombre del fichero expresiones regulares. </li></ul><ul><li><Location>: proporciona control de acceso a los ficheros mediante la URL. </li></ul><ul><li><LocationMatch>: igual que Location, pero acepta en el nombre del fichero el uso de expresiones regulares. </li></ul><ul><li><VirtualHost>: los parámetros sólo se aplican a aquellas peticiones dirigidas a este host (nombre de servidor, dirección IP o puerto TCP). </li></ul>
  43. 43. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Parámetros de Configuración </li></ul><ul><li><Proxy>: sólo se aplican estos parámetros a aquellas peticiones de proxy (requiere que esté instalado &quot;mod proxy&quot;) coincidentes con la especificación de URL. </li></ul><ul><li><ProxyMatch>: igual que proxy, pero acepta en la URL indicada el uso de expresiones regulares. </li></ul><ul><li><IfDefine>: sólo se aplica si al arrancar el servidor existe un parámetro concreto definido en la línea de comandos, mediante la opción -D. </li></ul><ul><li><IfModule>: se aplican los parámetros si el módulo especificado se encuentra cargado (mediante LoadModule) en el momento de arrancar el servidor . </li></ul><ul><li>En caso de que exista conflicto entre diferentes especificaciones de parámetros, el orden de precedencia es: </li></ul><ul><li><Directory> y .htaccess </li></ul><ul><li><DirectoryMatch> y <Directory> </li></ul><ul><li><Files> y <FilesMatch> </li></ul><ul><li><Location> y <LocationMatch> </li></ul><ul><li>En cuanto a <VirtualHost>, estas directivas siempre se aplican siempre después de las directivas generales. De este modo, un VirtualHost puede modificar la configuración por defecto. </li></ul>
  44. 44. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Directivas principales </li></ul><ul><li>Hay algunas directivas que, generalmente, no suelen aparecer en las secciones anteriormente mencionadas (algunas de ellas no deben estar en ninguna sección, y es obligatorio que aparezcan en la sección principal), sino que se encuentran en la sección principal. Estas directivas son: </li></ul><ul><li>ServerAdmin : especifica la dirección de correo electrónico del administrador. Esta dirección puede mostrarse en los mensajes de error a modo de dirección de contacto para que los usuarios notifiquen el error al administrador. No debe estar dentro de ninguna sección. </li></ul><ul><li>ServerName : sirve para especificar el nombre y el puerto TCP que el Apache utiliza para identificarse. Se puede determinar de forma automática, pero se recomienda especificarlo. Si el servidor no tuviera un nombre DNS, es recomendable incluir su dirección IP. No debe incluirse dentro de ninguna sección. Su sintaxis es: ServerName nombredireccion:puerto. Ejemplo: </li></ul><ul><li>ServerName www.uoc.edu:80 </li></ul><ul><li>ServerName 192.168.1.1:80 </li></ul>
  45. 45. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Directivas de sección </li></ul><ul><li>Casi todas las secciones de localización (Directory, Location, etc.) incluyen una serie de directivas en su configuración que permiten controlar el acceso al contenido. El módulo mod_access facilita estas directivas. </li></ul><ul><li>Allow: permite especificar quién tiene autorización para acceder a un recurso. Se pueden especificar direcciones IP, nombres de máquina, fragmentos del nombre o de la dirección o variables de la petición. Existe la palabra clave &quot;all&quot; que indica &quot;todos los clientes&quot;. </li></ul><ul><li>Deny: permite especificar a quién no permitimos el acceso a un recurso. Cuenta con las mismas opciones que Allow. </li></ul><ul><li>Order: permite afinar el funcionamiento de las anteriores directivas: Allow y Deny. Existen 2 opciones: </li></ul><ul><ul><li>Allow,Deny. Por defecto se deniega el acceso y sólo podrán acceder quellos clientes que cumplan las especificaciones de Allow y en cambio no cumplan las especificaciones de Deny. </li></ul></ul><ul><ul><li>Deny,Allow. Por defecto se permite el acceso y sólo podrán entrar los clientes que no cumplan las especificaciones de Deny o sí cumplan las especificaciones de Allow. </li></ul></ul>
  46. 46. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Servidores virtuales </li></ul><ul><li>Apache permite servir varios sitios web con un único servidor. Para ello permite la creación de dominios virtuales en función de diferentes direcciones IP o diferentes nombres por IP. Apache fue de los primeros servidores que soportó servidores virtuales sin necesidad de distinguir por IP, sino en función de nombre. Esta capacidad simplifica enormemente la administración de los servidores, y supone un ahorro de direcciones IP, que normalmente son escasas. Los servidores virtuales que distinguen en función del nombre son perfectamente transparentes para el cliente, con la posible excepción de aquellos navegadores muy antiguos que no envíen la cabecera &quot;Host:&quot; con cada petición. </li></ul><ul><li>Servidores virtuales por dirección IP </li></ul><ul><li>Para atender a varios servidores virtuales, cada uno de ellos con una dirección IP diferente, se utiliza la sección de configuración VirtualHost. Con esta sección se define una configuración y dirección IP para cada uno de los servidores. </li></ul>
  47. 47. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Servidores virtuales </li></ul><ul><li>Un ejemplo sería el siguiente. </li></ul><ul><li><VirtualHost 192.168.1.1>   ServerAdmin webmaster@uoc.edu   DocumentRoot /web/uoc   ServerName www.uoc.edu   ErrorLog /web/logs/uoc_error_log   TransferLog /web/logs/uoc_access_log </VirtualHost> <VirtualHost 192.168.254.254>   ServerAdmin webmaster@asociados.uoc.edu   DocumentRoot /web/asociados   ServerName asociados.uoc.edu   ErrorLog /web/logs/asociados_error_log   TransferLog /web/logs/asociados_access_log </VirtualHost> </li></ul><ul><li>Este ejemplo define 2 servidores web, cada uno de ellos con una IP y un nombre diferentes. Ambos tienen su propio DocumentRoot, etc. </li></ul><ul><li>Para hacer uso de servidores virtuales por IP, se necesita que el sistema servidor tenga configuradas en su sistema operativo las diferentes direcciones IP que debe servir. </li></ul>
  48. 48. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Servidores virtuales por nombre </li></ul><ul><li>Para atender a varios servidores, utilizando una misma dirección IP para todos ellos, se utiliza la sección VirtualHost, que permite definir los parámetros de cada uno de los servidores. Sirva como ejemplo la siguiente configuración: </li></ul><ul><li>NameVirtualHost *:80   <VirtualHost *:80>     ServerAdmin webmaster@uoc.edu     ServerName www.uoc.edu     DocumentRoot /web/uoc     ErrorLog /web/logs/uoc_error_log     TransferLog /web/logs/uoc_access_log   </VirtualHost>   <VirtualHost *:80>     ServerAdmin webmaster@uoc.edu     ServerName asociados.uoc.edu     DocumentRoot /web/asociados     ErrorLog /web/logs/asociados_error_log     TransferLog /web/logs/asociados_access_log   </VirtualHost>. </li></ul><ul><li>Se puede utilizar una dirección IP concreta en lugar de *, lo cual permite asignar, por ejemplo, un grupo de servidores virtuales por nombre a esta IP y otro grupo a otra IP. </li></ul>
  49. 49. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li>Cuando nuestro servidor tiene 2 direcciones IP, pero hemos asignado a las 2 el mismo nombre, se necesita un uso especial de las directivas de servidores por nombre. Por ejemplo, cuando se dispone una conexión de red en la intranet y otra conexión diferente en Internet con el mismo nombre, caso en el cual podemos servir el mismo contenido de la esta forma: </li></ul><ul><li>   NameVirtualHost 192.168.1.1   NameVirtualHost 172.40.30.40   <VirtualHost 192.168.1.1 172.40.30.40>     DocumentRoot /www/servidor1     ServerName servidor.uoc.edu     ServerAlias servidor </VirtualHost> </li></ul><ul><li>Con esta configuración se puede servir la misma web hacia la intranet y hacia la Internet. Es conveniente señalar el uso de un alias para el servidor, lo cual permite no tener que usar dominios en la intranet. Disponemos de una especificación de servidor virtual por defecto &quot;_default_&quot; que permite atender las peticiones que no sirve ningún otro servidor virtual. </li></ul>
  50. 50. SERVIDOR WEB APACHE <ul><li>CONFIGURACION DE APACHE WEB SERVER </li></ul><ul><li><VirtualHost _default_>     DocumentRoot /www/defecto </VirtualHost> </li></ul><ul><li>Podemos usar la etiqueta &quot;_default_&quot; indicando un número de puerto para especificar servidores por defecto que sean diferentes para cada puerto. Apache permite también configuraciones más complejas de servidores virtuales, muy útiles en casos de, por ejemplo, servidores masivos. </li></ul><ul><li>Una excelente guía de referencia se encuentra en la web del proyecto Apache, con consejos útiles para configurar el servidor. Existen muchos servidores HTTP de código libre, pero la mayoría de ellos han quedado eclipsados por Apache. </li></ul>

×