Un servidor web en su propia máquina
Hace un tiempo que estoy instalando/desinstalando servers en mi PC para tener un pequeño servidor web en mi PC, armar una intranet y poder probar cosas para el trabajo; Fabio es uno de esos webloggers geeks que hasta arman su propio sistema de CMS para poder tener un weblog a su gusto.
Le pedà que escriba un “pequeño post” para explicar como uno puede armarse un server en su casa y se despacho con una nota de 5 páginas, con ejemplos, y comparaciones entre los “paquetes prearmados” y el “hecho a pulmón”, el resultado esta muy buena nota y esta versión en PDF para poder leer y seguir las instrucciones si recién empezás o te trabás en algo.
Un servidor web en su propia máquina
Muchas veces en los sitios de tecnologÃa o programación hablamos normalmente sobre nuestros servidores y nunca explicamos cómo tener uno.
Las opciones son claras, comprarlo o alquilarlo es la más sencilla para quien no sabe o está aprendiendo, pero parte de ese proceso de aprendizaje, desde mi punto de vista, deberÃa comenzar con la instalación de un servidor web.
La creencia popular y la mala información hacen que uno piense que el equipo de escritorio que tiene cada uno es distinto en gran medida a un servidor, como si éstos fuesen viejos mainframes (computadoras enormes que todavÃa usan los bancos por ejemplo) enormes que jamás podrÃamos tener en nuestro hogar. Pero muy distinta es la realidad, la mayorÃa de los servidores web son equipos tan parecidos a los de escritorio que a veces se usan PCs baratas para alojar webs.
Es que la única diferencia está en la calidad de un producto o el fin para el que fue fabricado, pero técnicamente son iguales, asà que, señores, aunque uds. No lo sepan, están leyendo este artÃculo desde un potencial servidor y será lo que explicaré a continuación.
¿Para qué un servidor web?
Primero hay que entender algo, cuando nos conectamos a Internet comenzamos a tener “presencia” en el medio, anónima o no, al poseer un número de IP (siempre se nos asigna uno al conectarnos) ya somos alguien más en la red, y ya al encender la máquina misma estamos en una red de una sola PC, sólo falta conectarla al mundo.
Toda página web debe ser alojada en un servidor, obviamente, la mejor forma es un servidor conectado las 24 horas del dÃa todos los dÃas del año, pero muchas veces necesitamos desarrollar nuestras webs antes de subirlas y mostrarlas al mundo, entonces ahà es cuando necesitamos un servidor “local”.
Yo utilizo un servidor todos los dÃas, para mis proyectos personales, también se puede utilizar como base de aplicaciones web como calendarios, agendas, y muchas opciones más. Asi que el uso no se cierra en diseño y desarrollo sino en uso diario. Hasta conozco varios que alojan sus webs en su domicilio sin necesidad de pagar ningún hosting ni nada parecido, simplemente una buena conexión a la red (Cablemodem, ADSL, etc.) y una PC encendida dÃa y noche.
¿Qué es un servidor web?
No voy a ser muy detallista ni prolijo para explicarlo, pero un servidor web es un programa que cuando recibe un pedido de una página, la envÃa a quien la pidió. Sólo eso, recibe pedidos, los contesta, envÃa HTML, imagenes, todo lo que se pida y que éste esté manejando. Nada más que eso, luego hay cosas que se pueden “agregar” al servidor web.
¿Que servidor me recomiendan?
Aquà podemos discutir horas o ir al grano. Apache, ¿por qué? Porque es gratis, libre, abierto y funciona, podrÃamos utilizar el Internet Information Services de Microsoft (IIS) pero es un desastre para ciertas cosas, yo personalmente prefiero Apache que se descarga libremente de aquà (http://httpd.apache.org/download.cgi) y está bajo licencia GPL, es decir, es libre, lo podemos usar sin restricciones y sin que nadie nos pida una licencia paga ya que lo cubre la anterior.
Bajando, instalando, funcionando (versión complicada)
La descarga que recomiendo es la del Apache 2.0.48 (o el último que esté disponible en el momento que lean el artÃculo), si bien algunos argumentan que todavÃa no está al 100% para mà es excelente bajo windows. Hay que descargar el Win32 Binary (MSI Installer) que es un instalador de windows, asà que necesitan tener el MSI Installer en su PC, cosa que es normal poseer en Windows XP o 2000, pero más raro en 95 (no recomiendo usar ese win tan viejo!)
La instalación es más sencilla todavÃa, tÃpica de programa donde nos pregunta en qué carpeta queremos instalarlo, yo recomiendo dejarlo en el c:\Apache Group que es el que voy a usar de referencia para explicar todo.
Una vez instalado nos pregunta si queremos dejar al Apache como servicio. Los servicios son aplicaciones que se inician al comienzo del arranque del sistema operativo, no necesitan ser ejecutados a mano, ya funcionan sin pedirlo, y es normal para un servidor web.
Lo recomiendo solamente para aquellos que tengan más de 256Mb de memoria si es que lo van a usar de “prueba”, igualmente el Apache viene con una pequeña aplicación que nos permite “levantar” el servicio y “bajarlo” cuando querramos, asà no ocupamos tanta memoria.
Para probar si está funcionando basta con abrir el navegador que usen habitualmente y tipear “http:///localhost” ó “http://127.0.0.1” y una linda página de apache deberÃa decirles que ya está funcionando el servidor.
Tip: localhost ó 127.0.0.1 es la dirección de la máquina mÃsma cuando se quiere mirar al espejo, desde afuera nos ven con el ip que nuestro porveedor nos haya entregado, pero desde adentro no necesitamos conectarnos para vernos.
¿Dónde alojo mis páginas?
La carpeta donde Apache mira para entregar archivos es C:\Apache Group\Apache2\htdocs, todo lo que allà esté será mostrado al público, el resto no. Asà que podemos borrar el contenido que allà está (para empezar de cero) y subir nuestro primer index.html (index.html será mostrado por defecto, si no hay index en vez de mostrar una página mostrará el contenido de la carpeta, esto es totalmente inseguro, asà que mejor… dejen un index.html ahà adentro).
Hasta aquà el servidor sólo muestra HTML, imágenes y nada más, necesitamos algo de “potencia” y allà es donde entran el PHP y MySQL.
Webs dinámicas
PHP nos permite generar contenido HTML en el acto, es decir, procesa lo que nosotros querramos que haga, y se lo dá al Apache para que nos lo envÃe. Asà de simple si yo quiero que PHP me muestre un “hola mundo” tendré que hacer un archivo “hola.php” que en su código diga:
<?
echo “hola mundo”;
?>
y cuando escriba en el navegador http://localhost/hola.php me mostrará “hola mundo” en pantalla, pero para que todo esto suceda, primero, debemos bajar, instalar y configurar el motor de PHP.
¿Para que tanto lÃo? Bueno lo interesante del PHP es que nos permite conectarnos con una base de datos y mostrar información en el acto, cambiarla e inmediatamente cambian los datos que se ven en la web. Asà funcionan los foros, los weblogs, y casi todo sistema “dinámico”, un pequeño cambio de
la información en la base de datos y ya la web entera cambia su contenido sin necesidad de haber escrito una sola lÃnea de código!
Imaginen un sitio estático, sólo HTML, donde queremos cambiar una noticia deberÃamos editar la página de inicio, subirla al servidor y ni hablar si queremos cambiar un dato de un menú y nuestro sitio cuenta con 300 páginas, deberÃamos cambiar 300 archivos y subirlos uno por uno. Con sitios
dinámicos sólo cambiamos un archivo del menú y se cambian todos a la vez!
Para descargar el PHP hay que entrar a: http://www.php.net/downloads.php, allà tenemos dos opciones, una es un instalador de 1Mb que viene “vacÃo”, sin ninguna librerÃa extra, yo recomiendo el otro, el PHP 4.3.4 zip package ya que incluye todo lo que podrÃamos llegar a necesitar.
Este archivo .zip (se descomprime con winzip, winrar, etc.) tiene todo lo que necesitamos y lo debemos alojar en c:\Apache Group\PHP para que todo quede junto y no se nos desordene la instalación.
Ahora bien, tenemos el PHP, el Apache, pero nos falta algo, avisarle al Apache que está ahà su compañero! Aquà es donde debemos editar un archivo, pero antes lo más importante, apagar el apache.
Cuando instalaron el apache se encontraron con una aplicación nueva, el Control Apache Server, que es una sencilla aplicación con cuatro o cinco botones más que claros, “Start”, “Stop”, “Restart”, “Services”, “Connect”.
Primero, se ubican sobre “Stop” y un click, ahà murió por el momento el servidor y si quieren lo levantan con “Start”, sólo eso, no se necesita más.
Una vez apagado debemos ir al archivo C:\Apache Group\Apache2\conf\httpd.conf ahà está la configuración del Apache, no voy a entrar en detalles, pero si leen documentación podrán cambiar de todo a gusto.
Lo único que hay que agregar aquÃ, son estas lÃneas, donde están los “LoadModule”:
1- LoadModule php4_module “C:/Apache Group/php4/sapi/php4apache2.dll”
Tip: para comentar cosas que no querramos ejecutar en el archivo de configuración basta con un # numeral adelante para que toda esa lÃnea no sea vista
2- Buscar “DirectoryIndex index.html index.html.var” y agregarle index.php para que quede asÃ: DirectoryIndex index.html index.html.var index.php
3- Buscar “AddType” y agregar:AddType application/x-httpd-php .php
Como verán lo único que hice fue indicarle al Apache que de ahora en más va a utilizar el PHP, primero le dije que cargue el módulo, el módulo es “apache2” porque estamos usando esa versión, para los que usen un apache viejo lean la documentación correspondiente.
En el segundo paso le indicamos que además de considerar los archivos Ãndice de HTML que se encargue también de interpretar los PHP y en el tercer paso le indicamos que hacer cuando se encuentra con un archivo PHP, nada más.
Ahora nos falta revisar el archivo PHP.ini, al igual que la configuración del Apache allà podremos cambiar lo que querramos (no me hago cargo de lo que hagan! Jejeje)
Pero ¿donde está el php.ini? Este, lamentablemente, va en cualquier lugar menos donde lo esperábamos, se instala en C:\WINDOWS , si en la carpeta de windows, asà que ahà lo encontraremos.
Lo único que acostumbro revisar es que esté bien especificado esto:
doc_root = C:\Apache Group\Apache2\htdocs
Porque asà apunta correctamente a los archivos, además hay un detalle con el PHP para windows y es que, desde hace años, se olvidan de configurar bien el path de los archivos temporales y tiene la ruta \tmp (de Linux) cuando deberÃa ser c:\Temp o la carpeta temporal que deseemos (debe existir), este campo es: session.save_path = c:\temp
Apache nuevamente arriba.
Bueno, es el momento de levantar nuevamente al servidor web, si emite un error es que alguno de los pasos anteriores no funcionó, agregaron algo de más, o me faltó aclarar algo, espero que no ;)
Ahora nos falta algo crucial para cualquier servidor completo y es la base de datos, la misma sirve para mantener ordenada información, consultarla eficientemente y mantenterla. Antiguamente se utilizaban enormes archivos de texto para esto, inclusive hoy en dÃa algunos usan bases por el estilo o casos peores, usan bases de Access, pero lo ideal es el MySQL, libre, abierto, gratuito, etc. Igual que el PHP y Apache.
MySQL el paso final
Para descargar la base de datos basta con visitar su sitio web, si bien es un producto que se vende al estar bajo licencia libre se puede descargar y usar, además es la mejor forma de marketing que tiene la empresa, el uso es libre, ellos cobran los extras. http://www.mysql.com/downloads/mysql-4.0.html
Esta base de datos se instala sin problemas y sin darnos cuenta comienza a funcionar, aquà tal vez comienza la confusión… ¿donde está funcionando? ¿ está realmente presente?
Yo utilizo una aplicación que me ayuda a administrar el sistema, el problema es que ya está vieja y nadie siguió programándola, pero busquen por la red el MySQL Front (http://www.fabio.com.ar/downloads/appz/MySQL-Front_2.5_Setup.exe) que les ayudará a crear tablas, datos, consultar, etc.
La otra opción es utilizar el PHPMyAdmin, que se instala dentro del htdocs y se usa desde el navegador.
Cualquiera que sea la aplicación que usen es ideal que lean un poco de la misma, lo primero que van a necesitar, por lo general, es ejecutar algún archivo SQL de algún sistema de foro o weblog, siempre vienen con estos, y es el que crea las tablas y demás.
Pero eso… ya es para otro artÃculo ;)
La solución sencilla
Hay varios paquetes que se encargan de hacer todo esto que expliqué ellos mÃsmos. Son paquetes “todo en uno” que incluyen el Apache, MySQL, PHP, Perl, SSL, PHPMyAdmin y demás aplicaciones listas para usar.
Hacen exactamente lo mismo que yo he hecho “a mano” y son recomendables si están apurados.
Si en cambio quieren aprender, sigan los pasos, pregunten e investiguen, no es difÃcil, pero seguro que de entrada no funcionará nada y eso los frustrará. Lo más importante es que aprendan qué están haciendo.
Los paquetes “todo en uno” también cambian un poco las cosas para hacerlas más sencillas, los que recomiendo son:
Apache friends
Un grupo alemán que tiene un paquete super completo, está en inglés para no hacerla tan difÃcil, el paquete posee: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System para Win32 y NetWare Systems v3.32, JpGraph, FileZilla FTP Server, mcrypt, Turck MMCache, SQLite, y WEB-DAV + mod_auth_mysql.
Es decir, una bestia, tiene de todo en un paquete de 30Mb (aprox). Recuerden igualmente que no todos los proveedores de hosting ofrecen TODOS esos servicios, asà que probablemente algo que funcione en sus máquinas no lo haga cuando quieran llevarlo a otro nivel. Pueden verlo acá
Easy PHP
Este paquete francés posee Apache 1.3.27 - PHP 4.3.3 - MySQL 4.0.15 - PhpMyAdmin 2.5.3 y funciona bastante bien, el único inconveniente es la falta de actualización, aunque con esos servicios tienen para un buen rato, el paquete es de menor tamaño que el anterior por obvias razones.
Pueden verlo acá
PHP Triad
No lo recomiendo para nada, porque se quedó en el tiempo (2002) con algunos pocos parches, lo nombro porque a este lo verán nombrar en foros y sitios, pero no lo recomiendo.
Pueden verlo acá
Nusphere
Es una opción comercial, la primera que utilicé, no la recomiendo ya que no es necesario pagar por algo que pueden armar uds. mismos
Pueden verlo acá
Otros sitio con explicaciones sobre este tema
Conclusión:
Poseer un servidor web en la PC hogareña es la mejor forma para aprender, programar y estudiar cómo funcionan los sistemas que habitualmente usamos. Desde hace años hago esto para poder trabajar y producir mis propios Scripts, páginas webs y sistemas. No es difÃcil por más que parezca largo, podrÃa haber hecho este artÃculo en tres párrafos y nada se entenderÃa, por eso traté de explicar cada detalle.
Por mi parte separo dos fines para esto, el primero es el estudio y la creación, el segundo el uso directo sin pensar mucho en problemas, uds. Elijan, tienen la solución para cada situación, yo elijo la primera ;)
Fabio Baccaglioni
fabio@fabio.com.ar
www.fabio.com.ar


Excelente articulo!!! No tengo nada mas que agregar, excepto el hecho de que coincido contigo: Apache + PHP es LA combinacion ideal. Asi lo tengo en mi maquina tambien, con mysql y tomcat y otras miles de cosas mas…
Ah! Fijate los tags y las entidades que usas, en el ejemplo de Hello World en PHP no te aparecen correctamente las entidades (ademas la primera es <), y al final del articulo pasa algo raro con unos <a> que andan por ahi.