ADMINISTRACION DE SERVIDORES LINUX ENTERPRISE APACHE WEB



Documentos relacionados
Configuración de Apache

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

El servidor WEB Apache HTTPD. Tecnologías Web

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

TECNOLOGICO DE ESTUDIOS SUPERIORES DEL ORIENTE DEL ESTADO DE MEXICO

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Servidor Web (Apache Httpd+PHP)

WINDOWS : TERMINAL SERVER

Dossier de prácticas

Instituto Tecnológico de Las Américas (ITLA)

Qué es PHP? Example #1 Un ejemplo introductorio "<?,?>".

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Servidor Web Apache Knoppix Linux.-

Crear un servidor Web en IIS

CÓMO CREAR UNA PÁGINA WEB

Guía de instalación de la carpeta Datos de IslaWin

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

SERVIDOR WEB. Servidores web IIS (Windows) / Apache (Windows y Linux)

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Curso de PHP con MySQL Gratis

Studium, Campus Virtual de la Universidad de Salamanca.

Qué es un servicio de Proxy?

CAPITULO VI ANEXOS 6.1. ANEXO 1: CRONOGRAMA DE ACTIVADES. Gráfico 31 Cronograma de Actividades Parte1

SIEWEB. La intranet corporativa de SIE

Internet Information Server

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

DIPLOMADO EN SEGURIDAD INFORMATICA

Guía de uso del Cloud Datacenter de acens

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

Instalación de Apache y sus módulos

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP

Manual Básico de Helm 4.2 para Usuarios:

Internet Information Server

PÁGINAS DINÁMICAS WEB CON PHP. Unidad 1 FUNDAMENTOS DE PHP

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Actualizaciones de GateDefender Performa desde un servidor web local

Podemos descargar la distribucion de gnu/linux de los repositorios de Ubuntu

Guía de Inicio Respaldo Cloud

Manual hosting acens

Guía Rápida de Inicio

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

Sistemas de Gestión de Contenidos

Índice de contenido. Manual de administración de hospedaje para administradores de dominios

Manual de usuario de IBAI BackupRemoto

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Guía de instalación de la carpeta Datos de ContaWin

Ubuntu Server HOW TO : NFS EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como compartir datos en una Red Linux, usando NFS.

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Unidad Didáctica 12. La publicación

SLIDEFINDER: Una herramienta universal y gratuita para clasificar, buscar y compartir imágenes e información en la Web

MANUAL DE CONFIGURACIÓN PARA EL ACCESO A RECURSOS-e RED DE BIBLIOTECAS DEL INSTITUTO CERVANTES

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Introducción a las redes de computadores

Acronis License Server. Guía del usuario

Configuracion Escritorio Remoto Windows 2003

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

Desarrollo Web en Entorno Servidor

CÓMO CONFIGURAR APACHE PARA CREAR UN SITIO WEB

Explotación de Sistemas Informáticos IES Murgi PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE

Instalación, creación y configuración del servicio FTP

Descripción. Este Software cumple los siguientes hitos:

En primer lugar observamos el directorio para asegurarnos que tenemos el módulo disponible/etc/apache2/mods-available

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Servidor Apache. Instalación Configuración Apache con Webmin 24/03/2014. Vicente

Manual de NetBeans y XAMPP

LiLa Portal Guía para profesores

CAPÍTULO 3 VISUAL BASIC

Roles y Características

Ubuntu Server HOW TO : SQUID. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar servidor proxi Squid.

Squid como proxy semi-transparente.

Practica 4 1. Certificados digitales

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

D.T.Informática S.L. [Sistema hada] hilo Administrador Desarrollo Activo

Servidore Web Apache. Inicio del servidor Apache. Iniciar. Comando apachectl

Cómo resolver errores comunes a la hora de programar con PHP

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH

Unidad V: Programación del lado del servidor

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

2.3. Lenguajes de programación del lado Servidor. ASP.NET (Active Server Pages).

Guía nuevo panel de clientes Hostalia

WINDOWS : SERVIDOR DHCP

Instalación y configuración de Windows SharePoint Services (WSS) 2003

PROYECTO. Solución Empresarial Ingeniería y Desarrollo de Software - info@solucionempresarial.com.

Servidor FTP en Ubuntu Juan Antonio Fañas

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Manual de instalación Sistema S.I.S.E. Versión 1.0

PROGRAMACIÓN PÁGINAS WEB CON PHP

Transcripción:

