繁体   English   中英

不同的配置文件取决于Apache中的环境

Different config files depending on environment in Apache

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将Apache从Linux服务器迁移到基于Docker Image http:2.4的Openshift服务器,并且基本的工作正常。 但是原始服务器位于不同的环境和数据中心中,因此我必须找到一种方法来将httpd.conf文件的所有不同变体组合成一个有条件的文件。

我将在Openshift中使用类似于以下内容的Linux环境变量:

oc_env=dev # [or stage or prod]  # environment
oc_loc=dc1 # [or dc2]            # data center

根据这两个变量的组合,可能必须使用include来加载不同的设置。

我玩过<If>Define ,但是到目前为止,我还无法使任何东西都能按我需要的方式持续工作。 这是我当前的测试mydir不是最终设计的一部分,我仅使用它来更轻松地测试条件:

Define mydir "/usr/local/apache2/htdocs"  # set the default
<If "osenv('oc_env') == 'dev'">
  LogMessage "dev"
  Define mydir "/usr/local/apache2/htdocs/dev"  # override default
</If>
LogMessage "mydir is set to"
LogMessage ${mydir}
DocumentRoot ${mydir}

如果我设置oc_env (在Openshift中,那么它将在Linux环境中显示在env中),这是在日志文件中发生的情况:

oc_env = dev

mydir is set to 
/usr/local/apache2/htdocs/dev
dev

oc_env =其他

mydir is set to
/usr/local/apache2/htdocs/dev

因此,即使条件为false,并且定义使用了错误的定义,也会再次执行Define命令。

我也对条目的显示顺序感到困惑(尽管它在代码的前面,但LogMessage "dev"显示在最后)。

最后,我需要有一个包含多个区域的httpd.conf文件,该文件需要运行这样的检查:

# section 1
"if oc_env is dev and oc_loc is dc1 then load external config file dev_dc1_part1.conf else if ....."
[...]
# section 2
"if oc_env is dev and oc_loc is dc1 then load external config file dev_dc1_part2.conf else if ....."

当前文件非常复杂。

我可能与此完全错了。 我的下一个尝试将围绕SetEnvIf ,但是在工作了几天之后,我的时间很短,所以我希望有人可以指出正确的方向。

谢谢!

- - 更新 - -

SetEnvIf似乎也不适合该工作。

所以我尝试了Include ,现在我比以往任何时候都更加困惑...

<If "osenv('oc_env') == 'dev'">
  LogMessage "dev"
  Include /usr/local/apache2/conf/inc_dev.conf
    # file content: Define mydir "/usr/local/apache2/htdocs/dev"
</If>
<ElseIf "osenv('oc_env') == 'stage'">
  LogMessage "stage"
  Include /usr/local/apache2/conf/inc_stage.conf
    # file content: Define mydir "/usr/local/apache2/htdocs"
</ElseIf>
<Else>
  LogMessage "test"
  Include /usr/local/apache2/conf/inc_test.conf
    # file content: Define mydir "/usr/local/apache2/htdocs"
</Else>

LogMessage ${mydir}

结果:

/usr/local/apache2/htdocs
dev

这怎么可能呢? 即使If子句不适用于Include总是执行吗?

请让我知道我可以做些什么。

问题暂未有回复.您可以查看右边的相关问题.
2 Angular 6 - 根据环境提供不同的索引文件

我有一个本地环境和一个生产环境。 在 index.html 中,我根据环境是本地环境还是生产环境添加或删除脚本文件。 我想要一个简单的方法来处理这个问题。 在angular.json有一个 file_replacement 配置选项。 这适用于将environment.ts切换到environme ...

3 如何让Bamboo根据环境使用不同的配置文件进行部署

对于每种不同的部署环境,我都有不同的配置文件。 开发,质量检查和现场直播就是这些环境。 部署时如何让Bamboo在每种环境下使用正确的配置文件? 因此,在部署开发环境Bamboo时,请使用dev config文件并更改其名称,并将其放在正确的位置。 我认为工件可以解决此问题? ...

4 如何根据环境在 nuxt.config.js 中使用不同的设置

感谢 dotenv 我可以在我的 nuxt.config.js 文件中使用环境变量 只有我有整个设置需要根据环境消失。 在某些情况下,我知道如何使用第三个条件,但在其他情况下,我不能。 例如,对于我的开发环境,我必须这样做: 对于我的生产环境,我必须添加一些东西 如何简单地做到这一点? ...

6 不同的 .ebextensions 取决于环境

我有 2 个独立的环境来管理我的应用程序,一个主环境,一个带有负载平衡器的网络服务器,以及一个辅助环境,一个运行 cron 的小层工作者。 我的 .ebextensions 包含很多实例和负载均衡器配置,例如: 01amazon.config 当我通过 eb deploy worker-e ...

8 apache重定向到不同的目的地,具体取决于是否存在多个文件之一

我有一个静态网站(由Apache服务),可以在其中下载软件包。 这些软件包首先出现在站点的“开发”部分,然后在某些时候也可以在“发行”部分使用。 这些软件包可以存在于多个“存储库”之一中,但是可以保证每个软件包在所有存储库中都具有唯一的名称。 假设我的存储库名称是repos1,repos2 ...

9 symfony环境配置文件

我将fosrestBundle与Monolog记录器一起使用来创建自定义日志。 我在config_dev.yml中添加了这个conf: 所以我在其他环境配置文件(config_prod.yml,config_qualif.yml ...)中也做了同样的事情 问题是可能未使用con ...

2017-02-06 08:39:58 2 114   symfony
10 在apache环境变量中配置变量

我正在运行几个不同的PHP购物车,我们正试图在版本控制下获取各种配置文件。 到目前为止,我们一直在git中忽略它们,因为当然,我们不希望任何人都可以使用生产级密码。 此外,我们大多数开发人员都在运行具有唯一信息的本地安装。 在与我们的系统管理员讨论该问题时,我突然想起我们可以在apac ...

暂无
暂无

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

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