Comparta una instalación de Kohana entre sitios
Pregunta
Hola a todos, algo nuevo en Kohana y tengo una pregunta rápida.
Tengo un sitio en el que habrá tres subsecciones, organizadas por Subdomain (es decir, admin.site.com, comunidad.site.com, www.site.com) pero cada una de las subsecciones se extraerá de la misma base de datos, por lo que debería compartir los mismos modelos. ¿Hay alguna manera de organizarlo para que pueda usar los mismos archivos de modelo/sistema/módulo Kohana para cada uno de los subdominios, pero mantenga la carpeta de aplicación separada? Algo como:
/home/user/admin/
application/
bootstrap.php
cache/
...
index.php
/home/user/community/
application/
bootstrap.php
cache/
...
index.php
/home/user/public_html/
application/
bootstrap.php
cache/
...
index.php
/home/user/kohana/
modules/
...
models/
...
system/
De esa manera, puedo mantener a Kohana actualizado en tres sitios con una sola actualización, además puedo usar los mismos módulos y clases de modelos. ¿Hay alguna forma de que esto suceda? ¿O hay algún otro método que debería estar usando?
¡Gracias!
Solución
Descubrí cómo hacer esto, así que pensé en responderlo en caso de que alguien más necesite saberlo.
Moví mi system
y modules
carpetas fuera de la raíz (para /home/user/kohana/
) y creó una carpeta allí llamada sites
. Luego creé tres carpetas separadas en /home/user/kohana/sites/
para cada uno de mis tres subdominios (admin
, community
, y www
). Copié el contenido del application
carpeta a cada una de estas carpetas, luego copió el index.php
y .htaccess
Archiva a Webroots para cada subdominio.
En cada uno de los index.php
archivos, en la parte superior, agregué:
$install_dir = '../kohana/';
y editó las siguientes variables de directorio para incluir la nueva ruta:
...
$application = $install_dir.'sites/admin';
...
$modules = $install_dir.'modules';
...
$system = $install_dir.'system';
¡Y funcionó! Me siento un poco estúpido por no darme cuenta de lo fácil que era mover los directorios. Esperemos que mi explicación sea coherente y ayude a alguien más en el futuro.