Configuración local de Drupal en multisite.

La configuración de Drupal multisite en local es muy similar a la configuración de Apache para utilizar Drupal en multisite.

Uno de los pasos previos sería instalar un servidor de DNS en nuestros clientes, en este caso Ubuntu, los pasos son análogos a la instalación en Debian.

Para instalar Bind9 en nuestro cliente Ubuntu:

# sudo apt-get install bind9

Después se crea la zona y se especifica el fichero de configuracion /etc/bind/named.conf.local
zone "local.pc" {
type master;
file "/etc/bind/zones/db.local.pc";
allow-query { any; };
};
zone "local.neurotic" {
type slave;
masters { 192.168.1.2; };
};

Nota: La zona de tipo “slave” sirve para resolver los dominios de tipo *.local.neurotic.

El fichero /etc/bind/zones/db.local.pc debe contener:
$TTL 604800
@ IN SOA local.pc. hostmaster.local.pc. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
local.pc. IN NS ns1.local.pc.
localhost IN A 127.0.0.1
local.neurotic. IN NS 192.168.1.2.

@ IN TXT "Servidor"
@ IN HINFO "Servidor privado" "lan interno"
;
@ IN A 192.168.1.3
* IN A 192.168.1.3

Donde hostmaster.local.pc es el mail del usuario pero con . en lugar de @ y 192.168.1.3 es la dirección IP del cliente que se configura.

En este fichero: /etc/bind/named.conf.options
forwarders {
192.168.1.2;
80.58.61.250;
80.58.61.254;

};

Y al final del fichero:

dnssec-enable yes;

La primera dirección IP corresponde al servidor principal de DNS de nuestra LAN y las otras dos a las DNS proporcionadas por el ISP, en este caso las de Telefónica.

Este fichero, /etc/resolv.conf debe contener los servidores dns en orden

search
nameserver 127.0.0.1
nameserver 192.168.1.2


Finalmente, la primera línea del fichero /etc/hosts debe poner
127.0.0.1 localhost.localdomain localhost
Solo queda reiniciar el bind

# sudo /etc/init.d/bind9 restart

Los pasos previos son descargar Drupal e instalarlo para nuevas webs o descargarte la web y la base de datos si tienes una ya existente.

Una vez hecho esto, todos los módulos y ficheros de theme personalizados deben ir en el directorio sites/nombredeldominio.extension y se debe configurar el fichero de Vhosts para que nuestro dominio en local, pongamos nombredenuestraweb.local.pc apunte a ese directorio.

Primero se añade en el fichero /etc/apache2/httpd.conf esta línea:
Include /etc/apache2/conf.d/Vhosts.conf
Y a este (/etc/apache2/conf.d/Vhosts.conf) fichero del include se le añaden las entradas de nuestras webs en local

NameVirtualHost *:80
<VirtualHost *:80>
ServerName nombredenuestraweb.local.pc
DocumentRoot /ruta_de_drupal
<Directory "/ruta_de_drupal">
AllowOverride All
Options -Indexes +FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Nota: Esta configuración no se lleva muy bien con el sites-enabled, así que, en el fichero /etc/apache2/apache2.conf se debería comentar la línea final que hace referencia a sites-enabled.

Cada vez que se añade una entrada de Virtual Host para una web es necesario recargar la configuración de Apache:

# sudo /etc/init.d/apache2 reload

Ojo: Aunque nuestra web esté en /ruta_de_drupal/sites/nombredeldominio.extension, Drupal ya detecta automáticamente a través del nombre del directorio de sites, el dominio al que queremos acceder.

Es por esto que necesitamos un link simbólico que apunte de sites/nombredeldominio.extension a sites/nombredenuestraweb.local.com . En la configuración del servidor, se configuró un link simbólico directamente, pero si queremos trabajar con Eclipse y CVS esto nos va a ocasionar problemas, así que, antes de crear el link simbólico, deberemos crear un nuevo directorio en sites desde Eclipse, así que, situados en sites de nuestro proyecto web, en el menú secundario, New » Folder , y en Folder Name ponemos el nombre que hemos configurado para apache, en este caso nombredenuestraweb.local.pc y en las opciones Advanced marcamos la casilla Link to Folder in the File System y seleccionamos el directorio del dominio original, nombredeldominio.extension.

eclipse_new_folder.png

De esta forma, Eclipse ya tendrá registrado que ese directorio es un link y no se hará un lío al gestionarlo a través de CVS.

El paso final es crear el link simbólico en el Sistema Operativo, para que Drupal funcione cuando accedamos a nombredenuestraweb.local.pc . Para ello, desde sites, en un terminal ejecutamos lo siguiente:

# ln -s nombredeldominio.extension nombredenuestraweb.local.pc

Con todos estos pasos, ya tenemos creado un entorno de desarrollo de Drupal con Eclipse como herramienta de desarrollo, CVS para el control de versiones, Apache como web server, y Bind9 como servidor de DNS.

Espero que haya sido útil!

2 pensamientos en “Configuración local de Drupal en multisite.

  1. Impresionante el Howto.

    La verdad que me negaba con eclispse, he llegado a tener casi todas las funcionalidades con Vim (si increible pero cierto) pero la relación multisites que planteas es muy similar a la que estamos adoptando nosotros y el hecho d que eclipse incorpore cvs de forma nativa simplifica mucho.

    Por otro lado diseñando el entorno me ha surgido la duda, ¿como gestionáis las bbdd?

    Partiendo de un desarrollo en grupo pero con el multisites en remoto/local las bbdd se tienen que tener en cuanta.

    Por curiosidad, De todos modos un documento de lo mejor que hay por la red

  2. Gracias Karlos,

    La gestión de las bases de datos es el proceso más “manual” que tenemos (aunque está automatizado por un par de shells). Cada proyecto tiene su propia base de datos separada, para que sean mas portables.
    Mientras se desarrolla el proyecto, tenemos la base de datos estable en el servidor local y cada desarrollador trabajamos con nuestra base de datos en local (Mysql), cuando se finaliza (o se modifica) la parte que afecta a la base de datos, se sube al servidor local como estable. Drupal facilita bastante la tarea con el sistema de módulos.

    Intentaré hacer un post con el detalle de la configuración de base de datos.