Saludos a tod@s desde la trastienda del esta nuestra cocina colaborativa.
De tod@s es sabido que para que l@s grandes chefs trabajen a gusto y lleguen al climax de creatividad y buen gusto hace falta crear y mantener un entorno amigable, con todos los elementos disponibles sin demasiado esfuerzo (...que los cuchillos estén afilados, las cazuelas limpias y en su sitio, y todos los elementos a mano. Es nuestra labor, amig@s de la trastienda: somos pinches de cocina, y a mucha honra, que sin nosotr@ no son nada y viceversa) y dejar los quebraderos de cabeza para lo que realmente interesa: un gran plato rico,rico y con fundamento.
Hoy voy a explicar cómo mantener todos los cacharros ordenados en un único cajón, o lo que es lo mismo: cómo tener todos nuestros sitios con Drupal en un único lugar, con un único núcleo, el llamado Drupal Multisites.
La idea es que sólo exista un único núcleo y todos los sites cuelguen de un directorio de el mismo. Las ventajas son evidentes, pero, desde nuestra perspectiva de pinches, podemos destacar:
-Actualización de un drupal (aunque tengamos 1000 sitios con drupal)
-Automatización de creación de nuevos Drupales
-Automatización de copias de seguridad
Para información más detallada de cómo instalar drupal:
http://www.cocinandocondrupal.net/node/43
Descargar drupal
Primero nos situamos en el directorio donde vayamos a instalar (generalmente /var/www si lo instalamos en nuestra máquina y descargamos la última versión de drupal mediante wget:
$ wget http://ftp.drupal.org/files/projects/drupal-5.X.tar.gz
Ponerlo en su sitio
Descomprimimos:
$ tar -zxvf drupal-5.X.tar.gz
y renombramos:
$ mv drupal-5.X drupal_base
Cambiar permisos
Cambiamos propietario y grupo:
chown -R root:www-data drupal_base
chmod 464 drupal_base/sites/default/settings.php
Base de datos
Hecho esto solo nos falta crear la base de datos el usuario de la base de datos:
$ mysqladmin -u root -p create drupal_base
$ mysql -u root -p drupal_base
(desde aquí hasta exit; estamos en la consola mysql)
GRANT ALL PRIVILEGES ON drupal_base.* TO drupal_base@localhost IDENTIFIED BY 'password_drupal_base';
Flush privileges;
exit;
Montar el Multisites
Crear el directorio para alojar los ficheros del sitio por defecto
[/var/www]# cd drupal_base
[/var/www/drupal_base]# mkdir files
[/var/www/drupal_base]# chmod 777 files
Crear los directorios para alojar los ficheros, modulos y temas de cada sitio
[/var/www/drupal_base]# cd sites/all
[/var/www/drupal_base/sites/all]# mkdir modules
[/var/www/drupal_base/sites/all]# mkdir themes
[/var/www/drupal_base/sites/all]# cd modules
[/var/www/drupal_base/sites/all/modules]# mkdir custom
[/var/www/drupal_base/sites/all/modules]# mkdir contrib
[/var/www/drupal_base/sites/all/modules]# cd ../
[/var/www/drupal_base/sites/all]# cd themes
[/var/www/drupal_base/sites/all/themes]# mkdir custom
[/var/www/drupal_base/sites/all/themes]# mkdir contrib
Creamos el directorio de prueba "www.nuevodominio.es":
[/var/www/drupal_base/sites/all/themes]# cd ../
[/var/www/drupal_base/sites/all]# cd ../
[/var/www/drupal_base/sites]# mkdir www.nuevodominio.es
y sus 3 subdirectorios files, modules y themes.
[/var/www/drupal_base/sites]# cd www.nuevodominio.es
[/var/www/drupal_base/sites/www.nuevodominio.es]# mkdir files
cambiamos los permisos de "settings.php" del default y lo copiamos a www.nuevodominio.es:
[/var/www/drupal_base/sites]# cd default
[/var/www/drupal_base/sites/default]# chmod 777 settings.php
[/var/www/drupal_base/sites/default]# cd ../
[/var/www/drupal_base/sites]# cp -rp sites/default sites/www.nuevodominio.es
Hay que volver a dejarlo como 444
[/var/www/drupal_base/sites/default]# chmod 444 settings.php
Creamos la base de datos para el nuevo sitio
$ mysqladmin -u root -p create drupal_wwwnuevodominioes
$ mysql -u root -p drupal_wwwnuevodominioes
(desde aquí hasta exit; estamos en la consola mysql)
mysql> GRANT ALL PRIVILEGES ON drupal_wwwnuevodominioes.* TO 'wwwnuevodominioes_miusuario'@'localhost' IDENTIFIED BY 'mipassword';
mysql> Flush privileges;
mysql> exit
Vamos al navegador y apuntamos al sitio creado.
Introducimos los datos correspondientes y volvemos a consola a poner permisos de sólo lectura al settings.php
[/var/www/drupal_base/sites]# cd www.nuevodominio.es
[/var/www/drupal_base/sites/www.nuevodominio.es]# chmod 444 settings.php
Descargar módulos que vamos a usar
Los descargamos a /var/www/drupal_base/sites/all/modules/contrib
(esto del contrib y custom nos va a permitir diferenciar los que son desarrollados por unos o por otros)
$ wget http://...
A partir de aquí es opcional, depende de la configuración propia de cada servidor.
Servidor de nombres
Crear entrada dominio recién creado.
Aquí podremos encontrar dos posibilidades:
1ª Que queramos un subdominio dun dominio existente, para lo cual la mejor solución es utilizar un wildcard en el fichero de Bind del dominio, del tipo:
@ IN A 192.168.1.50
localhost A 127.0.0.1
nuevodominio.es. A 192.168.1.50
*.nuevodominio.es. CNAME nuevodominio.es.
todas las peticiones a nuevodominio.es irán al mismo sitio, y podremos ir creando subdominios grestionados por el propio Drupal
2º Que queramos crear un dominio nuevo, para lo cual deberemos crear el nuevo fichero y reiniciar Bind
Apache
Caso 1º
Si estamos creando un subdominio de un dominio ya creado podríamos evitar tocar apache con un Virtualhost del tipo:
ServerAdmin info@investic.net
DocumentRoot "/var/www/drupal_base"
ServerName nuevodominio.es
ServerAlias *.nuevodominio.es
RewriteEngine On
RewriteOptions inherit
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Caso 2º
Si es un nuevo dominio hay que crear un VirtualHost nuevo, activar el sitio
a2ensite nuevositio
y reiniciar apache
#apache2ctl restart