繁体   English   中英

为多个域配置symfony项目

[英]Configure symfony project for Multiple Domains

我们有一个用PHP Symfony框架开发的产品。 我们现在有几个客户为我们维护不同的代码库和数据库(MySql)。

他们使用client1.myproduct.com和client2.myproduct.com等子域访问各自的代码库

现在我们想为两个客户端创建一个代码库,并且只在不同的子域中保留两个不同的文件(就逻辑而言)。

因此,两个子域都将指向相同的代码库,但是只要需要,即每当客户端的某些功能的逻辑不同时,它们将从各自的子域访问文件。

任何人都可以建议最好的方法是什么?

网站:[foo.com,bar.co.uk,www.mike.es]

// index.php
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

// get the domain
$domain = $_SERVER['SERVER_NAME'];

// get rid of www, com, es etc ...
foreach(array('www.', '.com', '.es', '.co.uk') as $crap) {
    $domain = str_replace($crap, '', $domain);
}
$confs = array(
    'foo' => 'somefoo',
    'bar' => 'somebar',
    'waz' => 'andwazconfig'
);
$cfg = (!empty($confs[$domain])) 
    ? $confs[$domain] 
    : 'default';

$configuration = ProjectConfiguration::getApplicationConfiguration($cfg, 'prod', false);

sfContext::createInstance($configuration)->dispatch();

// End of index.php

希望这可以帮助

是的,你可以这样做。 Symfony Routing可以处理这个用例,但它不是一个更容易完成的任务。 有关详细说明,请查看Symfony-Documentation: http//www.symfony-project.org/more-with-symfony/1_4/en/02-Advanced-Routing

我在这里使用sfDomainRoutePlugin描述了在Symfony中使用动态子域。

但是,您需要重写大部分现有应用程序逻辑以支持同一应用程序中的多个客户端,并且还必须合并两个旧数据库。

我要求提供相同的信息,并有机会收到迈克和法比安的回复。 以下是详细信息:

对于一个带子域的逻辑: http//trac.symfony-project.org/wiki/HowToDoMultipleSitesWithSingleCore

基于相同配置的多个站点这可能是一个奇怪的主题,但我想配置我们对子域的访问,所有子域都具有SSL访问权限。 我们需要不同的站点,因为SSL强制基于IP的虚拟域,这意味着我们的文档根源不同。 如:

•www.mydomain.com•admin.mydomain.com•parents.mydomain.com但是,这些都是具有相同核心架构和插件的站点。 这种配置的优点是:

•共享模型文件:所有XxxPeer类将跨应用程序链接缺点:

•您现在可以监控2-n个不同的缓存/日志。 如果查看典型的Symfony目录结构,可以将其分解为两个类型组:

•通用目录:◦batch◦config◦data◦doc◦lib◦plugins◦test•特定于应用程序的目录:◦apps◦cache◦log◦web以下是我采取的步骤:

•开发www.yourdomain.com架构和站点。 一旦开始合并,您就可以开始开发其他站点了。 •在新站点中,通用目录的符号链接•在新站点中,创建应用程序特定目录◦注意:在Web目录中,您可能需要复制一些原始内容(css,js和.htaccess文件来去提醒)。 当您开始启动新网站时,请牢记这一点。 •运行命令symfony fix- perms◦注意:对我来说,Virtualmin使用新用户名创建这些新站点。 您必须确保所有特定于应用程序的目录都由该用户名拥有,因此您的clear-cache命令和日志记录命令可以正常工作。 •现在,您已配置项目。 您首先要做的:◦symfonyappMYAPP◦symfony模块MYAPPMYMODULE◦...•您现在将发现您的apps / MYAPP / modules / MYMODULE已创建,并且您拥有对整个数据库的完全对等访问权限

这是关于一个具有不同域名的逻辑的fabien:client1.com client2.com使用相同的应用程序。

对于具有不同域的一个逻辑:“您可以将它们全部指向同一个前端控制器,然后使用过滤器或操作父类来执行更改站点模板等操作。但是,每个域的前端控制器可能更多高效,是一个非常好的方式。

每个域都可以有自己的应用程序,但是大部分逻辑应该在插件中实现,因此可以为需要它们的每个域/应用程序启用它们,并根据需要进行共享。 我猜,每个应用程序需要多少代码取决于网站实际上的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM