martes, 17 de agosto de 2010

Instalar Apache, PHP y MySql en Windows

Primero descargamos la última versión del servidor web Apache. Elegimos las opciones por defecto que nos ofrece el asistente de instalación. Una vez instalado accedemos a su configuración localizando el archivo httpd.conf. De momento lo único que comprobaremos es que el servidor Apache esté escuchando un puerto libre (Listen 8080). Lo lógico sería atender las solicitudes del puerto 80 que es el estándar, pero si ya está previamente instalado el servidor web Microsoft IIS (como es mi caso), Apache debe escuchar las peticiones que lleguen por el puerto 8080 para no entrar en conflicto, por lo que en este caso para comprobar que todo está OK escribimos en la barra de dirección del navegador http://localhost:8080

Descargamos la última versión de PHP, como lo vamos a usar con Apache, hacemos caso de las recomendaciones y elegimos la compilación VC6 x86 Thread Safe: "If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP".

Copiamos el contenido del zip en C:\php

Ahora vamos a indicarle al servidor web Apache que debe utilizar PHP, para ello regresamos al archivo httpd.conf y localizamos la sección "Dynamic Shared Object (DSO) Support" y añadimos la siguiente línea:

LoadModule php5_module "c:/php/php5apache2.dll"

Importante: Si la versión de Apache es 2.2.x o superior la librería que hay que referenciar es php5apache2_2.dll

Apache 2.2.x Support: Users of Apache 2.2.x may use the documentation below except the appropriate DLL file is named php5apache2_2.dll and it only exists as of PHP 5.2.0.

Justo debajo de esta línea añadimos:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

Localizamos la sección DirectoryIndex y añadimos index.php como página de inicio:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Reiniciamos el servidor y ya debería funcionar PHP correctamente. Ahora solo queda adaptar el archivo php.ini a nuestras necesidades, habilitando los módulos o extensiones que vayamos a necesitar, no sin antes indicar la ruta donde se encuentran así:

extension_dir = "C:/php/ext/"

Por último, instalamos MySql siguiendo el asistente. La última vez que lo instalé me encontré con que no podía conectar vía mysql_connect() utilizando "localhost" como nombre del servidor ya que lanzaba el siguiente error:

Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder.

Este inconveniente se debe a la incapacidad del sistema operativo de resolver "localhost" hacia 127.0.0.1 Esto sucede tanto en Windows Vista como en Windows 7 ya que por defecto el archivo Hosts ubicado en C:/Windows/System32/drivers/etc trae la siguiente línea comentada:

#127.0.0.1     localhost

Solo hay que quitar la almohadilla y a funcionar.