Linux


8
Jun 11

Múltiples instancias con Apache2 y Debian Squeeze

No confundir, instancias múltiples instancias con múltiples dominios, en este caso te mostrare como ejecutar múltiples servicios de apache escuchando diferentes puertos o direcciones IP de forma independientes.

Normalmente para poder hacer esto es recomendable recopilar el apache para que este tome los nuevos parámetros de configuración, pero la versión pre compilada que esta incluida en la versión 6 de Debian, ya viene preparada para utilizar múltiple instancias y para hacer nuestro trabajo mas facil, han incluido en el paquete de documentacion un script que se encargara de duplicas la instacia, lo que solo nos quedara editar la configuracion de la nueva instancia.

Primero copiaremos en script a ruta cualquiera, para editar el mismo:

cp /usr/share/doc/apache2.2-common/examples/setup-instance /home/user/

Editamos el archivo, y modificaremos las siguientes lineas:

nano /home/user/setup-instance

(Aproximadamente en la linea 22):

cp /usr/share/doc/apache2.2-common/examples/secondary-init-script /etc/init.d/apache2-$SUFFIX

Editamos la mismo y debera quedar:

cp /etc/init.d/apache2 /etc/init.d/apache2-$SUFFIX

Guardamos el archivo, debera quedar de la siguiente forma:

#!/bin/sh
set -eu
if [ $# != 1 ] ; then
echo usage: $0 '<suffix>'
exit 1
fi

# the SUFFIX must not contain spaces or shell meta characters
SUFFIX=$1

if [ -e /etc/apache2-$SUFFIX ] ; then
echo ERROR: /etc/apache2-$SUFFIX already exists

exit 2
fi
echo Setting up /etc/apache2-$SUFFIX ...
cp -a /etc/apache2 /etc/apache2-$SUFFIX

echo Setting up /etc/init.d/apache2-$SUFFIX ...
cp /etc/init.d/apache2 /etc/init.d/apache2-$SUFFIX
# adjust service name (this prevents us from using a simple symlink)
perl -p -i -e s,XXX,$SUFFIX, /etc/init.d/apache2-$SUFFIX
chmod 755 /etc/init.d/apache2-$SUFFIX

echo -n Setting up symlinks:
for a in a2enmod a2dismod a2ensite a2dissite apache2ctl ; do
echo -n " $a-$SUFFIX"
ln -s /usr/sbin/$a /usr/local/sbin/$a-$SUFFIX
done
echo
echo Setting up /etc/logrotate.d/apache2-$SUFFIX and /var/log/apache2-$SUFFIX ...
cp -a /etc/logrotate.d/apache2 /etc/logrotate.d/apache2-$SUFFIX
perl -p -i -e s,apache2,apache2-$SUFFIX,g /etc/logrotate.d/apache2-$SUFFIX
mkdir /var/log/apache2-$SUFFIX
chmod 750 /var/log/apache2-$SUFFIX
chown root:adm /var/log/apache2-$SUFFIX

Asignamos permisos de ejecucion:

chmod +x /home/user/setup-intance

Ahora podemos ejecutar el Bash, esto debemos hacerlo como “root”, ya que el mismo asigna permisos al copiar archivos y crear directorios. El modo de uso es el siguiente:

./setup-intance algo

Esto nos creara la instancia “apache2-algo” con su respectiva configuracion en “/etc/apache2-algo” y su script de inicio, para agregar el mismo al inicio para que se auto ejecute, ejecutamos:

update-rc.d /etc/init/apache2-algo defaults

Si lo queremos remover el inicio:

update-rc.d /etc/init.d/apache2-algo remove

Ahora deberemos modificar la configuracion de “apache2-algo” para indicarle la direccion IP o puerto que debe escuchar. Editamos el /etc/apache2-ago/ports.conf, que en mi caso desearia que servidor escuchara otra IP que no sea la IP publica. Cambiamos la direccion IP la linea:

NameVirtualHost 222.111.0.0:80
Listen 80

Por la derccion IP que debe escuchar el apache y su respectivo puerto:

NameVirtualHost 10.10.10.1:80
Listen 10.10.10.1:80

Si solo queremos que escuche un nuevo puerto en todas las direccion IPs, modifocamos la linea indicando la direccion IP con un “asterisco”:

NameVirtualHost *:81
Listen 81

Donde 81 es el puerto de deseamos que escuche. ATENCIÓN: En este caso la primer instancia de Apache no debe escuchas todas las direcciones de IP con el mismo puerto, por ejemplo:

NameVirtualHost *:80
Listen 80

Esto indica que el apache2 estará escuchando el puerto 80 de todas las direcciones IPs, por lo que habrá que modificar la primera instancia de apache para corregir esto. También modificamos la configuración de cada virtual host para que escuchen la dirección IP que correcta.

<VirtualHost *:80>

Asignando le la dirección IP:

<VirtualHost 10.10.10.1:80>

O con el puerto que deseemos:

<VirtualHost *:81>

Listo, hechas estas configuraciones, ya podemos iniciar la nueva instancia de apache. Cualquier duda, comenten! Saludos,