我有一个Symfony2核心,用于域A和域B.但是,如果我更新核心,我需要更新两次,因为我不知道如何只配置一个核心,多个域与他们的配置/数据库。
建议?
答案 0 :(得分:8)
将“web”目录的副本复制到每个域的“public_html”文件夹中(假设您在Linux上运行Apache)
此“web”目录包含站点的前端控制器(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';
这很灵活,可以按照您的喜好进行组织,但请确保这两行具有正确的路径
请记住,您在HTML中包含的所有资产(JS,CSS,图像......)都与前端控制器位置有关,因此您需要使用域名的完整网址链接它们。驻留或也将它们复制到B域或使用资产
最后你会得到类似的东西:
/
.. 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和图像,以赋予它们不同的方面。
答案 1 :(得分:3)
也许您可以尝试使用Capifony,它是ruby
为Symfony
应用程序编写的部署脚本。我没有像你想要实现的那样进行任何设置,但我用它来部署staging&生产服务器。可以将其设置为将应用程序的不同实例部署到一个服务器(例如:不同的目录)或多个服务器。
正确设置后,部署只需输入:
cap server1 deploy
cap server2 deploy
每次运行命令时,capifony
都会从存储库中提取最新代码(例如:git),然后进行部署。作为奖励,如果您需要返回到以前的状态,旧版本的应用程序也会保存在服务器上。
以下是示例capifony配置脚本,仅为您提供概述:
# 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
{{1}}为不同的域设置不同的配置脚本。