Ads 468x60px

Perfil

martes, 19 de febrero de 2013

¿Cómo instalar y configurar Apache, PHP y MySQL en Windows?


Introducción

Importante: Si usted ya dispone de un servidor en funcionamiento no olvide realizar una copia de seguridad (sobre todo de las bases de datos de MySQL), ya que esta instalación que haremos está pensada como primera instalación y no como actualización.

Para quien recien se inicia (y para el no tan novato) la instalación de estos servicios e interpretes suele ser una tarea confusa, tediosa y pesada. Ésto se debe a que existen muchas configuraciones que se deben realizar para un correcto funcionamiento.

Este artículo intentará evacuar las dudas y brindar un tutorial paso a paso para poder instalar Apache, PHP y MySQL en un sistema operativo Windows NT (XP, 2000, 2003, etc) de una manera que se entienda qué es lo que se está haciendo. A quien siga paso a paso este manual le aseguro que logrará el funcionamiento deseado del servidor, pero ésto no quiere decir que se convertirá en un experto en el tema. Para ello recomiendo revisar algunos libros que mencionaré al final del artículo.

Requerimientos iniciales

Este artículo ha sido confeccionado a partir de una instalación y configuración real bajo un sistema operativo Windows Server 2003 y con las siguientes versiones de Apache, PHP y MySQL:

* Apache 2.2 (apache_2.2.4-win32-x86-no_ssl.msi) - 
Descargar 4.2 Mb (exe/msi)
* PHP 5.2 (php-5.2.0-Win32.zip) - 
Descargar 9.2 Mb (zip)
* MySQL 5.0 (mysql-essential-5.0.27-win32.msi)- 
Descargar 16.8 Mb (exe/msi)

Por lo tanto se recomienda descargar dichas versiones para poder seguir el tutorial de forma exacta y no encontrarse con contratiempos innecesarios.
Una vez descargados es buena idea colocar dichos archivos en una carpeta para su rápida localización, por ejemplo C:\Setups.

Igualmente este artículo sirve para muchas otras versiones de estos servicios, seguramente realizando mínimos cambios en sus configuraciones.

Pero antes de pasar a la instalación de los servicios es buena idea crear el siguiente arbol de directorios:
1
C:\
2
C:\Apache

3
C:\MySQL
4
C:\PHP

5
C:\WWW


Una vez listo eso podemos proceder a instalar y configurar.

MySQL

¿Porqué comenzar la guía con la instalación de MySQL y no con PHP o Apache?

MySQL (como todos los servidores de bases de datos cliente/servidor) son servicios del sistema que pueden ser usados por cualquier programa que lo requiera.

PHP no es el único programa que puede hacer uso de MySQL, de hecho existen infinidad de programas y lenguajes que permiten realizar una conexión contra este servidor de bases de datos. No hace falta más que buscar el 
listado en donde encontrará que lenguajes como C, C++, Java, la propia plataforma .NET, y un largo etc. hacen uso de éste motor.

Lo anterior implica que MySQL no depende de ninguno de esos programas clientes para su instalación (sería inimaginable de otra manera), por lo que es oportuno comenzar con él para después continuar con lo demás. Asi que manos a la obra.

Instalación de MySQL

Utilizaremos el wizard para instalar MySQL que nos guiará de forma amena en su instalación.

Al ejecutarlo nos aparece la ventana de bienvenida, presionamos Next y seleccionamos el tipo de instalación Custom y continuamos. En esta ventana de instalación avanzada vamos al botón Change... para modificar el directorio de instalación de MySQL y buscamos nuestro ya creado C:\MySQL, de esta ventana no modificamos nada más.
Si continuamos veremos el botón Install que presionaremos con mucho gusto.

En la mitad de la instalación aparecerá una ventana para obtener una cuenta en el sitio oficial de MySQL, podemos elegir Skip Sign-up y presionar Next sin problemas.

