martes, 18 de enero de 2011

Ejecutar Apache como un servicio

Hace unos días realizamos una instalación de Apache sobre Windows y la pusimos a funcionar. Fue un proceso muy sencillo siguiendo los pasos recomendados.

Pero esta vez intentamos cambiar la configuración y aparecieron inconvenientes muy interesantes de resolver.

Necesitaba instalar un segundo servidor Apache vinculado a otra cuenta de usuario en Windows, con idea de no mezclar las instalaciones ni configuraciones distintas de los cursos que estoy realizando.
Previamente había instalado el paquete XAMMP, el cual incluye un entorno de trabajo ya configurado de Apache, PHP, MySQL y PHPMYAdmin entre otros. Al estar configurado previamente, Apache escuchaba en el puerto 80 por defecto, de modo que con mi segunda instalación de Apache no podía vincular el servicio al mismo puerto.

¿Qué hacer entonces?
- Pues sencillo.

Durante el proceso de instalación de Apache:
Existe la opción de no instalar Apache como servicio de forma que lo podremos hacer nosotros después manualmente.

Conseguimos con esto que la nueva instalación de Apache no esté escuchando en el puerto 80 sino en el puerto 8080 y MUY IMPORTANTE realizaremos la instalación sin instalar el servicio de Apache.

¿Qué ocurrirá ahora?
- Pues que Apache no estará listo para su funcionamiento.

Tras la instalación veremos como el icono de Apache aparece en nuestra barra de tareas con el simbolo de STOP, y si deslizamos el ratón sobre el icono aparecerá un mensaje indicando que "no hay servicios instalados".

Exactamente esto es lo que pretendíamos. Apache no está iniciado.
Si nos fijamos en el Monitor de Apache:

los botones para "Iniciar/Start" el servidor se encuentran inactivos de modo que no podemos iniciar Apache manualmente de esta forma.

Tenemos que instalar nosotros el servicio de Apache


Instalar el servicio de Apache
Nuestra intención era conseguir que Apache no se instalara para todos los usuarios del equipo, pretendíamos tener una instalación local para un determinado usuario del PC. Si instalabamos Apache como un servicio global sobre el puerto 80 todos los usuarios del equipo accederían a el y ningún otro programa (XAMMP por ejemplo) podría utilizar ese mismo puerto.

La solución estaba en instalar Apache de forma local y sin instalar su servicio. Nosotros nos encargaríamos de instalar el servicio cuando nos hiciera falta.

De modo que accedemos a
Panel de Control -> Herramientas adeministrativas -> Servicios
Comprobaremos que no aparece ningun servicio de Apache para poder iniciar/detener/reiniciar a nuestro antojo.
Esto es porque aún no está instalado.

Abrimos una ventana de comandos
Inicio->Ejecutar->cmd
y nos situamos sobre el directorio bin de Apache.
Nota: la ruta normal puede ser C:\Archivos de programa\Apache Software Foundation\Apache2.2\bin

Tecleamos
httpd -k install -n "ApacheSegundo"
y esperamos un mensaje de éxito en la operación.

Nota: el nombre del servicio "ApacheSegundo" puede ser el que se desee. La idea es poder identificarlo entre los demás servicio sin que se confunda con otro servicio de Apache.

Tras esto podremos comprobar como el icono de Apache de la barra de tareas ya presenta otro aspecto. Nos indica que hay un servicio activo pero sin arrancar.
La consola tambien presentará otro aspecto y ya nos dejará Iniciar/Start Apache para poder funcionar correctamente.




POSTDATA
- Para desinstalar el servicio, bastará con teclear en la consola de comando la secuencia
httpd -k uninstall -n "ApacheSegundo"
- Recordar que ahora el puerto para escuchar es el 8080 y por lo tanto la llamada en el navegador http://localhost:8080/
- Más info al respecto en http://httpd.apache.org/docs/2.0/platform/windows.html#winsvc

2 comentarios:

  1. Instalar un apache y un Weblogic (http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html) como servicio lo tuve que hacer yo estos dias en el curro ...

    Que tal todo Glori??¿?¿?¿???

    ResponderEliminar
  2. Pues pa la proxima te pregunto y no doy vueltas ;)

    ResponderEliminar