我在一个基于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的一个令人鼓舞的答案,我继续尝试这个。 我只碰到两个问题:
Listen
指令不能被“覆盖”。 就其性质而言,它是一个“添加剂”指令。 什么难倒了我的一段时间,它甚至不能指定两次相同的端口号。 以下内容将导致错误,指出端口80已被使用,并且Apache无法启动。 对我来说,解决scheme是从我自己的configuration中删除Listen
指令,并仅依靠发行版提供的指令。
Listen 80 Listen 80
在不修改/etc/apache2/envvars
configuration文件的情况下,不能在基于Debian的系统上重写PidFile
指令。 进程ID文件必须匹配该configuration文件和Apacheconfiguration文件,否则Apache将不会开始使用Debian的service
命令。
除此之外,我已经尝试过的所有其他指令在configuration文件中工作良好,第二次指定它们。