Ya instalado MySQL se nos muestra una ventana indicando tal situación y una opción marcada: Configure the MySQL Server now, la dejamos marcada y damos a Finish. Si por algún motivo el instalador terminó y no levantó el programa de configuración, no se preocupe. Siempre puede invocarlo desde C:\MySQL\bin\MySQLInstanceConfig.exe.

Configuración de MySQL

MySQL Server Instance Configuration Wizard

Este programa es una interface gráfica de configuración para el archivo my.ini que inicialmente no existe, sino que disponemos de templates de éste archivo, por lo que es importante ejecutarlo apenas se terminaron de copiar los archivos de la instalación al disco a fin que cree el nuevo archivo de configuración C:\MySQL\my.ini.

Al ejecutarlo presionamos Next y elegimos Detailed Configuration.
Al ser ésta una instalación para desarrollar elegiremos Developer Machine, esa configuración es muy buena para máquinas con poca cantidad de memoria ram.

Luego y volviendo a tomar en cuenta que es un servidor de desarrollo, es que elegimos Multifunctional Database, ésto instala los diferentes motores para tablas que tiene mysql. De esa forma podremos crear bases de datos MyISAM asi como también InnoDB.

En la siguiente ventana nos pregunta donde crear las bases de datos InnoDB, personalmente me gusta saber donde están asi que siempre elijo la opción MySQL InnoDB Datafiles (lo cual creará el directorio C:\MySQL InnoDB Datafiles), y le doy a Next.

Posteriormente nos pregunta cuantas conexiones concurrentes creemos que el servidor necesitará durante su uso. Un valor por defecto de 20 sería más que correcto, por lo que elegir Decision Support es una buena idea. De todas formas puede especificarlo en el seteo manual.

Ahora nos pregunta en que puerto se realizará la conexión mediante TCP/IP y si debemos habilitar el modo estricto. A esta ventana la dejamos como está y presionamos Next.

La siguiente ventana de configuración es muy importante, se trata del charset por defecto que tendrán nuestras bases de datos cuando se creen sin especificar dicho valor. Por los tiempos en los que corremos, la mejor opción es sin lugar a dudas UTF8 que la seleccionaremos en Manual Selected Default Character Set / Collation.

Dado que este manual es para Windows NT, utilicemos servicios. A ésto se lo especificamos al tildar la opción Install As Windows Service y podemos asignarle un nombre al servicio. Es buena idea elegir MySQL5 como nombre y permitir que el servidor se levante apenas el sistema operativo arranca.
Luego hay otra opción muy importante Include Bin Directory in Windows PATH la cual dejaremos sin marcar ya que luego lo agregaremos a mano de ser necesario.

La siguiente ventana nos pide algo imprescindible, la clave del administrador del servidor. El nombre del administrador es root y su password... el que usted desee. Le aconsejo que coloque uno que recuerde, quizá el de inicio de sesión de Windows.
Por cuestiones de seguridad, no cree una cuenta anónima.

En la última ventana solo debe presionar Execute y si todo marcha bien, presione Finish y felicidades!... si hubo un error, repita todos los pasos anteriores. Ésto es básicamente para crear el archivo my.ini, pero recuerde que siempre puede hacerlo editandolo directamente y reiniciando el servidor.
Editando directamente el archivo my.ini

Todo lo anterior se aplica aquí, y hay que ser cuidadoso en ambas situaciones.

Se recomienda enfáticamente que primero ejecute MySQL Server Instance Configuration Wizard para crear el archivo my.ini pero si no quiere, siempre puede tomar alguno de los templates (*.ini) colocados en la carpeta C:\MySQL, modificarlo y renombrarlo a my.ini.
Con los pasos anteriores nos alcanza perfectamente para tener el servidor funcionando correctamente, si quiere mayor configuración revise el manual. Y no olvide, luego de modificar el archivo de configuración debe reiniciar el servidor para que los cambios le sean visibles.

