Professional Documents
Culture Documents
entornos windows
Los servidores Web siempre han sido fuente de problemas para los administradores de
sistemas debido a sus enormes archivos de configuración –a veces incluso crípticos–,
más aún cuando son ampliados con módulos que mejoran sus capacidades como SSL,
PHP o MySQL. En este artículo aprenderá a instalar y configurar un servidor Web apto
para su uso en un entorno productivo incluyendo bases de datos SQL y conexiones
seguras.
Todo esto ha hecho que el servidor Web haya pasado a ser uno
de los puntos críticos en las empresas de servicios a través de Internet, pero también ha
conducido a incrementar su complejidad más allá de su objetivo original.
El objetivo de este artículo es instalar un servidor Web que disponga además de las
típicas páginas HTML, soporte para el lenguaje de programación de páginas web PHP,
acceso a un servidor de bases de datos SQL (Structure Query Language) y transmisión
de datos seguro a través de SSL (Secure Socket Layer).
Apache fue diseñado con los sistemas UNIX en mente, pero gracias a su popularización
su uso en entornos Windows es cada vez más común, aunque ésta versión no alcanza las
mismas cotas de rendimiento y flexibilidad que la versión UNIX.
Arrancar el servidor
Una vez instalado, ejecute el servidor accediendo a Inicio->Programas ->Apache httpd
server ->Start Apache in console, debería aparecer una consola de sistema con el texto
“Apache/1.3.20 (Win32) running...” en la primera línea, sin ningún otro mensaje de
error, lo que indica que el servidor Web está funcionando.
Sobre este punto sería posible escribir incluso un libro (si no lo hay aún), por lo que en
lugar de exponer todas las características de ambos productos es preferible hacer un
breve repaso indicando sus ventajas e inconvenientes, y que cada cual tome su propia
decisión.
Ventajas
IIS
- Fácil de usar.
- ASP preparado en la instalación por defecto.
- Soporte ODBC integrado.
- Configuración gráfica y en línea de comandos.
Apache
- Código fuente disponible.
- Existen versiones virtualmente para cualquier sistema
operativo.
- Excelente integración con PHP y MySQL.
- Es el servidor web por excelencia en la Red.
Inconvenientes:
ISS
- Multitud de nuevos fallos de seguridad.
- La mayoría de funcionalidad extra debe ser comprada separadamente.
- Sólo funciona en Windows NT/2000.
Apache
- No existe aún configuración gráfica oficial.
- Curva larga de aprendizaje para sacarle el máximo
partido
MySQL
El archivo de instalación está empaquetado con el compresor ZIP, pero una vez
descomprimido se instala como una aplicación típica de Windows. MySQL asume que
el directorio por defecto será c:\mysql (recomendamos que use este directorio) aunque
puede elegir otro, pero deberá editar el archivo de configuración c:\my.cnf tal y como se
muestra en la figura.
Configuración de MySQL
El primer paso será iniciar el servidor de bases de datos, para ello abra una ventana de
MS-DOS e introduzca estos comandos:
c:\>cd c:\mysql\bin
c:\mysql\bin>mysqld-max
Nótese que dentro del directorio \bin existen diferentes versiones
del servidor SQL: mysqld (versión original con información de
debug incorporada), mysqld-max (binario optimizado), mysqld-nt
(versión para Win NT/2000) y mysqld-max-nt (igual, pero para
Así se ve en consola
NT/2000).
C:\mysql\bin> mysql
Welcome to the MySQL monitor. Commands end with
; or \g.
Your MySQL connection id is 11 to server
version: 3.23.41-max
mysql>
Si obtiene estos mensajes en pantalla, quiere decir que ha conectado correctamente con
el servidor de bases de datos. Como puede comprobar, en la instalación típica existen
por defecto dos bases de datos: “mysql” (base de datos de administración) y “test” (base
de pruebas).
Aquí puede ver una tabla comparativa con los resultados de realizar la sentencia
SELECT * FROM BBDD accediendo a 50 registros en 6 bases de datos diferentes con
el resultado expuesto en segundos (menos tiempo es mejor); esta ha sido ejecutada 41
veces en un servidor web bajo PHP.
Bases de datos 1 2 3 4 5 6 Media
MySQL 1.56 1.57 2.56 1.56 1.52 1.57 1.72
MS SQL 7 2.11 2.07 2.09 2.09 2.09 2.10 2.09
MS SQL 7 ODBC 10.47 10.41 11.46 10.48 10.43 11.48 10.79
Access ODBC 4.11 3.91 4.00 4.99 4.98 3.98 4.33
PHP
# terra
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php “/php/php.exe”
También es necesario modificar la línea que comienza por DirectoryIndex, con el fin de
interpretar correctamente las páginas de inicio, por esta otra:
<?
phpinfo();
?>
Una vez con el archivo grabado en el directorio raíz del servidor web, verifique con el
navegador si Apache procesa correctamente los archivos .php introduciendo en la barra
de dirección http://127.0.0.1/terra.php; si todo ha ido correctamente y no ha obtenido un
mensaje de error observará un mensaje de información de PHP –devuelto por la función
phpinfo()– cómo el de la figura significa que ha instalado PHP correctamente, en caso
contrario deberá repasar su instalación desde el principio, sobre todo teniendo cuidado
con el nombre de los directorios.
PHP vs ASP
Aquí se muestran unas conclusiones explicando por qué PHP es superior a ASP:
1. Velocidad
Uno de los principales problemas en los portales de Internet que soportan una gran
carga de usuarios es la velocidad de respuesta de su servidor, por lo que este debería ser
un punto crítico al elegir un lenguaje u otro.
ASP, probablemente, nunca será tan rápido como PHP. ASP está construido en una
arquitectura de objetos COM, y por lo tanto, cuando un programador de ASP usa
VBScript realmente está corriendo un objeto COM. Si escribe un simple texto en la
salida estándar, estaría llamando al objeto Response del método Write. Si accede a una
base de datos, debe usar otro objeto, etc. Todo esto sobrecarga y hace más lento el
sistema.
2. Costes ocultos
Una de las cosas que se suelen pasar por alto al usar un software determinado son los
costes ocultos o derivados de la primera compra.
Además de tener una sintaxis basada en C, PHP toma prestado de perl la interpretación
de expresiones regulares y de Java el sistema de objetos.
Esta es quizás la parte más problemática de todo el artículo por lo que es recomendable
tener paciencia y hacer exactamente los mismos pasos que aquí se describen debido a
que las implementaciones de conexiones seguras (SSL) para la versión de Windows de
Apache son conversiones directas de sus análogas de UNIX y fallan al más mínimo
descuido.
Después es necesario crear los certificados SSL que a grandes rasgos es una credencial
digital que permite a los visitantes de un sitio usar su navegador para verificar la
autenticidad del sitio y comunicarse con él en forma segura.
C:\>cd modssl
C:\modssl>cd openssl\bin
C:\modssl\openssl\bin>openssl req -config
openssl.cnf -new -out somenet.csr
C:\modssl\openssl\bin>
C:\modssl\openssl\bin>openssl rsa -in
privkey.pem -out somenet.key
read RSA key
Enter PEM pass phrase: prueba terra
writing RSA key
C:\modssl\openssl\bin>openssl x509 -in
somenet.csr
-out somenet.cert -req -signkey somenet.key
-days 365
Loading 'screen' into random state - done
Signature ok
subject=/C=es/ST=madrid/L=madrid/O=idg/
OU=terra/CN=www.somenet.com/Email=webmas
ter@somenet.com
Getting Private key
C:\modssl\openssl\bin>
C:\web\Apache>cd conf
C:\web\Apache\conf>md ssl
C:\web\Apache\conf>cd ssl
C:\web\Apache\conf\ssl>copy ..\..\openssl\
bin\somenet.key
1 archivos copiados
C:\web\Apache\conf\ssl>copy ..\..\openssl\
bin\somenet.cert
1 archivos copiados
C:\web\Apache\conf\ssl>
Antes de iniciar Apache en modo SSL es necesario copiar los archivos que se
encuentran en la carpeta modssl en la carpeta Apache sobrescribiendo los archivos
previos.
Apache cargará el módulo mod_ssl al iniciarlo con apache –D ssl, por lo que si aún se
encuentra activo es necesario detenerlo para después desde una línea de comandos
ejecutarlo de la forma indicada (si no hace esto, no podrá reconocer solicitudes SSL):
C:\web\Apache>apache -D ssl
Apache/1.3.20 (Win32) mod_ssl/2.8.4
OpenSSL/0.9.6a running...
Si no se produce ningún error tendrá listo su servidor Apache con soporte PHP, MySQL
y conexiones seguras SSL bajo Windows. Pero antes de probarlo todo en conjunto inicie
un IE e introduzca en la barra de direcciones https://127.0.0.1/terra.php, debería
aparecer la misma página web que en el apartado PHP pero en esta ocasión mediante
una transmisión segura (el protocolo HTTPS es a groso modo una encapsulación de http
sobre SSL).
Si es la primera vez que conecta con su servidor mediante SSL, IE presentará un aviso
en pantalla indicándole información sobre el certificado que ha creado anteriormente
que deberá aceptar para poder continuar. Además, cuando el navegador realiza una
conexión segura con un servidor muestra en la parte inferior de la pantalla un pequeño
candado cerrado.
Un ejemplo real aunque muy limitado en este caso es crear una agenda de nombres
accesible mediante una página web.
Para ello lo primero deberemos crear la estructura de la base de datos, en nuestro caso
será simplemente una tabla con 2 registros creada en la base de datos terra (creada en el
apartado MySQL): id (número de identificación) y nombre (nombre personal del
usuario):
C:\mysql\bin>mysql
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 2 to server version:
3.23.41-max-debug
mysql>