lunes, 30 de marzo de 2009

Cómo instalar un servidor PHP-MySQL bajo Windows

Video que explica cómo instalar WAMP (Windows-Apache-MySQL-PHP)

En inglés, bastante completito: http://www.killerphp.com/videos/wamp_setup_part_1/wamp_setup_part_1.html
http://www.killerphp.com/videos/wamp_setup_part_2/wamp_setup_part_2.html

ó con este simpático video con música:
http://videos.todomodding.com/videos/detalle/instalar-apache-con-wamp-server

Recordá que si tenés habilitado el servicio de publicación de world wide web de windows, el cual está atendiendo peticiones a través del puerto 80, te convendrá cambiar el puerto de escuchade http del servidor Apache que viene con WAMP.

Para eso, click sobre el ícono de WampServer en la barra de sistema, config files, httpd.conf
Buscar Listen 80 y cambiarlo por Listen 81. Reiniciar el servicio desde la interfaz de WampServer. A partir de ese momento, http://localhost:81/

La otra recomendación es crear carpetas debajo de d:\wamp\www para ordenar los "sitios" que quieras crear.

02 Conceptos Cliente y Servidor

Servidores y clientes
Es frecuente observar en la calle que son muchas las personas que cuando se refieren a los servidores lo hacen con sí se tratara de máquinas complejísimas, misteriosas, lejanas y enormes que parecen totalmente distintas de la computadora que usamos habitualmente. ¡Nada más lejos de la realidad!

Intentaremos aclarar algunos conceptos con ejemplos cotidianos. Pensemos en esas computadoras remotas (también llamados host) como si se tratara de uno esos sitios desde los que se sirven comidas a domicilio.

Quizá lo primero en lo que se te ocurra pensar sea en una pizza, no porque desconozcas que también es posible comprar otras cosas sino por la popularidad de ese tipo de servicio. Algo similar ocurre con los host. La frecuencia con la que accedemos a ellos en demanda de páginas web hace que tendamos a identificarlos con ellas, pero... también los host ofrecen –o pueden ofrecer– más servicios. Sigamos con las comidas a domicilio.

Cada una de esas empresas puede atender peticiones uno o varios servicios distintos (pizzas, helados, o platos regionales, por citar algunos ejemplos), pero la oferta de cada uno de esos servicios requiere una infraestructura adecuada a cada caso. La oferta de pizzas exigirá disponer de un horno, y la de helados necesitará de una instalación especial de refrigeración.

Pues bien, algo muy similar ocurre con los host. También éstos pueden ofrecer uno o varios servicios (páginas web, correo electrónico, transferencias FTP, noticias, etc.) y también es necesario que cada servicio disponga de su propia infraestructura, que en este caso sería un programa distinto (software de servidor) para cada uno de ellos.

Como puedes ver, no basta con hablar de servidores. Es necesario especificar también qué es lo que sirven, para lo cual habría que decir: servidor de páginas web, servidor de correo, etc. y tener presente que -aunque convivan en el mismo host– cada uno de ellos requiere su propio software y su propia configuración.

Resumiendo, cuando en lenguaje coloquial hablamos de un servidor estamos aludiendo un host (computadora remota) –el tamaño y la lejanía carecen de importancia– provisto de programas (software de servidor) que, cuando está accesible (conectado a Internet) y con el software activo (servicio en funcionamiento) es capaz de atender peticiones y devolver a los clientes los documentos solicitados, o un mensaje de error, en el caso de que no estuvieran disponibles.


Veamos un ejemplo de como se desarrolla ese proceso de petición-respuesta (en inglés "request-response").

Para leer el correo electrónico necesitas disponer de un programa –supongamos que es Outlook Express– instalado en tu ordenador y hacer, a través de él, una petición a una computadora remota (host). Si quisieras visualizar páginas web tendrías que utilizar un programa distinto –Internet Explorer, por ejemplo– capaz de realizar esta otra tarea.
Al programa que utilizamos para realizar cada petición le llamaremos cliente.

¿Qué es una petición?
Una petición es un conjunto de datos que un cliente (recuerda que el cliente siempre es uno de los programas instalados en tu PC) envía a través de Internet solicitando una respuesta determinada por parte de una computadora remota.

¿Qué contendría esa petición?
Cada tipo de petición tendrá contenidos distintos. Por ejemplo, cuando se trata de leer mensajes de correo, la petición realizada por el cliente (Outlook Express) contendría, entre otros, muchos de los datos de la configuración de la cuenta, tales como: el protocolo (forma de comunicación) – en el caso del correo lo habitual sería el protocolo POP (Post Office Protocol)–, el nombre de host donde está alojado el buzón (servidor POP ó servidor de correo entrante), el nombre de la cuenta, la contraseña de acceso, y algunas otras informaciones relativas a la gestión de esa cuenta tales como si deben conservarse o no los mensajes en el servidor, etc.