Testeando el servidor

Para testear lo mas simple es realizar lo siguiente en una consola cmd:
1
C:\MySQL\bin>mysqlshow.exe --user=root --pass=suclaveaqui
2
+--------------------+

3
|     Databases      |
4
+--------------------+

5
| information_schema |
6
| mysql              |

7
| test               |
8
+--------------------+


Este programa con esos parámetros se conectará con el servidor y le pedirá las tablas ya creadas (en nuestro caso veremos las creadas por defecto), las mostrará y cerrará la conexión. Si esto funciona, entonces su servidor está bien instalado y funcionando correctamente.

Ya tenemos el servidor MySQL funcionando correctamente para cualquier programa que así lo requiera (PHP, Delphi, C++, .NET, etc.). Ahora veamos como instalar y configurar Apache.

Apache

El famoso servidor HTTP Apache, ha sufrido cambios considerables en el salto desde la versión 1.3 a la 2.0 y 2.2, razón por la cual es muy probable que éste manual no cubra todas aquellas diferencias o se obvien. Intente al menos conseguir su copia de Apache con versiones superiores a la 2.0.

Instalación de Apache

Ejecutamos, ventana de bienvenida, Next. Aceptamos la licencia, Next. Nueva ventana mostrando caracteristicas de la versión y Next.

