2012-08-06 14 views
10

Mam rdzeń Symfony2, który jest używany dla domeny A i domeny B. Ale jeśli zaktualizuję rdzeń, muszę zaktualizować dwa razy, ponieważ nie wiem, jak skonfigurować tylko jeden rdzeń, z wieloma domenami z ich konfiguracjami/bazami danych.Wiele witryn Symfony

Sugestie?

Odpowiedz

8

Wykonaj kopię katalogu „www” na „public_html” folderu na każdej domeny (zakładając, że są uruchomione Apache na Linux)

Ten katalog „web” zawiera przednie kontrolery swoim miejscu (ok. php i app_dev.php), znajdź je i edytuj w swoim ulubionym edytorze tekstu. Zlokalizuj następujące linie:

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

i zmień trasę do rzeczywistej ścieżki względnej, w której znajduje się twój rdzeń. Może to być coś takiego:

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

ten jest elastyczny i może być zorganizowane, jak chcesz, ale upewnij się, że te dwie linie mają poprawną ścieżkę

pamiętać, że wszystkie aktywa (JS, CSS, obrazy ...), które umieścisz w swoim kodzie HTML, odnoszą się do lokalizacji kontrolera frontowego, więc musisz połączyć je przy użyciu pełnego adresu URL nazwy domeny, w której znajdują się lub skopiuj je również do domeny B lub użyj assetic

Na koniec będziesz wil Mam coś takiego:

/ 
.. 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 

Teraz powinieneś mieć 2 punkty wejścia do swojego wniosku. Możesz nawet umieścić różne obrazy CSS i obrazy na każdym z nich, aby nadać im inny wygląd.

+0

Probolem polega na tym, jak mieć wiele baz danych i przełączać się w oparciu o domenę każdego z nich. –

+2

Należy dodać wiele menedżerów encji (po jednym dla każdej bazy danych) (http://symfony.com/doc/current/cookbook) /doctrine/multiple_entity_managers.html), a następnie wybierz poprawny w zależności od domeny, do której uzyskujesz dostęp (szukaj tego w obiekcie REQUEST .Jeśli chcesz go skalować, zbuduj usługę, aby to zrobić. Mam nadzieję, że to pomoże. – Xocoatzin

3

Być może można wypróbować za pomocą Capifony, jest to skrypt wdrażania napisany w ruby dla aplikacji Symfony. Nie dokonałem żadnych ustawień, takich jak to, co próbujesz osiągnąć, ale używam go do wdrażania obu serwerów produkcyjnych z etapowaniem. Można go skonfigurować do wdrażania różnych instancji aplikacji na jednym serwerze (np. Różne katalogi) lub wielu serwerów.

Gdy są już prawidłowo ustawiony, wdrażania jest tylko kwestia typowania:

cap server1 deploy 
cap server2 deploy 

każdym uruchomieniu polecenia, capifony będzie ciągnąć najnowszy kod z repozytorium (np: git) i wdrożyć go. Jako bonus, stare wersje aplikacji są również zapisywane na serwerze, jeśli musisz powrócić do poprzedniego stanu.

Oto przykładowy skrypt konfiguracyjny capifony tylko daje przegląd:

# 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 

I można mieć różne skrypty konfiguracyjne, każdy dla innej domenie, korzystając z multistage extension dla capifony.

Powiązane problemy