Posteado por RubensaiD el 29th junio 2012 // 6290 lecturas

Solucion al Problema del Puerto 80 en Apache / XAMPP – Sin cambiar de puerto

Apache corriente en Windows 7 - Puerto 80

Apache corriente en Windows 7 - Puerto 80

Hola, esta vez voy a publicar un artículo relacionado a otra gran pasión que tengo, aparte de la ingeniería, la programación web. De hecho, mas relacionada a los servidores locales creados utilizando XAMPP en Windows 7. A continuación les muestro el expediente de todo el caso: la descripción del problema, las posible causas y las soluciones.

EL PROBLEMA: DESCRIPCIÓN

Uno de los programas más usados por los amantes del mundo web para tener habilitados un servidor local en sus pc que les permita correr PHP y MySQL es XAMPP, que viene a ser como un administrador que agrupa estos paquetes que suelen venir de manera separada. Sin embargo, al instalarlo e intentar correrlo en Windows 7 ocurre un gran problema:

  • Apache no puede iniciar en el puerto 80

A diferencia de MySQL que inicia sin problemas en el puerto 3306. Para esto los usuarios han encontrado un gran variedad de causas y sus respectivas soluciones, asimismo yo hoy presento una nueva solución.

A continuación listo las causas y soluciones que otros usuarios han publicado y al final, mi nuevo método.

  • Caso 1: Problemas con el Firewall
  • Caso 2: Conflicto con otros programas
  • Caso 3: Sin conflicto aparente

He obviado la clásica solución de modificar el puerto del Apache pues es algo que a veces no funciona y es muy poco práctico utilizar direcciones como la siguiente

http://localhost:8080

Esta URL, no se ve bien!

CASO 1: PROBLEMAS CON EL FIREWALL

Verificación

Para verificar si esta es la causa del problema tienes que desactivar el Firewall de Windows 7. Para hacerlo sigue el siguiente procedimiento:

  • Ir a  Panel de Control
  • Ir a Sistemas y seguridad
  • Ir a Firewall de Windows
  • Entrar a Cambiar la configuración de notificaciones.
  • Desactivar el Firewall tanto para redes públicas como privadas.
Firewall de Windows desactivado

Firewall de Windows desactivado

  • Prueba iniciar de nuevo el Apache.

Si puedes hacerlo entonces este es el problema.

Solución

Para solucionar este caso tienes que liberar el puerto 80, y de paso el 3306 que es el de MySQL. Sigue el siguiente procedimiento para hacerlo:

  • Ir a  Panel de Control
  • Ir a Sistemas y seguridad
  • Ir a Firewall de Windows
  • Entrar a Configuración avanzada
  • En la nueva ventana, click en Reglas de Entrada
  • Click en Nueva Regla
  • Elegir Puerto
  • Elegir TCP y en Puertos locales específicos poner 80, 3306
  • Seleccionar Permitir la conexión
  • Elegir Público
  • Dale un nombre y descripción cualquiera.
  • Repetir pasos pero ahora elegir UDP en vez de TCP

Esto debería solucionar el problema.

Para mayor información sobre como agregar puertos puedes visitar este post en Taringa!.

CASO 2: CONFLICTO CON OTROS PROGRAMAS

Verificación

Antes de adentrarte mas en este caso, primero vayamos a verificar si de verdad esta es la causa del problema. Sigamos estos pasos:

  • Abrir linea de comandos de Windows (Windows + R y escribir cmd)
  • Escribir la linea de código de abajo para ver el estado de todos los puertos locales.
    netstat -ano |find /i "0.0.0.0"
  • Buscar el puerto 80
    TCP 0.0.0.0:80
CMD muestra puertos locales escuchados.

CMD muestra puertos locales escuchados.

Si dentro de la lista encuentra el puerto 80 entonces significa que algún otro programa lo ha ocupado.

Solución

Podemos intentar saber que problema es el que se encuentra utilizando el puerto, ejecutando el siguiente código en la misma ventana del cmd.

tasklist |find /i "VALOR DE PID"

Para nuestro caso el valor del PID sería 360.

Digo intentar por que serán pocos los casos en donde esto nos diga exactamente cual es el programa. Sin embargo, aqui pongo los más posibles:

  • Conflicto con IIS de Windows
  • Conflicto con Skype
  • Conflicto con SQL de Windows
  • Conflicto con BranchCache