La siguiente ventana nos pide datos del servidor y es donde comienza la instalación (y configuración). Se nos pide el dominio de la red (NetWork Domain), el nombre del servidor (Server Name) y el email del administrador del servidor (Administrador's Email Address), hay que llenarlos con nuestros datos (localhost, localhost, email@dominio.com respectivamente). También pregunta el puerto y el modo de ejecución. Servicio en el puerto 80 es lo ideal.

Luego elegiremos el tipo de instalación avanzada (Custom).
En la siguiente ventana permitimos que instale todo, esto es los binarios, algunas librerias y la documentación. También elegimos el directorio de instalación y aqui debemos tener cuidado.
Nuestro directorio creado previamente para la instalación es C:\Apache por lo que no de debemos olvidarnos de elegirlo. Luego continuamos el wizard hasta que la instalación se haya realizado.

Automáticamente el instalador levanta el servicio y podremos verificar que funciona correctamente ingresando a http://localhost el cual nos mostrará It works!.

Configuración de Apache (Parte I)

Ahora comenzamos a configurar Apache, para ello debemos editar un archivo plano llamado httpd.conf (que no es más que un archivo con formato INI) que se encuentra en C:\Apache\conf\httpd.conf. Lo abriremos con un editor de texto sencillo por ejemplo el notepad que viene con windows, aunque recomiendo NotePad++ por su resalte de sintaxis (fijarla en INI).

Lo primero que debemos hacer es buscar la línea para modificar el directorio público de nuestro servidor, es decir el directorio donde colocaremos los archivos para que los visitantes puedan acceder a ellos.
La línea a modificar es la número 149 en la cual modificaremos el valor de DocumentRoot por el que deseemos. Para seguir la guía recomiendo crear una carpeta C:\WWW que es la que colocaremos como valor para DocumentRoot, quedandonos:
1
DocumentRoot "C:/WWW"


Debe notar que las barras invertidas (características de Windows) se cambian por las barras comunes (características de sistemas Unix), es por convención ya que el servidor puede reconocer los dos formatos.

Al modificar el valor de DocumentRoot será necesario también modificar con el mismo valor el bloque Directory en la línea 177 a:
1
<Directory "C:/WWW">


De otra manera obtendremos mensajes de error tales como códigos 403, etc.

Al terminar este paso ya tenemos funcionando un servidor HTTP para páginas estáticas (es decir HTML simple) en el directorio que queremos. El siguiente paso será agregarle PHP al servidor para poder desarrollar páginas dinámicas que se puedan conectar a bases de datos MySQL.

PHP

PHP es un lenguaje de scripts que también ha sufrido notables cambios en cuanto a su composición, sin embargo estos cambios no son tan notables en su instalación.

Instalación de PHP

Para realizar la instalación de PHP solo necesitaremos un descompresor de archivos ZIP, y lo que haremos precisamente es descomprimir el contenido del archivo en el directorio C:\PHP de tal forma de tener el archivo php.exe en C:\PHP\php.exe.

Configuración de PHP

Al igual que para Apache y MySQL, PHP dispone de un archivo de configuración estilo INI. Y para no complicarnos la vida se llama php.ini que debe estar en un directorio que pueda ser accedido por php. Ahora bien, al instalar PHP vemos que no hay ningún archivo php.ini en su directorio raiz (C:\PHP), pero si tenemos otros archivos que vamos a utilizar como templates para crear nuestro php.ini y ellos son: php.ini-dist y php.ini-recommended.
Tomaremos php.ini-dist y le cambiaremos su nombre a php.ini. Ahora solo debemos editarlo.

Buscaremos include_path (línea 461) y nos aseguraremos que contenga el directorio actual:
1
include_path = ".;c:\php\includes"


Luego le informaremos a PHP otros directorios muy importantes (líneas 468 y 475):
1
doc_root = "C:\WWW"

1
extension_dir = "C:\PHP\ext"


Las extensiones son módulos de PHP que extienden a la propia librería estandar. Es asi como podemos disponer de funciones para trabajar con MySQL, SQLite, Firebird, otras bases de datos asi como también otras funciones para diversas actividades.

Es por ello que agregaremos una en particular, la de MySQL (línea 606, quitar el punto y coma):
1
extension = php_mysql.dll


Ya terminamos la configuración de MySQL en php.ini pero continuemos configurando PHP un poco más como por ejemplo el directorio temporal para guardar los archivos de sesión (línea 924) y el reporte de errores (línea 304):
1
session.save_path = "C:\WINDOWS\Temp"

1
error_reporting = E_ALL | E_NOTICE | E_STRICT


Configuración de Apache (Parte II)

Si, otra vez Apache. En la primer parte solo configuramos Apache como servidor HTTP para páginas estáticas. Ahora vamos a notificarle a Apache que existe un interprete que puede usar y se llama PHP.

De vuelta abrimos httpd.conf y en la línea 212 cambiamos para que nos quede:
1
<IfModule dir_module>
2
    DirectoryIndex index.html index.php

3
</IfModule>


Con ello conseguimos que si se encuentra un archivo con nombre index.php en un directorio sea éste el que se cargue por defecto.

Al final del archivo agregamos las siguiente tres (3) líneas:
1
LoadModule php5_module "C:\PHP\php5apache2_2.dll"
2
AddType application/x-httpd-php .php

3
PHPIniDir "C:/PHP"


Probando el servidor

Crearemos el siguiente archivo con nombre test.php con el siguiente contenido:
1
<?php
2
    $ok = function_exists('mysql_connect');

3
    echo '<h1 style="color:#';
4
    if($ok)

5
        echo '00F">Instalación correcta';
6
    else

7
        echo 'F00">Error en la instalación';
8
    echo '</h1>';

9
?>


Lo colocaremos en nuestra carpeta pública C:\WWW\test.php, y en nuestro navegador favorito (espero que no sea Internet Explorer...) colocan la siguiente dirección: http://localhost/test.php.

Si la instalación fue correcta verán un mensaje en azul en caso que algo haya fracasado verán un mensaje en color rojo.

Con ésto terminamos esta guia de instalación de Apache+PHP+MySQL, simplemente espero que logren instalarlo sin complicaciones, pero ante cualquier problema ya saben... foro del club.

1 comentarios:

Luis Toubes dijo...

Pasate a linux :D

sudo apt-get -y install apache2 php5 mysql-server mysql-client

Muy completa la guia :)