Manejar multisitios de forma simple y automática

Hola,

Ante todo, saludos a la comunidad. Escribo porque he estado investigando el asunto de los multisitios y no logro dar con la solución exacta para la necesidad que tengo. Les cuento, la idea es utilizar una sola instalación de Drupal, con sets de módulos, plantillas e idiomas que se instalen en un solo lugar y que estén disponibles para todos los sitios; cada uno de esos sitios debe ser manejado por una cuenta de usuario diferente (que debe tener acceso sólo a ese sitio y a ninguno más), y tendrá menús y contenidos completamente diferentes a los demás, pudiendo escoger el utilizar o no los módulos disponibles y pudiendo personalizar el diseño escogiendo la plantilla de su preferencia y modificando los colores a su gusto. Los sitios serán accesibles desde dominios propios o subdominios del dominio principal.

El punto es que quisiera administrar esto preferentemente a través de un módulo, o lo que sea que se me haga similar, es decir, alguna especie de interfaz web que me permita fácilmente hacer altas, bajas y modificaciones de todos los sitios que tengo desde un solo lugar central, y no he encontrado hasta ahora nada que se le parezca. Vi uno o dos módulos en la página oficial de Drupal, pero no tenían demasiadas explicaciones y, honestamente, soy nuevo en esto y no los pude entender demasiado.

Agradeceré cualquier información que puedan darme que me ayude a solucionar el problema.

Saludos nuevamente,

Seth

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

puedo mantener una sola BD?

Hola,

puedo mantener una sola BD para dos sitios sin problemas?

Sobre el último módulo recomendado

En primer lugar, gracias por el extenso mensaje :)

Había visto el módulo en http://drupal.org/project/multisite_manager, pero según la documentación (o al menos eso entendí yo) la URL final de los sitios debe ser siempre www.dominio.com/site/nombredelsitio, y necesito la posibilidad de usar dominios propios; además, requiere de la edición de archivos de configuración de Apache, que no puedo realizar en mi actual servidor. Además, no soy programador, por lo que algunas cosas tal vez básicas para otras personas se me escapan un poco, y no estoy en condiciones de editar un archivo PHP para que haga lo que yo quiero (salvo que se trate de modificaciones muy elementales, claro).

Investigaré sobre las opciones mencionadas en tu mensaje, y comentaré más adelante qué tal me ha ido. Gracias nuevamente.

permisos..

resulta que si lees bién:

Ejemplos de sites
* 1. sites/www.drupal.org.mysite.test
* 2. sites/drupal.org.mysite.test
* 3. sites/org.mysite.test
* 4. sites/www.drupal.org.mysite
* 5. sites/drupal.org.mysite
* 6. sites/org.mysite
* 7. sites/www.drupal.org

O lo que biene a ser lo mismo..

sites/www.dominio1.com
sites/www.dominio2.com
sites/www.dominio3.com

De esta forma, si la petición llega al servidor web con el vhost www.dominio1.com, pero llega a la IP (o al vhost) donde está el drupal, el cms leerá la configuración del directorio sites/www.dominio1.com.

El hecho de que sea así, es precísamente lo que creo que estás buscando, ya que luego sólamente tienes que redirigir el dominio (via DNS) a la IP donde está el drupal, en lugar de andar configuando vhosts inexistentes.. El tema de los vhosts es para que los interprete apache y asigne a cada vhost un directorio diferente.. Tu no tienes que hacer eso.. para ti todos los dominios son la misma dirección IP, para apache también, pero es drupal quién gestionará el virtual host.

Si la configuración que estás buscando depende de que el usuario apache, escriba los archivos de configuración de apache (que no sean .htaccess) lo vas a tener complicado, ya que en ningún hosting te van a dejar que eso pase, entre otras cosas, no ya por seguridad, si no para que no te lo puedas cargar por un error de configuración.

Parece que quiere funcionar

Lo he probado, y el módulo efectivamente crea multisitios. No tuve que tocar nada de la configuración de Apache, me bastó con apuntar los dominios y utilizarlos de la manera que me explicaste. Tenía la idea errónea de que si no tocaba esa configuración que me pedía no iba a funcionar, por eso no había probado el módulo.

Ahora, lo que todavía no logro es que al ingresar por el dominio de un multisitio me redirija a él; me hace acceder al sitio principal, así que no sabría decir todavía si es posible utilizar distintos contenidos, plantillas, configuraciones, etcétera. Asumo que hay algo que me está faltando configurar, y creo que tiene algo que ver con esto que me decías de la carpeta Sites y los dominios, pero no estoy seguro de qué es.