ADMINISTRACION DE SERVIDORES LINUX ENTERPRISE SERVIDOR WEB APACHE Dictado por: Ing. Carlos Alcalá Helguero Consultas: alcala@ucbcba.edu.bo TOPICOS CLASE 4: SERVIDOR DE RESOLUCION DE NOMBRES DNS Introducción n a Servidor Web Instalación n de Apache Web Server. Creación n del Certificado seguro SSL. Configuración n de directivas de ejecución: httpd.conf Sitios Virtuales. Introducción n a PHP. Instalación n del modulo PHP5. Configuración n Post-instalaci instalación Comprobación n del servicio Web + SSL + PHP + Virtualhost Solución n de problemas frecuentes. Conceptos básicos b del servidor web Un servidor Web es un programa que sirve para atender y responder r a las diferentes peticiones de los navegadores, proporcionando los recursos que soliciten usando el protocolo HTTP o el protocolo HTTPS (la versión n cifrada y autenticada). Un servidor Web básico b cuenta con un esquema de funcionamiento muy simple, basado en ejecutar infinitamente el siguiente bucle: 1. Espera peticiones en el puerto TCP indicado (el estándar por defecto para HTTP es el 80). 2. Recibe una petición. 3. Busca el recurso. 4. Envía a el recurso utilizando la misma conexión n por la que recibió petición. 5. Vuelve al segundo punto. Un servidor Web que siga el esquema anterior cumplirá todos los requisitos básicos b de los servidores HTTP, aunque sólo s podrá servir ficheros estáticos. ticos. A partir del anterior esquema se han diseñado y desarrollado todos los servidores de HTTP que existen, variando sólo s el tipo de peticiones (páginas estáticas, ticas, CGIs, Servlets,, etc.) que pueden atender, en función n de que sean o no sean multi-proceso o multi-hilados, etc. A continuación n se detallan algunas de las características básicas b de los servidores web,, que amplían, an, obviamente el esquema anterior. Servicio de ficheros estáticos ticos Todos los servidores web deben incluir, al menos, la capacidad para servir los ficheros estáticos ticos que se hallen en alguna parte del disco. Un requisito básico b 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ís puede tener uno por defecto. La mayoría a de servidores web permiten añadir a adir otros directorios o subdirectorios para servir, especificando en qué punto del "sistema de ficheros" virtual del servidor se localizarán n los recursos. Algunos servidores web permiten también n especificar directivas de seguridad (quién puede acceder a los recursos), mientras que otros hacen posible la especificación n de los ficheros que se deben considerar como índice del directorio. 1

Seguridad y autenticación La mayoría 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. Podemos, por ejemplo, tener la siguiente situación: Seguridad y autenticación En este caso, el servidor debería a traducir las direcciones web de esta manera: URL Fichero de disco /index.html /usr/local/apache/html/index.html /docs/manuales/producto.pdf /home/empresa/docs/manuales/producto.pdf Directorio del disco /usr/local/apache/html /home/empresa/docs /home/estudiante/informe Directorio web / /docs /informe-2006 /empresa/quienes.html /usr/local/apache/html/empresa/quienes.html /informe-2006/index.html /home/estudiante/informe/index.html El modo más 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 ("NCSA httpd"), 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, m etc. tienen acceso a los ficheros y a los diferentes subdirectorios ios del directorio donde está instalado el.htaccess. htaccess.. Como el "NCSA httpd" " fue el servidor más m s utilizado durante mucho tiempo, la mayoría a de servidores actuales permiten utilizar un fichero.htaccess. respetando la sintaxis original del servidor de NCSA. Contenido dinámico 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 p estáticas, 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. La mayor parte de los servidores web ofrecen soporte para CGI (se debe recordar que los CGI son el método m más m s antiguo y sencillo para generar contenido dinámico). Otros muchos ofrecen soporte para algunos lenguajes de programación n (normalmente lenguajes interpretados) como PHP, JSP, ASP, etc. 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). La oferta es muy amplia, pero antes de elegir un lenguaje de programaci gramación n de servidor se debe plantear si se desea un lenguaje muy estándar para que la aplicación n no dependa de un servidor web o una arquitectura concreta o si, al contrario, la portabilidad no es prioritaria y sís lo es alguna otra prestación n concreta que pueda ofrecer algún n lenguaje de programación n concreto. Servidores virtuales Una prestación n que gana aceptación n y usuarios rápidamente, r 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 n IP, discriminando entre los diferentes dominios alojados en función n del nombre de dominio enviado en la cabecera HTTP. Esta prestación n permite la administración n racional y ahorradora de un bien escaso, las direcciones IP. 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 n distinta para cada servidor. Sería perfecto que cada servidor se comportara como si fuese un ordenador dor diferente. 2

