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

Узнайте, можно ли отключить модуль Apache при использовании веб-сайта

Я могу увидеть список основных и других модулей, загруженных apache, используя следующую команду:

$ apache2ctl -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)

В целях оптимизации производительности сервера (экономьте память на каждом Apache по сути), я хотел бы отключить неиспользуемые модули. В Apache документация предоставляет информацию об этих модулях на следующая страница.

В большинстве случаев информации, предоставленной для каждого модуля, достаточно, чтобы определить, следует ли мне отключить модуль или нет. Например, я знаю, что не использую LDAP аутентификация, чтобы я мог безопасно отключить authnz_ldap_module.

Однако для некоторых модулей это немного менее очевидно. Например, mime_magic модуль используется как «вторая линия защиты» для случаев, когда mod_mime не может разрешиться, что не может быть определено теоретически, поскольку это зависит от того, какие файлы будут обслуживаться Apache.

В: Есть ли способ записать в файл список модулей, которые Apache эффективно используется для обработки запроса?

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

Я не верю, что есть универсальное решение, но есть еще варианты. Некоторые модули (например, mod_rewrite) имеют свои собственные средства ведения журнала, но вам придется прочитать документацию по каждому модулю, чтобы выяснить это. Любые модули, перечисленные как static скомпилированы и не могут быть отключены, если вы не перекомпилируете Apache. В остальном вы можете попробовать три вещи: поиск префиксов директив, включение ведения журнала отладки или выборочное отключение модуля за модулем и перезапуск.

Для большинства модулей директивы имеют общий префикс. Для модулей аутентификации HTTP: basic и digest, вы можете определить, используете ли вы их, отфильтровав файлы конфигурации с помощью grep. Если вы делаете виртуальный хостинг, вы, вероятно, можете сделать следующее:

cd /etc/apache2/sites-enabled
grep Auth *

Если вы видите что-нибудь вроде AuthType basic или AuthType digest, то вам понадобится один или оба этих модуля. В противном случае их можно безопасно отключить. Аналогично для других модулей: mime_magic доступен только в том случае, если MimeMagicFile директива где-то выдается.

Если после этого есть модули, в которых вы все еще не уверены, вы можете попробовать включить LogLevel debug и проверка журналов. Если вы видите какие-то выходные данные модуля, вы можете сказать, что модуль уже используется. Ты даже можешь установить отладку LogLevel для определенных модулей. Это немного отличается от того, о чем вы спрашивали, поскольку если вы не видите никаких выходных данных, это не обязательно означает, что модуль не используется. (Возможно, он просто не выводит отладочную информацию.)

Наконец, во многих случаях вы можете попробовать отключить модуль и запустить apache2ctl configtest. Если директива не распознается из-за того, что модуль не загружается, это приведет к ошибке.