Ejecutar dos apaches en la misma máquina

El objetivo de ejecutar dos servidores web en la misma máquina es que podamos tener nuestro servidor web habitual corriendo con el usuario www-data, y un servidor web aparte para asterisk, corriendo bajo el usuario asterisk.

Para ello crearemos en una localización distinta a la habitual, los ficheros de configuración de apache, y luego ejecutaremos el demonio especificándole que use los ficheros de configuración nuevos

Para simplificar la tarea, usaremos los ficheros de configuración de nuestro actual apache, sitos en /etc/apache2 en el caso de debian. Hacemos una copia de esta carpeta en otra ubicación, por ejemplo en /etc/apache2_asterisk. Posteriormente reemplazaremos las líneas que contengan /etc/apache2/ por /etc/apache2_asterisk/. Además cambiaremos el nombre del fichero de pid, por /var/run/apache2_asterisk.pid.

Debemos crear un virtualhost para asterisk que escuche en un puerto que no esté en uso por el otro apache. En mi caso usé el 888 con SSL

Por último crearemos un script de inicio, con el siguiente contenido para ejecutar el servidor web de asterisk:


#! /bin/sh -e

case "$1" in
  start)
	echo -e "Starting asterisk http server:"
	apache2ctl -d /etc/apache2_asterisk/ -f /etc/apache2_asterisk/apache2.conf -k start
    ;;
  stop)
	echo -e "Stopping asterisk http server:"
	apache2ctl -d /etc/apache2_asterisk/ -f /etc/apache2_asterisk/apache2.conf -k stop
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/$0 {start|stop|restart}"
    exit 1
esac

exit 0

		

Sugerencia

Podemos crear un proxy en nuestro apache normal, para acceder a freepbx a través de un puerto estándar. Ello se consigue con un virtualhost que tenga el siguiente contenido:


<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName asterisk.local.gadelek.com
        ProxyPass / https://asterisk.local.gadelek.com:888/

SSLProxyEngine on

<Proxy https://asterisk.local.gadelek.com:888/>
Order Deny,Allow
Allow from all
</Proxy>

SSLEngine On
SSLCertificateFile /etc/ssl/certs/asterisk.local.gadelek.com.pem
SSLCertificateKeyFile /etc/ssl/private/asterisk.local.gadelek.com.key
SSLCACertificateFile /etc/ssl/certs/myownca.pem
</VirtualHost>

		

No debemos olvidarnos de activar el módulo proxy de apache, y si fuera necesario los submódulos


//proxy.load
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so