Symfony多个站点

时间:2012-08-06 17:26:38

标签: php symfony

我有一个Symfony2核心,用于域A和域B.但是,如果我更新核心,我需要更新两次,因为我不知道如何只配置一个核心,多个域与他们的配置/数据库。

建议?

2 个答案:

答案 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,它是rubySymfony应用程序编写的部署脚本。我没有像你想要实现的那样进行任何设置,但我用它来部署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}}为不同的域设置不同的配置脚本。