Syn*_*ech 5 configuration paths apache-2.2
我想对-fApache 服务器使用命令行选项,以便我可以将conf文件存储在与服务器二进制文件不同的地方(数据目录)。
问题是我使用 Include 指令来分离和组织配置,但是当我使用类似的命令时Include "addons/SVN.conf",它失败了,因为 Apache 在相对于 ServerRoot 目录而不是 ServerConfigFile 目录中查找 addons/SVN.conf 。
我可以通过使用绝对路径来解决这个问题(例如Include "e:\foo\bar\baz\Apache\conf\addons\svn.conf",但我不喜欢那样,因为这意味着如果我移动 conf 文件夹而不是简单地更改 -f 选项,我将不得不更改每个 Include 指令。
有谁知道让 Include 指令相对于 Apache 传递的 conf 文件起作用的方法。我试过了Include "./addons/SVN.conf",但这也是相对于 ServerRoot 而言的。这种强制的相对于 ServerRoot Include 的行为违背了将备用配置文件指定为 ServerRoot/conf 中的配置文件的全部目的。
谢谢。
好的,我想通了(感谢joschi建议更改ServerRoot,这是解决方案的一部分)。 \n
\n我有两个与 Apache 相关的位置,例如:
\xc2\xa0\xc2\xa0Y:\\Servers\\HTTP\\Apache\xc2\xa0\xc2\xa0\xc2\xa0- 二进制文件
\n \xc2\xa0\xc2\xa0X:\\Docs\\Settings\\Apache\xc2\xa0\xc2\xa0- 配置文件\n
所以我所做的是:
\n\n我将conf和logs目录从 binaries 目录移至 docs 目录。其中\xe2\x80\xa6Settings\\Apache\\conf是httpd.conf,它与httpd.conf.default几乎相同。它有以下条目:
\xc2\xa0\xc2\xa0ServerRoot "Y:\\Servers\\HTTP\\Apache"\xc2\xa0\xc2\xa0#正常\n
然后在文件的底部,我添加了
\n\n\xc2\xa0\xc2\xa0ServerRoot "X:\\Docs\\Settings\\Apache"\xc2\xa0\xc2\xa0- 更改 ServerRoot
\n \xc2\xa0\xc2\xa0Include "conf/Includes.conf"\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0- 包括自定义项\n
下一步只是编辑几个使用LoadModule的Include编辑的 .conf 文件,并将完整路径传递给 .so 文件。
\n\n如果我的自定义 .conf 文件中有很多 LoadModule 调用,我会做的是创建两个新的 .conf 文件(例如BinLoc.conf和ConfLoc.conf),每个文件包含一个ServerRoot指令,而不是使用绝对路径将其设置为 binary/docs 目录。然后我可以将 LoadModule 调用包装如下:
\n\n\xc2\xa0\xc2\xa0Include "conf/BinLoc.conf"\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0
\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0LoadModule ssl_module modules/mod_ssl.so\xc2\xa0\xc2\xa0
\n\xc2\xa0\xc2\xa0Include "conf/ConfLoc.conf"\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0
(不幸的是,第二个包含必须使用设置目录的绝对路径,因此这会达不到目的。)\n
最后,我设置 Apache 从我的 docs 目录加载httpd.conf文件(即 load X:\\Docs\\Settings\\Apache\\httpd.conf)。有几种方法可以做到这一点。安装程序使用Apache 服务的ConfigArgs注册表项,但我决定不使用它并将其清空。我尝试将HKLM\\SOFTWARE\\Apache Software Foundation\\Apache\\2.2.15\\ServerRoot设置为X:\\Docs\\Settings\\Apache,但 Apache 似乎没有\xe2\x80\x99t 接受它。我决定使用命令行。我修改了Install.bat,以便在创建 Apache 服务时,它使用参数传递httpd.conf-f文件(编辑批处理文件比修改注册表中的多字符串更容易/更快)。\n
事实上,我已经使用之前传递了 .conf 文件-f,因此最终所需的唯一更改(除了将文件夹移动到我的 docs 目录之外)是向httpd.conf添加额外的ServerRoot指令以重置配置目录并更改我的非默认(即自定义).conf 文件中的几个 LoadModule 指令以使用绝对路径(尽管如果有很多路径,我可以将其设置回二进制 .\n
Apache 现在运行得很好,(可替换的)二进制文件和(不可替换的)配置文件很好并且是独立的。:)\n
(哦,日志在其他地方,例如。httpd.confX:\\Docs\\Logs\\Apache中与日志相关的条目使用绝对路径,但如果我更改日志目录,它\xe2\x80\x99s 是一个简单的搜索和操作问题-replace-in-files 进行更新,就像我更改二进制文件的位置时自定义 .conf 文件中LoadModule指令的绝对路径一样。)
| 归档时间: |
|
| 查看次数: |
6862 次 |
| 最近记录: |