Установка и настройка mod_deflate на Ubuntu Server

Mod_deflate – это модуль Apache, который сжимает вывод веб-сервера перед отправкой клиенту. Таким образом данные уменьшаются в объёме, благодаря чему клиент способен быстрее их обработать. Это очень важно для клиентов с низкой пропускной способностью; кроме того, поисковые системы учитывают это при оценке работы сайта и помещении его в рейтинг.

Это руководство написано для Ubuntu Server 16.04. Установка и настройка модулей, как правило, одинакова для всех операционных систем, но расположение конфигурационных файлов в разных системах может отличаться.

Примечание: Аналогичное руководство для CentOS 7 можно найти по этой ссылке.

Для выполнения руководства необходимо предварительно установить Apache, чтобы узнать, как установить Apache на Ubuntu Server, перейдите по ссылке.

Установка mod_deflate

В Ubuntu Server на стандартной установке Apache модуль mod_deflate установлен и включён по умолчанию. Чтобы убедиться в этом, запустите apachectl (интерфейс управления сервером Apache), отфильтровав вывод при помощи grep по deflate:

apachectl -t -D DUMP_MODULES |grep deflate

Примечание: В случае ошибки используйте полный путь к команде:/usr/sbin/apachectl.

На экране должна появиться строка deflate_module (shared). Если она не появилась, значит, модуль по какой-то причине не установлен. Чтоб устранить эту неполадку:

Убедитесь, что модуль установлен. Файл модуля является частью пакета apache2, который был установлен ранее (раздел Требования). По умолчанию он находится в /usr/lib/apache2/modules/mod_deflate.so. Кроме того, веб-сервер должен иметь возможность открывать файл; для этого установите права на файл в формате 644.
Убедитесь в том, что модуль загружен. Откройте конфигурационный файл модулей Apache

sudo nano /etc/apache2/mods-enabled/deflate.load

и убедитесь, что он содержит следующую строку:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Примечание: Не забудьте перезапустить Apache после внесения любых изменений в настройки.

sudo apachectl restart.

Настройка mod_deflate

Для начала необходимо указать, какой тип файлов нужно сжимать. Во-первых, путем сжатия можно значительно уменьшить в размере текстовые форматы, и поэтому имеет смысл применить его к файлам HTML, CSS или JavaScript. Во-вторых, многие мультимедийные форматы (например, Flash) и изображения уже сжаты, и дополнительное сжатие будет бессмысленно.

Откроем конфигурационный файл модуля:

sudo nano /etc/apache2/mods-enabled/deflate.conf

По умолчанию в нем должно быть что то наподобе этого:

 
 # these are known to be safe with MSIE 6
 AddOutputFilterByType DEFLATE text/html text/plain text/xml
 # everything else may cause problems with MSIE 6
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/xml

Этот код будет сжимать файлы с расширениями .html, .txt, .xml, .css, .js. Чтобы узнать, как соотносятся расширения и MIME-типы, обратитесь к файлу /etc/mime.types. При необходимости можно добавить в настройки другие расширения текстовых файлов.

Примечание: В Ubuntu настройки Apache размещены в нескольких файлах, некоторые из них не включены. К примеру, настройки модулей хранятся в каталоге /etc/apache2/mods-available/ (файл /etc/apache2/mods-available/deflate.conf). Конфигурационный файл модулей включён только при наличии символьной ссылки на него в каталоге /etc/apache2/mods-enabled/ (к примеру, /etc/apache2/mods-enabled/deflate.conf).

Модуль mod_deflate имеет несколько важных параметров настроек:

DeflateCompressionLevel задаёт уровень сжатия. По умолчанию установлен наивысший уровень – 9. Наиболее низкому уровню соответствует 1. Чем выше уровень сжатия, тем меньше будет вывод, и тем выше уровень нагрузки CPU.
DeflateMemLevel задаёт используемый объём памяти библиотеки сжатия zlib. По умолчанию задано 9 (опять же, наивысший уровень). Чтобы рассчитать допустимый объём, умножьте значение DeflateMemLevel на 16К.
DeflateWindowSize устанавливает размер окна сжатия. По умолчанию задана максимальная величина 15. Чем больше это значение, тем выше уровень сжатия (опять же, за счёт ресурсов сервера).

В большинстве случаев можно использовать стандартные настройки. Однако если производительность сервера значительно ухудшилась после включения mod_deflate, следует установить более низкие значения в конфигурационном файле /etc/apache2/mods-enabled/deflate.conf, например:

DeflateCompressionLevel 1

Это снизит уровень сжатия, в результате чего объём файлов увеличится, однако так mod_deflate будет использовать меньше CPU. Перезапустите Apache, чтоб обновить настройки.

Тестирование mod_deflate

Существует много способов протестировать работу mod_deflate; проще всего использовать неинтерактивный загрузчик wget. Если на данный момент wget не установлен на Ubuntu Server, установите его с помощью команды:

sudo apt-get install wget

Для проверки работы модуля понадоббится текстовый файл в несколько сотен килобайт как минимум. Если на сервере нет такого файла, загрузите JQuery (популярную библиотеку JavaScript) и загрузите её на сайт. Если же вы не знаете, куда поместить файл, подгрузите его в стандартный каталог document root (для Apache это /var/www/html/). В результате загруженный файл будет доступен в root-каталоге стандартного сайта.

Примечание: Для корректной работы mod_deflate клиент (обычно браузер) должен поддерживать сжатие. Если клиент не поддерживает сжатие файлов, они будут отправлены в исходном виде.

Добавив необходимый файл на сайт, загрузите его при помощи wget. Тестирование можно выполнить как на локальной машине, так и на сервере.

wget --header="Accept-Encoding: gzip" http:///jquery-1.11.3.js

Эта команда загрузит jquery-1.11.3.js file с сервера Apache. Чтобы проверить сжатие, в команде используется аргумент Accept-Encoding: gzip.

Загруженный файл jquery-1.11.3.js будет иметь объём 83KB. На самом деле, этот не совсем оригинальный файл JavaScript должен быть дополнительно извлечен клиентом, в результате чего на стороне клиента также возникает некоторый расход ресурсов. Однако размер передаваемого по сети файла будет 83Кб, а это более чем в три раза меньше, чем исходный объём (278K).

Чтобы подтвердить этот расчет, проверьте размер загруженного файла с помощью следующей команды:

ls -lah jquery-1.11.3.js
 -rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

Затем сравните полученный результат с выводом этой команды ls:

ls -lah /var/www/html/jquery-1.11.3.js
 -rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js

Заключение

Как видите, mod_deflate значительно ускоряет сайт. Чтобы продолжить оптимизацию сайта, читайте руководство «Кэширование контента при помощи модулей Apache».

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка и настройка mod_deflate на Ubuntu Server
5 (100%) 2 votes

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Меню

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Рейтинг@Mail.ru