Protocolos adicionales Algunos servidores, no sólo s atienden y sirven peticiones HTTP (y HTTPS), sino que pueden servir también 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 n de nuestras necesidades) y decantar nuestra elección n de un programa servidor. APACHE WEB SERVER Servidor Apache El servidor HTTP Apache es un servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux,, etcétera), tera), Windows y otras, que implementa el protocolo HTTP/1.1 (RFC( 2616) ) y la noción n de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código c del popular NCSA HTTPd 1.3, pero más m s tarde fue reescrito por completo. Su nombre se debe a que originalmente Apache consistía a solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor parcheado). El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd)) de la Apache Software Foundation. Apache presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación n y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración. n. En la actualidad (200( 2006), Apache es el servidor HTTP más m s usado, siendo el servidor HTTP del 70% de los sitios web en el mundo y creciendo aún a n su cuota de mercado (estadísticas sticas históricas y de uso diario proporcionadas por Netcraft). APACHE WEB SERVER Estadística stica 2006 APACHE WEB SERVER Historia de Apache En febrero del año a o 1995, el servidor web más s popular era un servidor desarrollado por el NCSA (National( Center for Supercomputing Applications de la Universidad de Illinois). Sin embargo, al dejar el principal desarrollador del servidor, Rob McCool,, la NCSA en el año o 1994, la evolución n del programa había 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, n, se pusieron de acuerdo para poner en común estas mejoras en forma de "patches" patches" " o parches. 2 de ellos, Cliff Skolnick y Brian Behlendorf,, iniciaron una lista de correo, un espacio para compartir informaci mación n y un servidor en California donde los desarrolladores más m s importantes pudiesen trabajar. A principios del año a o siguiente, 8 programadores fundaron lo que había a de ser el Grupo Apache. Éstos, utilizando como base de trabajo el servidor NCSA 1.3, incorporaron las correcciones de errores publicadas y las mejoras más m s importantes que encontraron y probaron el resultado final en sus servidores. Después s publicaron lo que había a de ser la 1a versión n oficial del servidor Apache (la 0.6.2, en abril del año a o 1995). Casualmente, por esas fechas, la NCSA reemprendió el desarrollo de su servidor NCSA. 3

APACHE WEB SERVER Historia de Apache En aquel momento el desarrollo de Apache continuó por 2 líneas l 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 c de la primera versión, creando una nueva arquitectura de tipo modular. En julio del año a o 1995 migraron a esta nueva arquitectura las mejoras desarrolladas para Apache 0.7, haciéndose público p como Apache 0.8. El día d a 1 de diciembre del año a o 1995, apareció Apache 1.0, que incluía a abundante documentación n y muchas mejoras en forma de módulos m que se podían incrustar. Después, s, Apache sobrepasó al servidor NCSA como el más m s popular en Internet, posición n que ha mantenido hasta hoy. En el año 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. INSTALACION DE APACHE WEB SERVER Existen 2 opciones principales para instalar Apache: compilar el código fuente o instalarlo a partir de un paquete binario apropiado para cada sistema stema operativo. Descargar los fuentes Para compilar Apache a partir de su código c fuente, se debe obtener previamente de la web de Apache la versión n más m s reciente (http://httpd.apache.org( http://httpd.apache.org). shell> wget http://mirrors.combose.com mirrors.combose.com/apache/ /apache/httpd/httpd-2.2.0. 2.2.0.tar.gz Descomprimimos el paquete obtenido previamente e ingresamos al directorio: d shell> cd /tmp shell> tar xvfz httpd-2.2.0.tar.gz shell> cd httpd-2.2.0/ INSTALACION DE APACHE WEB SERVER Configuración n de Fuentes Configurar el código c para su compilación. Para ello ejecutaremos: $./configure Existen algunos parámetros que permiten ajustar la compilación n de Apache. Los más m importantes son: --prefix Directorio donde instalar Apache enable-modules=lista-modulos Módulos M que se desean activar enable-mods-shared=lista-modulos Módulos M shared que se desean que activar enable-cache Caché dinámica enable-disk-cache Caché dinámica en el disco enable-mem-cache Módulo de caché de la memoria enable-mime-magicmagic Determinación n del tipo MIME automática tica enable-usertrack Seguimiento de la sesión n de usuario enable-proxy Módulo Apache-proxy proxy enable-proxy-connect Módulo Apache-proxy proxy para CONNECT enable-proxy-ftp Módulo Apache-proxy proxy para FTP INSTALACION DE APACHE WEB SERVER Configuración n de Fuentes enable-proxy-http Módulo M Apache-proxy proxy HTTP enable-ssl Soporte de SSL/TLS (mod( ssl) enable-http Manejo del protocolo HTTP enable-dav Manejo del protocolo WebDAV --disable disable-cgid Soporte para CGI optimizado enable-cgi Soporte para CGI --disable disable-cgi Soporte para CGI enable-cgid Soporte para CGI optimizado enable-vhost-alias Soporte de hosts virtuales 4

INSTALACION DE APACHE WEB SERVER Configuración n de Fuentes A continuación n ejecutamos configure con algunas opciones especiales. shell>./configure enable-ssl with-ssl=/ =/usr enable-suexec with-suexec-docroot=/ =/usr/local enable-cgi enable-rewrite enable-so enable-logiologio --prefix=/usr/local/apache2 enable-module=most enable-shared=max --bindir bindir=/ =/usr/bin --sbindir sbindir=/ =/usr/sbin --sysconfdir sysconfdir=/etc/ =/etc/httpd (TODO UNA SOLA LINEA) INSTALACION DE APACHE WEB SERVER Compilación n de Fuentes e Instalación n de Binarios Nota: : Se puede cambiar el comando configure para satisfacer sus necesidades. Escribir./configure help para obtener una lista de todas las opciones disponibles) Luego se prosigue con la compilación n de los fuentes: shell> make Se debe recordar que para compilar Apache se requiere, como mínimo, m GNU Make y GNU CC. A continuación n si no se ha encontrado ninguna falla de compilación n se procede a instalar los binarios resultantes del proceso de compilación: shell> make install 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 n es /etc/httpd. INSTALACION DE APACHE WEB SERVER Comprobación n inicial del Servicio Una vez instalado, disponemos, dentro del subdirectorio "bin" bin" " dentro del directorio de instalación, n, el que hemos especificado con PREFIX (/usr usr/local/apache2), un script denominado "apachectl" apachectl" " que permite controlar el servidor. Para iniciarlo: shell> cd <PREFIX>/bin shell> >./apachectl start Luego accedemos a un navegador (Firefox( en Linux) y accedemos a la dirección n del servidor web local: http://localhost o http://127.0.0.1, ambas que hacen referencia a la dirección n de loopback (red virtual) de la maquina Para detenerlo: shell> cd <PREFIX>/bin shell> >./apachectl stop INSTALACION DE APACHE WEB SERVER Soporte de encriptación n SSL Si se desea levantar apache con soporte SSL es necesario generar el archivo /etc/httpd/ssl.crt/server.crt server.crt mediante el siguiente procedimiento: Creamos el directorio temporal para los certificados y llaves: shell> mkdir /etc/httpd/ssl.crt Se genera la llave con encriptacion DES de 1024 bits: shell> openssl genrsa -des3 -passout pass:asecretpassword out /etc/httpd/ssl.crt/server.key.org 1024 Se genera la duración n del certificado a 3650 días(10 d años): a shell> openssl req -new -passin pass:asecretpassword -passout pass:asecretpassword -key /etc/httpd/ssl.crt/server.key.org -out /etc/httpd/ssl.crt/server.csr -days 3650 Se genera el certificado: shell> openssl req -x509 -passin pass:asecretpassword -passout pass:asecretpassword -key /etc/httpd/ssl.crt/server.key.org -in /etc/httpd/ssl.crt/server.csr -out /etc/httpd/ssl.crt/server.crt -days 3650 5

INSTALACION DE APACHE WEB SERVER Soporte de encriptación n SSL Generamos la llave del certificado del servidor: shell> openssl rsa -passin pass:asecretpassword -in /etc/httpd/ssl.crt/server.key.org -out /etc/httpd/ssl.crt/server.key Creamos un directorio para colocar las llaves del servidor: shell> mkdir /etc/httpd/ssl.key Movemos la llave creada al nuevo directorio y le damos permisos de solo lectura: shell> mv /etc/httpd/ssl.crt/server.key /etc/httpd/ssl.key/server.key shell> chmod 400 /etc/httpd/ssl.key/server.key INSTALACION DE APACHE WEB SERVER Soporte de encriptación n SSL (NOTA: Es seguro aceptar los valores por defecto en todas las preguntas s que se vean cuando se crea /etc/httpd/ssl.crt 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 n no tiene validez. Si no se desea que se muestre una advertencia, es necesario comprar un certificado SSL "real" (que no es gratis). Se puede visitar uno de los siguientes sitios: http://www.instantssl.com www.instantssl.com/ http:// ://www.verisign.com/ http:// ://www.thawte.com/ http:// ://www.baltimore.com/ http:// ://www.ipsca.com/ http:// ://www.entrust.com/ http:// ://www.geotrust.com/ PHP es una tecnología a del lado del servidor, que funciona embebida (es decir, incrustada) dentro del código c HTML de una pagina, dándole d mayor dinamismo a la misma, con acceso a bases de datos, creación n de foros, libros de visita, rotación 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. Esta tecnología a inició como un pasatiempo de Rasmus Lerdorf pero hoy en día, d gracias a ser gratis, cuenta con miles de adeptos y actualizaciones muy constantes. ntes. 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. La forma mas fácil f de averiguar cuando una pagina es o no PHP, es verificando su extensión, n, que puede ser generalmente.php. php,,.phtml. phtml,,.php3,.php4 PHP está siendo explotado con gran provecho alrededor de toda la red... PHP es un lenguaje de programación usado generalmente para la creación n de contenido para sitios web.. PHP es el (acr( acrónimo recursivo de "PHP:" Hypertext Preprocessor", inicialmente PHP Tools,, o, Personal Home Page Tools) ) es un lenguaje interpretado usado para la creación n de aplicaciones para servidores, o creación n de contenido dinámico para sitios web,, y últimamente también n para la creación n de otro tipo de programas incluyendo aplicaciones con interfaz gráfica usando la librería GTK+. Visión n general El fácil f uso y la similaridad con los lenguajes más m s comunes de programación estructurada,, como C y Perl,, permiten a la mayoría a de los programadores experimentados crear aplicaciones complejas con una curva de aprendizaje muy suave. También n les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y prácticas. Debido al diseño o de PHP, también n es posible crear aplicaciones con una interfaz gráfica para el usuario (también n llamada GUI), utilizando la extensión PHP-GTK GTK. También n puede ser usado desde la Línea de comandos,, de la misma manera como Perl o Python puden hacerlo, esta versión n de PHP se llama PHP CLI (Command( Line Interface). 6

Su interpretación n y ejecución 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 n al servidor para que le envíe 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 rselo al cliente. Además es posible utilizar PHP para generar archivos PDF, Flash,, así como imágenes en diferentes formatos, entre otras cosas. Permite la conexión 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 n de Aplicaciones web muy robustas. PHP también n tiene la capacidad de ser ejecutado en la mayoría 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 s populares ya que existe en versión CGI,, módulo m para Apache,, e ISAPI. El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET VB.NET,, a ColdFusion de la compañí ñía Macromedia,, a JSP/Java de Sun Microsystems,, y al famoso CGI/Perl.. Aunque su creación n y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU,, existe además s un compilador comercial llamado Zend Optimizer. Historia de PHP 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 a 1994 para mostrar su currículum culum vitae y guardar ciertos datos, como la cantidad de tráfico que su página p web recibía. El 8 de junio del 1995 fue publicado "Personal Home Page Tools" " luego de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI. Dos programadores israelíes es de Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador gramatical (parser( en inglés) en el año a 1997 y crearon la base del PHP 3, cambiando el nombre del lenguaje a la forma actual. Experimentaciones E públicas de PHP 3 comenzaron inmediatamente y fue lanzado oficialmente en junio del 1998. Para 1999, Suraski y Gutmans reescribieron el código c de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend. También 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). La versión n más m s reciente de PHP es la 5.1, que incluye el novedoso PDO (Objetos s de Información n de PHP o PHP Data Objects) ) y mejoras utilizando las ventajas que provee el nuevo Zend Engine 2. Usos de PHP Los principales usos del PHP son los siguientes: Programación n de páginas web dinámicas, habitualmente en combinación n con el motor de base datos MySQL,, aunque cuenta con soporte nativo para otros motores, incluyendo o el estándar ODBC,, lo que amplía a en gran medida sus posibilidades de conexión. n. Programación n en consola, al estilo de Perl,, en Linux, Windows y Macintosh. Creación n de aplicaciones gráficas independientes del navegador, por medio de la combinación 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. X Ventajas de PHP La principal ventaja se basa en ser un lenguaje multiplataforma. Capacidad de conexión n con la mayoría a de los manejadores de base de datos que se utilizan en la actualidad. Leer y manipular datos desde diversas fuentes, incluyendo datos que pueden ingresar los usuarios desde formularios HTML Capacidad de expandir su potencial utilizando la enorme cantidad de módulos m (llamados ext's o extensiones). Posee una muy buena documentación n en su página p oficial. Es Libre, por lo que se presenta como una alternativa de fácil f acceso para todos. Permite las técnicas t de Programación n Orientada a Objetos. Estadística stica de PHP En el último año, a el número n de servidores que utilizan PHP se ha disparado, logrando situarse cerca de los 25 millones de sitios y 800.000 direcciones s IP, lo que le ha convertido a PHP en una tecnología 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 n del lado del servidor de sitios web.. Gracias a la aceptación n que ha logrado, y los grandes esfuerzos realizados por una creciente comunidad de colaboradores para implementarlo de la manera más m ó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 c abierto. 7

Gráfica del número n de dominios y direcciones IP que utilizan PHP. Fuente: de Netcraft. 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 m s que un contador y un libro de visitas, PHP ha experimentado en poco tiempo una verdadera revolución n y, a partir de sus funciones, en estos momentos se pueden realizar una multitud de tareas útiles para el desarrollo del web: Funciones de correo electrónico Podemos con una facilidad asombrosa enviar un e-mail e a una persona o lista parametrizando toda una serie de aspectos tales como el e-mail e de procedencia, asunto, persona a responder... Otras funciones menos frecuentes pero de indudable utilidad para gestionar correos electrónicos son incluidas en su librería. Gestión 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 a de las bases de datos comerciales y por ODBC a todas las bases de datos posibles en sistemas stemas Microsoft, a partir de las cuales podremos editar el contenido de nuestro sitio con absoluta a sencillez. Gestión n de archivos Crear, borrar, mover, modificar...cualquier tipo de operación n más m s o menos razonable que se nos pueda ocurrir puede ser realizada a partir de una amplia librería a de funciones para la gestión n de archivos por PHP. También n podemos transferir archivos por FTP a partir de sentencias en nuestro código, c protocolo para el cual PHP ha previsto también n gran cantidad de funciones. Tratamiento de imágenes Evidentemente resulta mucho más m s sencillo utilizar Photoshop para el tratamiento de imágenes pero... Y Y si tenemos que tratar miles de imágenes enviadas por nuestros internautas? La verdad es que puede resultar muy tedioso uniformar en tamaño o y formato miles de imágenes recibidas día d a tras día. d Todo esto puede ser también n automatizado eficazmente mediante PHP. También n puede parecer útil el crear botones dinámicos, es decir, botones en los que utilizamos el mismo diseño o y solo cambiamos el texto. Podremos por ejemplo crear un botón n haciendo una única llamada a una función n en la que introducimos el estilo del botón n y el texto a introducir obteniendo automáticamente ticamente el botón n deseado. A partir de la librería a de funciones graficas podemos hacer esto y mucho más. m INSTALACION DE PHP Descargar los Fuentes Para compilar PHP como modulo de Apache a partir de su código c fuente, se debe obtener previamente de la Web de PHP la versión n más m s reciente (http://( http://www.php.net/downloads.php). shell> wget http://bo.php.net bo.php.net/distributions distributions/php php-5.1.2. 5.1.2.tar.gz Descomprimimos el paquete obtenido previamente e ingresamos al directorio: d shell> cd /tmp shell> tar xvfz php-5.1.2. 5.1.2.tar.gz shell> cd php-5.1.2 5.1.2/ 8

INSTALACION DE PHP Configuración n de los Fuentes PHP Ahora configura tu PHP. Aquí es donde personalizas tu PHP con varias opciones, por ejemplo que extensiones serán n habilitadas. Ejecuta./configure --help para desplegar una lista de las opciones disponibles. En nuestro ejemplo haremos una configuración n básica b con soporte para Apache 2, MySQL y PostgreSQL. La ruta de apxs pueden ser diferente, de hecho, el binario puede ser nombrado apxs2 a en tu sistema. Por ejemplo:./configure with-apxs2= apxs2=/usr/sbin/apxs with-mysql=/ =/usr/local/ /local/mysql with-pgsql=/ =/usr/local/ /local/pgsql Los binarios de PHP se pueden reconstruir cada vez que se necesite una nueva extensión n del lenguaje y luego solo hay que reinstalar, esto mientras el servidor Apache esta parado, por ejemplo a continuación n si quisiéramos aumentar opciones como XML, IMAP, KERBEROS, SYBASE, etc. INSTALACION DE PHP Ejemplo: En un servidor especial se puede utilizar la siguiente configuraci ción n de opciones especiales que están n habilitadas, para varios opciones diferentes../configure with-apxs2=/ apxs2=/usr/sbin/apxs with-pgsql=/ =/usr/local/ /local/pgsql with-mysql=/ =/usr/local/mysql enable-track-vars enable-sockets with-config-file-path=/etc enable-ftp with-zlib with-openssl=/ =/usr enable-force-cgi-redirect enable-exifexif with-gd --disable disable-debug debug --disable disable-rpath --disable disable-static static with-pic with-layout=gnu enable-calendar enable-sysvsem enable-sysvshm enable-sysvmsg enable-trans-sidsid enable-bcmathbcmath with-bz2 enable-ctype with-db4 with-iconviconv enable-filepro with-gettext enable-mbstring enable-shmop enable-wddx with-xmlrpc enable-yp with-zlib enable-dbx enable-experimental-zts out without-mm enable-gd-native-ttfttf enable-soap enable-dbase with-xml with-sybase=/ =/usr/local/freetds with-dom with-mcrypt enable-mbregex with-mime-magic magic with-imapimap with-kerberos with-imap-ssl (UNA LINEA) INSTALACION DE PHP Compilación n e Instalación: n: En PHP, se debe especificar la opción with-pgsql=/ =/usr/local/ /local/pgsql with- mysql=/ =/usr/local/ /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 m desde fuentes) Luego se prosigue con la compilación n de los fuentes: shell> make Se debe recordar que para compilar se requiere, como mínimo, m GNU Make y GNU CC. A continuación n si no se ha encontrado ninguna falla de compilación n se procede a instalar los binarios resultantes del proceso de compilación: shell> make install Esto instalara el binario PHP (normalmente en /usr/local/bin/php)) que podrá ejecutarse desde línea l de comandos así como un modulo de Apache2. CONFIGURACION POSTINSTALACION Configurar PHP Luego se debe crear el archivo de configuración n /etc/ etc/php.ini.. Lo mejor es tomar los archivos de ejemplo que vienen con los Fuentes de PHP: cp /tmp/php-5.1.2/ 5.1.2/php.ini-dist /etc/php.ini Luego si se desea se puede modificar /etc/php.ini.. para satisfacer las necesidades Configurar Apache2 Ahora es necesario adicionar las siguientes entradas en el archivo de configuración n de Apache2 /etc/httpd/httpd.confhttpd.conf : AddHandler cgi-script.cgi. AddHandler cgi-script.pl. AddType text/html.shtml AddOutputFilter INCLUDES.shtml. AddType application/x /x-httpd-phpphp.php.php4.php3 9

CONFIGURACION POSTINSTALACION Script de Inicio Crear un script de arranque de sistema /etc/init.d/httpd #!/bin/sh case "$1" in start) /usr/sbin/apachectl startssl ;; stop) /usr/sbin/apachectl stop ;; restart) $0 stop && sleep 3 $0 start ;; reload) $0 stop $0 start;; CONFIGURACION POSTINSTALACION *) echo Forma de Uso: $0 {start stop restart reload}" exit 1 esac Darle permisos de lectura y ejecución: chmod 755 /etc/init.d/httpd En orden de iniciar el servicio de Apache al iniciar el servidor Linux en tiempo de booteo crear los links necesarios: shell> ln -s /etc/init.d/httpd /etc/rc2.d/s20httpd shell> ln -s /etc/init.d/httpd /etc/rc3.d/s20httpd shell> ln -s /etc/init.d/httpd /etc/rc4.d/s20httpd shell> ln -s /etc/init.d/httpd /etc/rc5.d/s20httpd shell> ln -s /etc/init.d/httpd /etc/rc0.d/k20httpd shell> ln -s /etc/init.d/httpd /etc/rc1.d/k20httpd shell> ln -s /etc/init.d/httpd /etc/rc6.d/k20httpd Luego iniciar Apache2: shell> service httpd start CONFIGURACION SERVICIO Probar Configuracion Servidor web netstat -tap CONFIGURACION SERVICIO La salida debe ser algo parecido a la siguiente captura de pantalla: Muestra que Apache2 usa el puerto 80 (http) y 443 (https). Ahora ir al directorio /usr/local/apache2/htdocs y crear el archivo llamado info.php con el siguiente contenido: shell> cd /usr/local/apache2/htdocs shell> echo <?php phpinfo();php?> > info.php chmod 755 info.php 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). 10

/etc/httpd/httpd.confhttpd.conf Cuando se ha instalado el servidor, hay que configurarlo. Apache incluye por defecto una configuración n que arranca el servidor en el puerto TCP por defecto, que es el e puerto 80, y sirve los ficheros del directorio que se ha especificado icado mediante la directiva de configuración n denominada DocumentRoot. Este fichero de configuración 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. n. Estructura del fichero de configuración httpd.conf httpd.conf está compuesto por tres bloques fundamentales, aunque las directivas de cada uno de los bloque pueden aparecer desordenadas o mezcladas. Estos bloques son: Parámetros globales Directivas de funcionamiento Hosts virtuales Parámetros de Configuración 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 n de dicho parámetro. Las secciones fundamentales son: <Directory>: los parámetros que se encuentran dentro de la sección Directory sólo se aplican al directorio indicado y sus subdirectorios. <DirectoryMatch>: igual que Directory,, aunque acepta expresiones regulares en el nombre del directorio. <Files>: los parámetros de configuración n facilitan control de acceso a los ficheros mediante su nombre. <FilesMatch>: igual que Files, pero acepta en el nombre del fichero expresiones regulares. <Location>: proporciona control de acceso a los ficheros mediante la URL. <LocationMatch>: igual que Location,, pero acepta en el nombre del fichero el uso de expresiones regulares. <VirtualHost>: los parámetros sólo s se aplican a aquellas peticiones dirigidas a este host (nombre de servidor, dirección n IP o puerto TCP). Parámetros de Configuración <Proxy>: sólo s se aplican estos parámetros a aquellas peticiones de proxy (requiere que esté instalado "mod" proxy") coincidentes con la especificación n de URL. <ProxyMatch>: igual que proxy,, pero acepta en la URL indicada el uso de expresiones regulares. <IfDefine>: sólo s se aplica si al arrancar el servidor existe un parámetro concreto definido en la línea l de comandos, mediante la opción -D. <IfModule>: se aplican los parámetros si el módulo m especificado se encuentra cargado (mediante LoadModule) ) en el momento de arrancar el servidor. En caso de que exista conflicto entre diferentes especificaciones s de parámetros, el orden de precedencia es: <Directory> > y.htaccess. <DirectoryMatch> > y <Directory< Directory> <Files> y <FilesMatch< FilesMatch> <Location> > y <LocationMatch< LocationMatch> En cuanto a <VirtualHost< VirtualHost>, estas directivas siempre se aplican siempre después s de las directivas generales. De este modo, un VirtualHost puede modificar la configuración n por defecto. Directivas principales Hay algunas directivas que, generalmente, no suelen aparecer en las secciones anteriormente mencionadas (algunas de ellas no deben estar en ninguna nguna sección, y es obligatorio que aparezcan en la sección n principal), sino que se encuentran en la sección n principal. Estas directivas son: ServerAdmin: : especifica la dirección n de correo electrónico del administrador. Esta dirección n puede mostrarse en los mensajes de error a modo de dirección n de contacto para que los usuarios notifiquen el error al administrador. No debe d estar dentro de ninguna sección. ServerName: : sirve para especificar el nombre y el puerto TCP que el Apache utiliza para identificarse. Se puede determinar de forma automática, tica, pero se recomienda especificarlo. Si el servidor no tuviera un nombre DNS, es recomendable endable incluir su dirección n IP. No debe incluirse dentro de ninguna sección. Su sintaxis es: ServerName nombredireccion:puerto.. Ejemplo: ServerName www.uoc.edu:80 ServerName 192.168.1.1:80 11

Directivas de sección Casi todas las secciones de localización n (Directory( Directory, Location,, etc.) incluyen una serie de directivas en su configuración n que permiten controlar el acceso al contenido. El módulo mod_access facilita estas directivas. Allow: : permite especificar quién n tiene autorización n para acceder a un recurso. Se pueden especificar direcciones IP, nombres de máquina, m fragmentos del nombre o de la dirección n o variables de la petición. Existe la palabra clave "all" all" " que indica "todos los clientes". Deny: : permite especificar a quién n no permitimos el acceso a un recurso. Cuenta con las mismas opciones que Allow. Order: : permite afinar el funcionamiento de las anteriores directivas: Allow y Deny. Existen 2 opciones: Allow,Deny.. Por defecto se deniega el acceso y sólo s podrán n acceder quellos clientes que cumplan las especificaciones de Allow y en cambio no cumplan las especificaciones de Deny. Deny,Allow.. Por defecto se permite el acceso y sólo s podrán n entrar los clientes que no cumplan las especificaciones de Deny o sís cumplan las especificaciones de Allow. Servidores virtuales Apache permite servir varios sitios web con un único servidor. Para ello permite la creación n de dominios virtuales en función 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 n de nombre. Esta capacidad simplifica enormemente la administración 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 n de aquellos navegadores muy antiguos que no envíen la cabecera "Host:" con cada petición. Servidores virtuales por dirección n IP Para atender a varios servidores virtuales, cada uno de ellos con n una dirección IP diferente, se utiliza la sección n de configuración VirtualHost.. Con esta sección n se define una configuración n y dirección n IP para cada uno de los servidores. Servidores virtuales Un ejemplo sería a el siguiente. <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> <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 VirtualHost> Este ejemplo define 2 servidores web,, cada uno de ellos con una IP y un nombre diferentes. Ambos tienen su propio DocumentRoot,, etc. 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. Servidores virtuales por nombre Para atender a varios servidores, utilizando una misma dirección 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: n: 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> <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 VirtualHost>. Se puede utilizar una dirección 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. 12

Cuando nuestro servidor tiene 2 direcciones IP, pero hemos asignado ado a las 2 el mismo nombre, se necesita un uso especial de las directivas de servidores res por nombre. Por ejemplo, cuando se dispone una conexión n de red en la intranet y otra conexión diferente en Internet con el mismo nombre, caso en el cual podemos os servir el mismo contenido de la esta forma: 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 VirtualHost> Con esta configuración 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 ficación n de servidor virtual por defecto "_default default_" que permite atender las peticiones que no sirve ningún otro servidor virtual. <VirtualHost _default_> DocumentRoot /www/defecto </VirtualHost VirtualHost> Podemos usar la etiqueta "_default default_" indicando un número n de puerto para especificar servidores por defecto que sean diferentes para cada puerto. Apache permite también n configuraciones más m complejas de servidores virtuales, muy útiles en casos de, por ejemplo, servidores masivos. Una excelente guía 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 c libre, pero la mayoría a de ellos han quedado eclipsados por Apache. 13