2012-08-06 10 views
10

Tengo un núcleo Symfony2, que se usa para el dominio A y el dominio B. Pero, si actualizo el núcleo, necesito actualizar dos veces, porque no sé cómo configurar solo un núcleo, con múltiples dominios con sus configuraciones/bases de datos.Symfony multiple sites

Sugerencias?

Respuesta

8

Haga una copia del directorio "web" en la carpeta "public_html" en cada dominio (suponiendo que está ejecutando Apache en Linux)

Este directorio "web" contiene los controladores frontales de su sitio (aprox. php y app_dev.php), ubíquelos y edítelos en su editor de texto favorito. Busque estas líneas:

require_once __DIR__.'/../app/bootstrap.php.cache'; 
require_once __DIR__.'/../app/AppKernel.php'; 

y cambie la ruta a la ruta relativa real donde se encuentra su núcleo. Podría ser algo como esto:

require_once __DIR__.'/../the_core_is_here/app/bootstrap.php.cache'; 
require_once __DIR__.'/../the_core_is_here/app/AppKernel.php'; 

Esta es flexible y se puede organizar como desee, pero asegúrese de que estas dos líneas tienen el camino correcto

Tenga en cuenta que todos los activos (JS, CSS, imágenes ...) que incluye en su HTML son relativos a la ubicación del controlador frontal, por lo que deberá vincularlos usando la URL completa del nombre de dominio donde residen o cópielos también en el dominio B o use assetic

Al final usted wil Tengo algo como:

/ 
.. home 
.. .. DOMAINA 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. DOMAINB 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. the_core_is_here 
.. .. .. app 
.. .. .. src 
.. .. .. bin 
.. .. .. vendor 

Ahora usted debería tener 2 puntos de entrada para su aplicación. Incluso puede poner diferentes CSS e imágenes en cada uno para darles un aspecto diferente.

+0

El probolem es cómo tener múltiples bases de datos y cambiar en función del dominio de cada cliente .. –

+2

que tendría que añadir varios gestores de entidad (una para cada DB) (http://symfony.com/doc/current/cookbook /doctrine/multiple_entity_managers.html) y luego elija la correcta según el dominio al que se esté accediendo (busque eso en el objeto REQUEST. Si desea escalarlo, cree un servicio para hacerlo. Espero que esto ayude. – Xocoatzin

3

Quizás podría intentar usar Capifony, es una secuencia de comandos de implementación escrita en ruby para la aplicación Symfony. No he hecho ninguna configuración como la que está tratando de lograr, pero la utilizo para implementar ambos servidores de producción & por etapas. Se puede configurar para implementar diferentes instancias de la aplicación en un servidor (p. Ej .: directorios diferentes) o en varios servidores.

Una vez que están correctamente la instalación, despliegue es sólo una cuestión de tipificación:

cap server1 deploy 
cap server2 deploy 

Cada vez que se ejecuta el comando, capifony tirará del último código desde el repositorio (por ejemplo: GIT), y desplegarlo. Como beneficio adicional, las versiones antiguas de la aplicación también se guardan en el servidor si necesita volver al estado anterior.

Aquí está el script de configuración capifony muestra sólo para darle una visión general:

# deploy.rb 
set :application, "My App" 
set :deploy_to,  "/var/www/my-app.com" 
set :domain,  "my-app.com" 

set :scm,   :git 
set :repository, "ssh-gitrepo-domain.com:/path/to/repo.git" 

role :web,   domain 
role :app,   domain 
role :db,   domain, :primary => true 

set :use_sudo,  false 
set :keep_releases, 3 

Y puede tener diferentes scripts de configuración, cada uno para un dominio diferente, utilizando la multistage extension para capifony.