Apache, один из самых распространенных веб-серверов, имеет модульную архитектуру, которая позволяет пользователям расширять его функциональность путем включения или отключения определенных модулей. Эти модули могут варьироваться от усиления безопасности до оптимизации производительности и дополнительных функций. В зависимости от дистрибутива Linux, Apache предоставляет различные методы управления этими модулями.
Два основных способа управления модулями Apache - это использование команд a2enmod и a2dismod и ручное редактирование конфигурационных файлов для загрузки или выгрузки модулей. Первый способ более прост и обычно доступен в системах на базе Debian, в то время как второй обеспечивает больший контроль и является универсальным для всех установок Apache. Дистрибутивы на базе RedHat не имеют a2enmod и a2dismod, но предоставляют конфигурационный файл с директивой LoadModule для каждого установленного модуля Apache.
Шаги по включению или отключению модулей Apache с помощью a2enmod и a2dismod
Команды a2enmod (Apache 2 Enable Module) и a2dismod (Apache 2 Disable Module) - это утилиты, предоставляемые Debian и его производными, такими как Ubuntu, для упрощения процесса включения и отключения модулей Apache. Эти команды автоматически создают символические ссылки на файлы конфигурации модулей, делая процесс беспрепятственным.
Список доступных модулей.
1 | ls /etc/apache2/mods-available/ |
Пример
1 2 3 4 5 6 7 | access_compat.load dir.conf proxy_express.load actions.conf dir.load proxy_fcgi.load actions.load dump_io.load proxy_fdpass.load alias.conf echo.load proxy_ftp.conf alias.load env.load proxy_ftp.load allowmethods.load expires.load proxy_hcheck.load ... |
Список включенных модулей.
1 | ls /etc/apache2/mods-enabled/ |
Пример
1 2 3 4 5 | access_compat.load authz_user.load filter.load proxy_http.load alias.conf autoindex.conf mime.conf proxy.load alias.load autoindex.load mime.load reqtimeout.conf auth_basic.load deflate.conf mpm_event.conf reqtimeout.load ... |
Установите модуль, если он еще не установлен.
Включите модуль с помощью утилиты a2enmod.
1 | sudo a2enmod rewrite |
Отключите модуль с помощью утилиты a2enmod.
1 | sudo a2dismod status |
Перезагрузите или перезапустите службу Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
Проверьте, загружены ли модули.
1 | sudo a2query -m rewrite |
Шаги по включению или отключению модулей Apache вручную
Для систем, в которых нет утилит a2enmod и a2dismod, или для администраторов, предпочитающих практический подход, модули могут быть включены или отключены путем ручного редактирования конфигурационных файлов Apache. Этот метод включает в себя добавление или удаление директивы LoadModule для нужного модуля.
Откройте терминал.
Установите модуль, если он еще не установлен.
Проверьте наличие существующих директив LoadModule.
1 | sudo grep -nr LoadModule /etc/{httpd,apache2} |
Пример
1 2 3 4 5 | /etc/httpd/conf.modules.d/00-base.conf:6:LoadModule access_compat_module modules/mod_access_compat.so /etc/httpd/conf.modules.d/00-base.conf:7:LoadModule actions_module modules/mod_actions.so /etc/httpd/conf.modules.d/00-base.conf:8:LoadModule alias_module modules/mod_alias.so /etc/httpd/conf.modules.d/00-base.confhttps://g-soft.info/wp-admin/post-new.php#:9:LoadModule allowmethods_module modules/mod_allowmethods.so ... |
Откройте конфигурационный файл Apache, содержащий директиву LoadModule модуля, который вы хотите включить или отключить, с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/httpd/conf.modules.d/00-base.conf |
Закомментируйте директиву LoadModule, связанную с модулем, чтобы отключить модуль.
1 | #LoadModule rewrite_module modules/mod_rewrite.so |
Снимите комментарий с закомментированной директивы LoadModule, чтобы снова включить модуль.
1 | LoadModule rewrite_module modules/mod_rewrite.so |
Либо вручную добавьте директиву LoadModule для модуля, который установлен, но не имеет предварительно настроенной директивы LoadModule, как, например, в homebrew.
1 | LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "Mohd Shakir Zakaria" |
Сохраните и закройте файл конфигурации.
Перезапустите службу Apache, чтобы применить изменения.
1 | sudo systemctl restart httpd |
Проверьте, загружен или выгружен модуль.
1 | httpd -M | grep rewrite |