Symfony несколько сайтов

У меня есть ядро ​​Symfony2, которое используется для домена A и домена B. Но если я обновляю ядро, мне нужно обновить два раза, потому что я не знаю, как настроить только одно ядро ​​с несколькими доменами с их конфигурациями/базами данных.

Предложения?

Ответ 1

Сделайте копию каталога "web" в папке "public_html" в каждом домене (при условии, что вы используете Apache в Linux)

Этот "веб-каталог" содержит передние контроллеры вашего сайта (app.php и app_dev.php), размещает их и редактирует их в вашем любимом текстовом редакторе. Найдите следующие строки:

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

и измените маршрут на фактический относительный путь, где находится ваше ядро. Это может быть примерно так:

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

Это гибко и может быть организовано по своему усмотрению, но убедитесь, что эти две строки имеют правильный путь

Имейте в виду, что все активы (JS, CSS, images...), которые вы включаете в свой HTML, относятся к местоположению переднего контроллера, поэтому вам нужно будет связать их, используя полный URL-адрес имени домена, где они проживать или, копировать их также в домене B или, используя assetic

В конце вы получите что-то вроде:

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

Теперь у вас должно быть 2 точки входа для вашего приложения. Вы можете даже поместить разные CSS и изображения на каждый, чтобы дать им разные аспекты.

Ответ 2

Возможно, вы могли бы попробовать использовать Capifony, это развертывание script, написанное в приложении ruby для Symfony. Я не делал никаких настроек, как то, чего вы пытаетесь достичь, но я использую его для развертывания как промежуточных, так и производственных серверов. Он может быть настроен для развертывания разных экземпляров приложения на один сервер (например: разные каталоги) или нескольких серверов.

После правильной настройки развертывание - это всего лишь вопрос ввода:

cap server1 deploy
cap server2 deploy

Каждый раз, когда вы запускаете команду, capifony вытаскивает последний код из репозитория (например: git) и развертывает его. В качестве бонуса старые версии приложения также сохраняются на сервере, если вам нужно вернуться в предыдущее состояние.

Вот пример конфигурации capifony script, чтобы дать вам обзор:

# 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

И вы можете иметь разные сценарии конфигурации, каждый для другого домена, используя многоэтапное расширение для capifony.