¿Qué ocurre con esa petición?
Cualquier petición pasa en primera instancia por un servidor de nombres de dominio (Domain Name Server) DNS, una especie de guía telefónica que contiene los nombres de los servidores y las direcciones IP a través de las cuales están conectados a Internet.

Podría decirnos –los datos son ficticios– que "medicos.hospitalcentral.ar" es el nombre de un host que está conectado a Internet a través de la dirección IP 111.112.113.114

Una vez resuelta esa petición por el servidor DNS (direccionamiento de la petición a la IP correspondiente) se comprobará si esa IP está activa (si efectivamente hay un ordenador conectado a través de ella) y, en caso de estarlo, se determinará si esa computadora puede atender la petición.

¿Qué tiene que ocurrir para que pueda atenderse una petición?
Es necesario que la computadora remota tenga instalado y funcionando el software de servidor adecuado al protocolo de nuestra petición. Ello quiere decir -siguiendo con el ejemplo– que el ordenador remoto debe tener instalado y funcionando un software específico de servidor de correo capaz de interpretar el protocolo POP3 especificado en la petición.

jueves, 5 de marzo de 2009

01. Tipos de Páginas Web

Una sencilla clasificación de los tipos de páginas web podría ser esta:

  • Páginas estáticas
  • Páginas dinámicas

Páginas estáticas

Diremos que una página es estática cuando sus contenidos no pueden ser modificados –ni desde el servidor que la aloja (computadora remota) ni tampoco desde el cliente (navegador)– mediante ninguna intervención del usuario ni tampoco a través de ningún programa.

Páginas dinámicas.

Llamaremos dinámicas a las páginas cuyos contenidos sí pueden ser modificados –de forma automática o mediante la intervención de un usuario– bien sea desde el cliente y/o desde el servidor.

Para que esas modificaciones puedan producirse es necesario que algo o alguien especifique: qué, cómo, cuándo, dónde y de qué forma deben realizarse, y que exista otro algo o alguien capaz de acceder, interpretar y ejecutar tales instrucciones en el momento preciso.

Igual que ocurre en la vida cotidiana, las especificaciones y las instrucciones requieren: un lenguaje para definirlas; un soporte para almacenarlas y un intérprete capaz de ejecutarlas. Somos capaces de entender unas instrucciones escritas en castellano pero si estuvieran escritas en italiano las cosas seguramente serían bastante distintas, y, por supuesto, a un italiano le pasaría justamente lo contrario.

Igual ocurre con los programas intérpretes de los lenguajes de script. Ellos también requieren órdenes escritas en su propio idioma.

Scripts

Se llama script a un conjunto de instrucciones escritas en un lenguaje determinado que van incrustadas dentro de una página WEB de modo que su intérprete pueda acceder a ellas en el momento en el que se requiera su ejecución. Cuando se incrustan scripts en una página WEB empiezan a convivir en un mismo documento informaciones destinadas a distintos intérpretes.

Por una parte, el código HTML que ha de ser interpretado por el navegador, y por la otra, los scripts que han de ser ejecutados –dependiendo del lenguaje en el que hayan sido escritos– por su intérprete correspondiente.

La manera de diferenciar los contenidos es delimitar los scripts marcando su comienzo con una etiqueta de apertura <script> y señalando el final con una etiqueta de cierre </script>.

Lo que no está contenido entre esas etiquetas se considerará código HTML.

La posibilidad de insertar en un mismo documento scripts desarrollados en distintos lenguajes obliga a especificar cuál se ha utilizado en cada caso, para que en el momento en el que vayan a ser ejecutados se invoque el intérprete adecuado. Para ello, dentro de la propia etiqueta de apertura (<script>) se inserta una referencia al tipo de lenguaje con esta sintaxis:

language="nombre"

Por ejemplo:

<script language="PHP">

............ instrucciones ........

</script>

indicaría que las instrucciones están escritas con la sintaxis de PHP.

Por el contrario, en este otro supuesto:

<script language="JavaScript">

............ instrucciones ........

</script>

estaríamos señalando que en las instrucciones contenidas en el script se ha utilizado sintaxis de JavaScript.

Para el caso concreto de PHP, existe una sintaxis alternativa, mucho más cómoda y que es la que se usa habitualmente.

Es la siguiente:

<?

............instrucciones........

?>

<? hará la misma función que <script language="PHP"> y ?> será equivalente a </script>


Lenguajes

Hay múltiples posibilidades en cuanto a lenguajes de script. Pero antes de hacer mención a algunos de ellos es conveniente hacer una clasificación previa.

Los lenguajes de script pueden clasificarse en dos tipos:

• Del lado del cliente

• Del lado del servidor

Lenguajes del lado del cliente

Diremos que un lenguaje es del lado del cliente cuando el intérprete que ha de ejecutar sus scripts es accesible desde éste –el cliente– sin que sea necesario hacer ninguna petición al servidor.

