Назад | Перейти на главную страницу

Могу ли я настроить Apache, предоставив дополнительные файлы конфигурации (не касаясь тех, которые установлены по умолчанию)?

Я настраиваю Apache под дистрибутив Linux на основе Debian. Я хотел бы настроить его таким образом, чтобы мои изменения конфигурации не мешали обновлению Apache. Я хотел бы сделать это таким образом, чтобы мне не приходилось редактировать какие-либо файлы конфигурации, поставляемые с дистрибутивом.

Я знаю, что могу поместить конфигурацию своих сайтов в / и т.д. / apache2 / сайты-доступные каталог, а затем включите их с помощью a2ensite. Точно так же я могу включить нужные мне модули с a2enmod.

Что произойдет, если я запишу новые файлы конфигурации в / и т.д. / apache2 / conf-доступный / а затем используйте a2enconf включить их? В частности, сможет ли он переопределить настройки, указанные в других файлах конфигурации. Например /etc/apache2/apache2.conf указывает Timeout 300. Если я положу Timeout 500 в моем файле конфигурации, переопределит ли он предыдущее объявление? Существуют ли какие-либо директивы конфигурации Apache, для которых использование этого метода переопределения не будет работать?

Если в текущей конфигурации используется включение из определенного каталога по маске - да, можно.

Обычно это выглядит так:

Include etc/apache22/Includes/*.conf

Поэтому вы просто копируете свою конфигурацию в этот каталог и помните, что apache include включает в себя в лексическом порядке. Если вы хотите переопределить некоторые уже установленные значения, просто назовите свой файл zzzzzzzzz.conf

Основываясь на обнадеживающем ответе Кондыбаса, я пошел дальше и поэкспериментировал с этим. Я столкнулся только с двумя проблемами:

  1. В Listen Директива не может быть "отменена". По своей природе это «аддитивная» директива. На какое-то время меня озадачило то, что его даже нельзя указать дважды для одного и того же номера порта. Следующее вызовет ошибку о том, что порт 80 уже используется и Apache не может быть запущен. Решением для меня было удалить Listen директиву из моей собственной конфигурации и полагаться только на ту, которая предоставляется дистрибутивом.

    Listen 80
    Listen 80
    
  2. В PidFile директиву нельзя переопределить в системе на основе Debian без изменения /etc/apache2/envvars файл конфигурации. Файл идентификатора процесса должен совпадать между этим файлом конфигурации и файлом конфигурации Apache, иначе Apache не начнет использовать Debian service команда.

Помимо этого, все другие директивы, которые я пробовал, нормально работают в файле конфигурации, который указывает их во второй раз.