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
.