我希望能够以最有效的方式自动区分我的开发服务器和生产(和beta测试)服务器,而不依赖于像HTTP_HOST这样的东西。我希望这对其他开发者来说是透明的,所以他们不必担心它。
我正在使用预编译css并在部署到生产时压缩js,但我想要生产中未压缩的js(以及即时编译的css)。一个简单的“开发”标志足以区分它们,但将这个变量放入开发环境的最佳方法是什么而不浪费生产中的资源?
我目前的计划是动态重写一个php(或ini文件,用parse_ini_file解析)文件作为我们部署过程的一部分,将开发人员设置为false(我可能会重写此文件以设置编译的新文件名) css和js)。但是,我担心如果部署脚本出现意外情况,那么可能存在开发人员模式被推向生产的风险。换句话说,我希望有一些关于开发环境的具体内容,这样就不会有生产系统被误认为开发系统的风险。
我考虑使用单独的user.ini文件来设置自定义“开发”标志以区分这一点,但我无法让它工作,并且想在我花费更多时间之前看看是否有更好的解决方案。
答案 0 :(得分:4)
您可以做的是在每台服务器上的httpd.conf文件中设置标志。因此,对于您的开发框,您可以将其添加到您的apache conf SetEnv APPLICATION_ENV development
。对于您的生产包,请执行相同的SetEnv APPLICATION_ENV production
。
在您的php应用程序配置中,您可以执行以下操作:
switch ($_SERVER['APPLICATION_ENV']){
case 'production':
define('SOME_CONSTANT', 'SOME VALUE');
break;
case 'development':
define('SOME_CONSTANT', 'SOME VALUE');
break;
}
答案 1 :(得分:1)
我可能会将所有开发服务器放在一个子域中并通过HTTP_HOST使用它,但是如果你想避免这种情况,我会说最好的方法是在这些服务器上的配置文件中使用一个标志(什么如果这是你试过的那个怎么办?)或测试一个特定的文件/目录,无论出现什么,生产都会丢失。配置文件中的标志是我使用的方法和我最常见的方法。很难设置它。
或者,您可以通过GET设置一个标志,当您需要时可以切换到库的开发版本。
我对目前尚未奏效的内容有点不清楚 - 实际上这是导致问题的持续整合的原因吗?
答案 2 :(得分:0)
在我们公司,我们通过配置文件区分我们的几个开发服务器与生产,该文件从提交中排除,并包含每个环境的实际设置,以及指示服务器状态的变量。