IIS de Windows

El servicio de Windows IIS, que significa Internet Information Server, suele iniciarse ocupando el puerto 80. En mi caso este servicio ni siquiera estaba instalados pero para los que si lo tienen o quieren intentar esta solución pueden seguir los siguientes enlaces:

Como cambiar el puerto TCP de servicios de IIS – Microsoft

Cambiar Puerto TCP 80 de Internet Information Server (IIS) – Cristalab

Skype

Skype suele utilizar el puerto 80 para realizar su trabajo, esto se puede cambiar siguiendo los siguientes pasos:

  • Ir a Herramientas
  • Entrar a Opciones de conexión…
  • Desmarcar la opción Usar puerto 80 y 443 como alternativas para las conexiones entrantes.
Cambiar el puerto 80 de Skype

Cambiar el puerto 80 de Skype

Esta solución en mi caso tampoco funcionó. Skype no me generaba ningún conflicto. Pero si quieres mas info puedes visitar este enlace.

SQL de Windows

Según un post publicado en El Blog de Andrés Perez en Geeks.ms el servicio de SQL de Windows podría ser el causante de este problema, entonces la solución seria desactivar los siguientes servicios:

  • SQL Reporting Services
  • SQL Integration Services

Supuestamente con esto ya tendríamos el control el puerto 80. Debo mencionar que esta opción no la he probado ni tengo fundamente técnico para demostrar que sea cierta esta hipótesis.

BranchCache

Por otro lado, en Microbiablog mencionan que el servicio de Windows Brachcache es el responsable de ocupar el puerto 80. Para desactivarlo tendremos que hacer lo siguiente:

  • Ir al Administrador de Tareas
  • Ir a las pestaña Servicios
  • Dar click en el botón Servicios (con privilegios)
  • Buscar el servicio BrachCache
  • Click derecho y Detener el servicio.
Servicio BrachCache en Windows 7

Servicio BrachCache en Windows 7

En mi caso, como se muestra en la imagen, este servicio ni siquiera estaba iniciado. Por lo que no era la causa de mi problema.

CASO 3: SIN CONFLICTO APARENTE ¡Nuevo Método!

Verificación

Esto se verifica de la misma manera que el caso 2, en la ventana de comandos. Si al seguir tal procedimiento no encontramos ningun programa/servicio ejecutandose en el puerto 80 entonces la causa podría deberse a otro puerto, el puerto 443.

Solución

La forma en la que llegue a darme cuenta de este problema fue buscando información sobre como cambiar correctamente de puerto el Apache, llegando hasta este blog donde además del clásico procedimiento de cambiar el archivo httpd.conf (donde esta lo del puerto 80), también cambiaban el archivo httpd-ssl.conf (donde aparece el puerto 443).

La siguiente imagen muestra los puertos de mi pc cuando estan deshabitados tanto el servicio de MySQL y de Apache (todo xampp).

Puerto 80 libre y Puerto 443 Ocupado

Puerto 80 libre y Puerto 443 Ocupado

Se nota claramente que el puerto 80 no esta siendo escuchado por ningún otro programa, pero el puerto 443 si, y por un servicio del sistema. Si nosotros nos resignamos y empezamos a modificar los archivos arriba citados nos daremos cuenta que el servicio SSL de Apache esta configurado para escuchar ese puerto, que esta ocupado… entonces cambiemoslo.

  • Abrir archivo C:\xampp\apache\conf\extra\httpd-ssl.conf
  • Buscar “Listen 443″, rremplazar por “Listen 4499″
  • Buscar “<VirtualHost _default_:443>”, reemplazar por ”<VirtualHost _default_:4499>”
  • Buscar “ServerName localhost:443″, reemplazar por “ServerName localhost:4499″

Ahora si intenta iniciar los servicios! Todo funciona OK!

NOTAS FINALES

  • Una característica de mi caso era que la primera vez que trataba de iniciar el Apache este siempre arrancaba y al cabo de unos segundos se paraba solo.
  • Si quieres mas info sobre los comandos usado puedes visitar este enlace.

Espero que les haya servido este enorme post.

Han llegado buscando:

Comentarios

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Tweet Hola, esta vez voy a publicar un artículo relacionado a otra gran pasión que tengo, aparte de la ingeniería, la programación web. De hecho, mas relacionada a los servidores locales creados utilizando XAMPP en Window……