Gracias por tus aportes, están siéndome de gran ayuda :)

más configuración

No se si lo has solucionado ya, por si acaso:

en el settings.php aún queda una cosa por configurar:

/**
* Base URL (optional).
*
* If you are experiencing issues with different site domains,
* uncomment the Base URL statement below (remove the leading hash sign)
* and fill in the URL to your Drupal installation.
*
* You might also want to force users to use a given domain.
* See the .htaccess file for more information.
*
* Examples:
*   $base_url = 'http://www.example.com';
*   $base_url = 'http://www.example.com:8888';
*   $base_url = 'http://www.example.com/drupal';
*   $base_url = 'https://www.example.com:8888/drupal';
*
* It is not allowed to have a trailing slash; Drupal will add it
* for you.
*/
# $base_url = 'http://www.example.com';  // NO trailing slash!

Lo extraño es que el módulo no se encargue de modificar este valor de la varaible, para que el settings de cada sitio te redirija a su web correspondiente. Lo de redirigir de forma automática a la web original sucede por que el base url definido por defecto lo coge del site: default, que es el dominio principal seguramente.

Ya sabes lo que toca, modificar a mano el settings de cada sitio, o enviar una feature request al que mantenga el módulo, o hacerlo tu mismo y enviar el parche.. te animas? ;)

ánimo y suerte!

Honestamente, si de verdad

Honestamente, si de verdad eres nuevo, te estás metiendo en el tipo de instalación más complicado de drupal..

El tema de los múltisitios se gestiona desde hosts virtuales, normalmente subdominios del dominio principal. La forma de organizar cada "site" es precisamente utilizando la carpeta "sites" de drupal, donde ahí crearas un directorio por cada sitio diferente. Hay dos excepciones.. "default" que es donde irá a parar salvo que exista un sitio definido para ese subdominio, y "all" que es la configuración que afecta a TODOS los sitios definidos..

La forma en la que se resuelve el sitio al que estás accediendo, partiendo de la url (únicamente la parte subdominio.dominio) está especificada en el settings. A todos los efectos, lo que importa principalmente cuando accedes a un sitio es que lea bien el settings.php, y para eso, drupal lo va a buscar siguiendo este orden:

* For example, for a fictitious site installed at
* http://www.drupal.org/mysite/test/, the 'settings.php'
* is searched in the following directories:
*
*  1. sites/www.drupal.org.mysite.test
*  2. sites/drupal.org.mysite.test
*  3. sites/org.mysite.test
*
*  4. sites/www.drupal.org.mysite
*  5. sites/drupal.org.mysite
*  6. sites/org.mysite
*
*  7. sites/www.drupal.org
*  8. sites/drupal.org
*  9. sites/org
*
* 10. sites/default

Si encuentra el settings, hará caso del archivo de configuración y mezclará los directorios de ese "site" con los del drupal..

Así que si quieres un sitio por defecto, pues metes los modulos y temas en el directorio default. Si quieres dos sitios, creas un directorio dentro de "sites" con el nombre del subdominio/dominio adecuado, y metes ahí los módulos y temas de ese sitio.. Si quieres compartir módulos entre todos los sitios, pues los metes en el directorio "all".. Hasta aqui lo facil..

ahora viene la parte de compartir información entre sitios.. y eso es todo configuración del settings.php, que es donde se define la configuración inicial (y fija) y el acceso a la base de datos de drupal. Lo normal suele ser tener diferentes bases de datos por cada sitio, hasta que necesitas compartir alguna opción entre dos o más de los sitios definidos.. que entonces tienes uqe mezclar la base de datos de uno y otro, y especificar cuales son las tablas que compartes.. Para no liar mucho lo que se suele hacer es poner las tablas del nuevo sitio con un prefijo, que las distinguirá de las demás.
(hay que editar el settings.php del sitio en cuestion)

* To have all database names prefixed, set $db_prefix as a string:
*
*   $db_prefix = 'main_';
*

Y ahora indicamos cuales son las tablas compartidas..

*   $db_prefix = array(
*     'default'   => 'main_',
*     'users'     => 'shared_',
*     'sessions'  => 'shared_',
*     'role'      => 'shared_',
*     'authmap'   => 'shared_',
*     'sequences' => 'shared_',
*   );

El ejemplo que viene comentado en el settings.php es la configuración para compartir los usuarios entre los dos sitios. Y esto conviene hacerlo desde el principio, ya que si no luego los autoincrement empiezan a dar problemas cuando creamos un usuario en un sitio o en otro..

