Configuración de Apache para utilizar Drupal en multisite.

Para utilizar Drupal en modo multisite, es decir, utilizar una sola instalación del motor de Drupal para varias webs, a partir de la versión 5, se puede configurar a través del directorio sites/ y la configuración de Virtual Host de Apache

Si la web ya está funcionando en Drupal, se pueden saltar los siguientes pasos referentes a la descarga e instalación de Drupal y realizar la configuración de Apache, si no, podemos conseguir Drupal bien descargándonoslo a través de la página o directamente a través de CVS, mediante la sentencia:

# cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout -r DRUPAL-5-3 drupal

Tres pinceladas sobre esta sentencia, la cláusula -z6 es para que realice la descarga en modo comprimido y de esta forma consuma menos ancho de banda, -r DRUPAL-5-3 indica la rama que queremos descargar, debemos ser cuidadosos, ya que si no podemos nada, o usamos la rama principal HEAD, descargará la última versión, a día de hoy, la beta de Drupal 6. Se puede echar un vistazo al repositorio CVS de Drupal a través de http://cvs.drupal.org/viewvc.py/drupal , también es posible descargar modulos accediendo al repositorio de los mismos (cvs.drupal.org:/cvs/drupal-contrib). Por último, esta sentencia nos descargará la versión indicada de CVS en un subdirectorio drupal del directorio actual, si queremos que se descargue en otro directorio, deberemos incluir la cláusula -d ruta utilizando siempre rutas relativas.

Para instalar Drupal, necesitamos crear una base de datos y un usuario con privilegios para ejecutar las sentencias, ejemplos en MySql de la creación de la base de datos y del usuario:
CREATE DATABASE nombre_bbdd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,INDEX,
ALTER,CREATE TEMPORARY TABLES, LOCK TABLES ON nombre_bbdd.*
TO 'usuario_bbdd'@'localhost'
IDENTIFIED BY 'password'
;

Una vez creado, deberemos configurar nuestro servidor Apache y Drupal para funcionar en multisite, para ello, creamos una carpeta dentro de sites/ con el nombre del primer dominio que vamos a incluir en nuestro multisite, por ejemplo sites/midominio.com (para ser originales). En este directorio es donde van a ir las carpetas modules y themes con los modulos y templates personalizados para el sitio web, además del directorio files (para los archivos que pueda subir el usuario, imágenes …) y el settings.php.

El siguiente paso es copiar el fichero settings.php de sites/default a sites/midominio.com y modificar esta línea para incluir nuestros parámetros de conexión a la base de datos:
$db_url = 'mysql://username:password@localhost/databasename';
Para poder acceder a nuestra web, tenemos que modificar el fichero Vhosts.conf que tenemos creado para trabajar con Virtual Hosts en Apache, le añadimos una entrada más.
<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>

Ojo: El dominio o zona local.pc deberá ser el que tenemos definido en nuestro servidor de DNS!

Viendo esta configuración, saltan a la vista dos cosas, la primera es la ruta de Drupal, tenemos que poner el directorio que contiene la instalación completa de Drupal y no la ruta sites/midominio.com.

La otra cosa que puede llamar la atención es que nuestro dominio no se llama nombredenuestraweb.local.pc, sino midominio.com y es así como se llama la carpeta para Drupal, tenemos dos opciones, o cambiamos el nombre de la carpeta de Drupal a nombredenuestraweb.local.pc y luego lo tenemos en cuenta cada vez que subamos al servidor de internet, o tomamos una decisión mucho más cómoda y creamos un link simbólico que haga que todas las llamadas a nombredenuestraweb.local.pc referencien a midominio.com.

# ln -s midominio.com nombredenuestraweb.local.pc

De esta forma, Drupal ya detectará correctamente las llamadas cuando se referencie a nuestra web por el dominio local, y cuando la subamos al servidor, no tendremos que modificar nada. Este link simbólico nos va a causar un problema si trabajamos con Eclipse, pero veremos como resolverlo más adelante, en los pasos de configuración de los equipos clientes.

La forma de instalar Drupal será la habitual a partir de ahora.

Si es una web que ya tenemos en Drupal, el siguiente paso sería exportar e importar la web para empezar a trabajar en local, esto lo podéis realizar mediante mysqldump / mysql , si tenéis acceso a la línea de comandos en el servidor, o si no con PHPMyAdmin.

Ojo: Si tenéis problemas con la codificación de caracteres al exportar-importar (maldito latin1), echadle un vistazo a esta página.

Si la web es nueva, la instalación de drupal se realizará desde nombredenuestraweb.local.pc/install.php , si están configurados correctamente los parámetros de conexión a base de datos y los Virtual Hosts de Apache, Drupal ya estará operativo en multisite. Para añadir más sitios web en la misma instalación, simplemente incluiremos las nuevas web en sites/ y repetiremos los pasos de configuración de Apache, base de datos y link simbólicos.

4 pensamientos en “Configuración de Apache para utilizar Drupal en multisite.

  1. hola me ayudo mucho tu articulo, te cuento que soy principiante en drupal y estoy trabajando sobre windows
    realice todo lo que dice el articulo pero las lineas que agrego en apache/conf/Vhosts.conf hacen que apache cuando lo reinicio no se levante de nuevo, cuando las comento obviamente si.-
    cuando quiero acceder a installar //localhost/drupal/site/midominio.com/install.php
    no funciona
    quizas todas son tonteras pero eso es lo que me pasa por favor espero con ansisas que me ayudes
    saludos

    Carolina Nolasco

  2. Hola Carolina,

    En entornos Windows puede ser un poco diferente el tema del Apache, en esta dirección puedes encontrar cómo resolver el tema de los virtual hosts y las DNS http://apptools.com/phptools/virtualhost.php

    Y el acceso al install.php, debería ser a través del navegador y con http, en tu caso http://localhost/drupal/site/midominio.com/install.php

    Ojo, en Windows el puerto por defecto del IIS es el 80, así que puede que tu apache esté corriendo sobre el 8080, o debas hacer configuración extra para resolver el conflicto de puertos.

    Saludos!

  3. Pingback: El blog de Neurotic » Blog Archive » Paso a paso para instalar Drupal