我可以通过提供额外的configuration文件来configurationApache(而不是默认安装的)吗?

我在一个基于Debian的Linux发行版中configurationApache。 我想configuration它,使我的configuration更改不妨碍Apache升级。 我想这样做,我不必编辑分发随附的任何configuration文件。

我知道我可以把我的网站的configuration放在/ etc / apache2 / sites-available目录下,然后用a2ensite启用它们。 同样,我可以使用a2enmod启用我想要的模块。

如果我将新的configuration文件写入/ etc / apache2 / conf-available / ,然后使用a2enconf启用它们,会发生什么? 具体来说,将能够覆盖其他configuration文件中指定的设置。 例如/etc/apache2/apache2.conf指定Timeout 300 。 如果我把Timeout 500放在我的configuration文件中,它是否会覆盖之前的声明? 会有任何使用这种覆盖技术的Apacheconfiguration指令不起作用吗?

如果当前的configuration使用掩码从某个目录中包含 – 是的,你可以。

通常看起来像这样:

 Include etc/apache22/Includes/*.conf 

所以你只需复制你的configuration在该目录中,并记住,按包括词法顺序的Apache包含。 如果你想覆盖已经设置的一些值,只需要命名你的文件zzzzzzzzz.conf

基于Kondybas的一个令人鼓舞的答案,我继续尝试这个。 我只碰到两个问题:

  1. Listen指令不能被“覆盖”。 就其性质而言,它是一个“添加剂”指令。 什么难倒了我的一段时间,它甚至不能指定两次相同的端口号。 以下内容将导致错误,指出端口80已被使用,并且Apache无法启动。 对我来说,解决scheme是从我自己的configuration中删除Listen指令,并仅依靠发行版提供的指令。

     Listen 80 Listen 80 
  2. 在不修改/etc/apache2/envvarsconfiguration文件的情况下,不能在基于Debian的系统上重写PidFile指令。 进程ID文件必须匹配该configuration文件和Apacheconfiguration文件,否则Apache将不会开始使用Debian的service命令。

除此之外,我已经尝试过的所有其他指令在configuration文件中工作良好,第二次指定它们。