Otra opción es compartir las tablas de traducción y watchdog, para poder llevar las dos tareas desde un único punto. La parte en la que se empiea a liar todo es cuando quieres tener también no solo los módulos, sino también el contenido compartido.. que o lo tienes todo, o no lo tienes.. ya que tienes que compartir las tablas de cada módulo que se comparte, y para permitir el acceso empiezas a crear roles y categorías que solo se ven en un sitio o en otro, y luego pruebas un módulo de acceso (de los denominados 'node access' que permiten gestionar quién puede ver que nodos o categorías) y entonces se lia la cosa de tal manera, que vuelves a borrar los sitios y a empezar de nuevo.. Si encima quieres una configuración muy específica, con varios idiomas y encima tenerlo siempre controlado y que no haya problemas de quién escribe qué y quién edita qué o quién vé qué..

Esta es la teoría de como funcionan los multisitios en drupal.. ahora falta el módulo que hace todo eso automático que es lo que estás buscando..

Hay varios modulos por lo

Hay varios modulos por lo visto para gestionar todo esto...

On 19-Jul-06, at 4:46 PM, Khalid B wrote:

> There is something called "Hostmaster", which is what Bryght.com uses
> for multi site. They are  in  the process of open sourcing it.

Not "in the process of" -- it is open source under the GPL. We have 
protected access to the repository at the moment. Contact me for access.

The publish and subscribe modules may be a good solution for you. One 
can imagine a dashboard-style module that would have access to all 
the instances of a multi-site install for managing the cross-site 
integration of pub-sub. The XUL-based desktop admin client being 
developed as part of the SoC may also be appropriate for this purpose.

--
Boris Mann
Vancouver 778-896-2747 San Francisco 415-367-3595
SKYPE borismann
http://www.bryght.com

La otra opción es Sympal.. que queda fuera de drupal, pero está pensado para esto..

Right now I am moving all the stuff into my own SVN, where I am integrating
the scripts into a distribution (4.7+). You can follow progress in
anon-checkout SVN: http://webschuur.com/svn/sympal/

Bèr
[1] http://drupal.org/project/sympal_scripts
[2] http://www.ispconfig.org/
[3] http://dischosting.sourceforge.net/
[4] http://webschuur.com/node/637
--
[ Bèr Kessels | Drupal services www.webschuur.com ]

Se puede bajar aqui: http://drupal.org/project/sympal_scripts y son un conjunto de scripts en PHP para gestionar los sitios.

Existe también este ModuleMagic (http://drupal.org/project/modulemagic) que permite instalar módulos en uno o varios sitios.. no se si los llega a gestionar, porque no lo he probado (ni lo voy a hacer)..

Este otro módulo (http://drupal.org/project/multidomain) Multidomain .. que especifica:

This is a module which allows you to span one site across multiple domains.

You can configure which domains to use for different parts of your site including which protocol that section uses. It can also be used to put the ecommerce or user account functionality behind https, for instance.

This module was primarily developed for Oasis Magazine for the purpose of hosting different types of content, on different sites, while using the same database, so that information can be cleanly promoted between the different sites, without having to worry about syndication and the like.

This module requires the single sign-on module, to allow you to be logged into multiple domains at the same time.

Por cierto, que todo esto depende mucho del hosting donde montes el drupal. Si lo montas en casa no pasa nada, pero si es un hosting de pago, donde te obligan a tener la BD con un prefijo y luego ya vas a empezar a añadir más, y a compartir tables, y.. y encima lo gestionas con un PHP que tiene que tener acceso a disco para crear directorios y editar settings.php.. y.. pff Al final poco a poco y con varias funcionalidades puedes conseguir lo que estás intentando..

Pero el mejor de todos los módulos es.. sin duda alguna
http://drupal.org/project/multisite_manager
Es curioso que buscando no lo hayas encontrado, porque pega el cante que no veas..

Según describe:

Allows creation of new drupal sites from a central drupal site without the creator having access to database info. The new site is installed either in the same database with a different prefix or if the drupal db_user has access to create a database and grant privileges, then possibly there.

Ahora que ya mas o menos te he puesto al día, me voy a quedar por aqui esperando a ver cual es tu siguiente pregunta.. Si es algo así como "pero como tengo que hacer para..." entonces mi conclusión será que no solo eres novato como dices, sino también un poco vago..

Para acabar, honestamente, buscando un poco aparecen las cosas :)