Seguramente te ha ocurrido alguna vez que al intentar acceder a una página web ha aparecido un mensaje diciendo que la correcta visualización de la página requiere un plug-in determinado, y que, a la vez, se te haya ofrecido la posibilidad de descargarlo en ese momento.

Eso ocurre porque cuando el navegador –que en el caso de las páginas web es el cliente– trata de interpretar la página, encuentra incrustado en ella algo (un archivo de sonido, una animación Flash, etc.) que –de forma muy similar a lo que ocurre con los scripts– requiere un intérprete adecuado del que no dispone en ese momento.

Cuando los scripts contenidos en un documento son de este tipo, el servidor lo entrega al cliente si efectuar ningún tipo de modificación.

Lenguajes del lado del servidor

Un lenguaje es del lado del servidor cuando la ejecución de sus scripts se efectúa, por instancia de este –el servidor–, antes de dar respuesta a la petición, de manera que el cliente no recibe el documento original sino el resultante de esa interpretación previa.

Cuando se usan estos tipos de lenguaje el cliente recibe un documento en el que cada script contenido en el original habrá sido sustituido por los resultados de su ejecución. Esto es algo a tener muy en cuenta, porque, en este caso, los usuarios no tendrán la posibilidad de visualizar el código fuente, mientras que cuando se trata de lenguajes del lado del cliente siempre es posible visualizar los scripts, bien sea de forma directa –mirando el código fuente de la página recibida– o leyendo el contenido de ficheros externos –vinculados a ella– que son bastante fáciles de encontrar en la caché del navegador. La utilización de este tipo de scripts requiere que el intérprete del lenguaje sea accesible –esté del lado– desde el propio servidor.

¿Cómo resuelve sus dudas el servidor?

Dado que en unos casos el servidor debe entregar el documento original –páginas estáticas o páginas dinámicas en las que se usan lenguajes del lado del cliente– mientras que en otros casos –páginas dinámicas usando lenguajes del lado del servidor– tiene que devolver el resultado de la ejecución de los scripts, es razonable que te preguntes: ¿cómo sabe el servidor lo que debe hacer en cada caso?

La respuesta es simple. Eso hay que decírselo. Y se le dice de una forma bastante simple. Se indica al poner la extensión al documento.

Si en la petición se alude a un documento con extensión .htm o .html el servidor entenderá que esa página no requiere la intervención previa de ningún intérprete de su lado y entre- gará la página tal cual.

Si en esa petición se aludiera a una extensión distinta –.php, por ejemplo– el servidor entendería que antes de servir la página debe leerla y requerir al intérprete de PHP que ejecute los scripts desarrollados en ese lenguaje (en caso de que los contuviera) y devolvería al cliente el documento que resultara de las eventuales ejecuciones de tales scripts.


Algunos lenguajes con nombre y apellidos

Sin pretender hacer una enumeración exhaustiva, los lenguajes de script más populares son los siguientes:

Del lado del cliente

• DHTML • JavaScript • VBScript

DHTML no es exactamente un lenguaje de programación. Se trata más bien de una serie de capacidades que se han ido añadiendo a los navegadores modernos mediante las cuales las páginas pueden contener hojas de estilo y/o organizarse en capas susceptibles de ser redimensionadas, modificadas, desplazadas y/o ocultadas.

JavaScript es uno de los lenguajes más populares. Cada navegador incluye su propio intérprete y es frecuente que los resultados de visualización sean algo distintos según el navegador y la versión que se utilice.

Parece ser que las versiones más recientes de los distintos navegadores se aproximan a un estándar –ECMA Script-262– que ha sido desarrollado por la ECMA (Asociación Europea de Normalización de Sistemas de Información y Comunicación), lo que hace suponer que en un futuro muy próximo todos los navegadores se ajustarán a esa especificación y que, con ello, las páginas web ya se visualizarán de forma idéntica en todos ellos.

VBScript es un lenguaje de script derivado de Visual Basic y diseñado específicamente para los navegadores de Microsoft.

Del lado del servidor

Los más populares de este tipo son: • PHP • ASP • Perl • JSP

Cada uno de ellos tiene sus propias peculiaridades. Pero dado que aquí tratamos sobre PHP quizá sea conveniente –a modo de recordatorio– hacer algunas precisiones sobre los requisitos imprescindibles para trabajar con este lenguaje.

Requisitos para el uso del lenguaje PHP

De acuerdo a lo comentado en los párrafos anteriores y en los esquemas que tenemos a la derecha, el uso del lenguaje PHP requiere tener instalado y configurado:

• Un software de servidor –configurado para interactuar con el intérprete de PHP– que soporte el protocolo HTTP y que en nuestro caso será el denominado servidor Apache.

• El intérprete de PHP.

• Un software de servidor de bases de datos capaz de ser gestionado mediante funciones propias de PHP.

Utilizaremos el servidor de bases de datos conocido como MySQL.