这是一个相当长的问题,但它有很多。 感觉它应该是一个相当常见的用例,所以我希望Stack Overflow社区可以为我提供“Symfony2”答案的最佳实践。
我在下面描述的解决方案有效,但我想避免一些后果:
是否有“Symfony2的最佳实践”方式来设置我的项目?
我们正在运行LAMP堆栈。我们使用git /(Atlassian)stash进行版本控制。 我们正在使用ORM和FOS-REST的学说与OAuth以及symfony防火墙来验证和授权用户。 我们致力于使用Symfony2,因此我正在努力寻找“最佳实践”解决方案:
我有一个包含3个应用程序的项目:
每个应用程序都使用一组共享模型。
我创建了4个捆绑包,每个捆绑包用于应用程序,第4个捆绑包用于共享模型。
每个应用程序必须使用不同的数据库用户来访问数据库。 只有一个数据库。 有几个表,一个叫做'价格'
只能从一个主机名访问admin API(例如admin-api.server1) 只能从不同的主机名访问公共API(例如public-api.server2) 每个应用程序都托管在不同的服务器上
在我的开发环境中的parameters.yml中,我有这个 // parameters.yml api_public_db_user:user1 api_public_db_pass:pass1
api_admin_db_user: user2
api_admin_db_pass: pass2
batch_db_user: user3
batch_db_pass: pass3
在config.yml中我有这个:
// config.yml
doctrine:
dbal:
connections:
api_public:
user: "%api_public_db_user%"
password: "%api_public_db_pass%"
api_admin:
user: "%api_admin_db_user%"
password: "%api_admin_db_pass%"
batch:
user: "%batch_db_user%"
password: "%batch_db_pass%"
在我的代码中,我可以这样做(我相信这也可以从服务容器中完成,但我还没有那么远)
$entityManager = $this->getContainer()->get('doctrine')->getManager('api_public');
$entityRepository = $this->getContainer()->get('doctrine')->getRepository('CommonBundle:Price', api_admin');
当我将代码部署到每个实时服务器时,我将其中的垃圾值放在parameters.yml中以供其他应用程序使用
// parameters.yml on the public api server
api_public_db_user: user1
api_public_db_pass: pass1
api_admin_db_user: **JUNK**
api_admin_db_pass: **JUNK**
batch_db_user: **JUNK**
batch_db_pass: **JUNK**
所以,我已经保护了我的应用程序并满足了安全审计的要求,但开发过程并不理想,而且感觉不对。
作为背景: