我正在基于 Debian 的 Linux 发行版下配置 Apache。我希望以这样的方式配置它,即我的配置更改不会妨碍 Apache 升级。我希望以这样一种方式进行配置,即我不必编辑发行版附带的任何配置文件。
我知道我可以将我的网站的配置放在/etc/apache2/站点可用目录,然后使用 启用它们a2ensite
。同样,我可以使用 启用我想要的模块a2enmod
。
如果我将新配置文件写入/etc/apache2/conf-可用/然后使用a2enconf
来启用它们?具体来说,它们是否能够覆盖其他配置文件中指定的设置。例如/etc/apache2/apache2.conf指定Timeout 300
。如果我放入Timeout 500
配置文件,它会覆盖先前的声明吗?是否有任何 Apache 配置指令无法使用此覆盖技术?
答案1
如果当前配置通过掩码使用来自某个目录的包含 - 是的,你可以。
通常看起来像这样:
Include etc/apache22/Includes/*.conf
因此,您只需将配置复制到该目录中,并记住 apache include 是按词汇顺序包含的。如果您想覆盖一些已设置的值,只需将文件命名为 zzzzzzzzz.conf
答案2
基于 Kondybas 的鼓励性回答,我继续尝试了这种方法。我只遇到了两个问题:
该
Listen
指令不能被“覆盖”。就其本质而言,它是一个“附加”指令。让我困惑了一段时间的是,它甚至不能为同一个端口号指定两次。以下将导致错误,指出端口 80 已被使用,Apache 无法启动。对我来说,解决方案是Listen
从我自己的配置中删除该指令,并仅依赖发行版提供的指令。Listen 80 Listen 80
PidFile
在基于 Debian 的系统上,如果不修改配置文件,则无法覆盖该指令/etc/apache2/envvars
。进程 ID 文件必须与该配置文件和 Apache 配置文件相匹配,否则 Apache 将无法使用 Debian 的service
命令启动。
除此之外,我尝试过的所有其他指令在第二次指定它们的配置文件中都可以正常工作。