Сборка Nginx с интеграцией модуля ngx_pagespeed на сервере под управлением Ubuntu

ngx_pagespeed — это модуль с открытым исходным кодом для Nginx, который автоматически внедряет лучшие практики для повышения скорости загрузки сайтов. В данном руководстве мы рассмотрим процесс компиляции Nginx с подключением модуля ngx_pagespeed на сервере Ubuntu LTS.

Создание резервной копии конфигурационных файлов Nginx

После компиляции и установки Nginx ваши первоначальные конфигурационные файлы будут заменены. Для создания резервной копии основного конфигурационного файла и файлов серверных блоков в вашем домашнем каталоге воспользуйтесь следующей командой. Символ тильда (~) представляет собой ваш основной каталог.

cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~

Подключение официального репозитория Nginx.

В данном руководстве будет представлено, как собрать последнюю стабильную версию Nginx. Мы добавим официальный репозиторий Nginx, как указано ниже.

Сначала необходимо загрузить ключ GPG для Nginx и добавить его в систему вашего сервера на базе Ubuntu.

wget http://nginx. org/keys/nginx_signing. key sudo apt-key add nginx_signing. key

После этого сформируйте файл с перечнем источников для Nginx.

sudo nano /etc/apt/sources. list. d/nginx. list

Включите следующие две строки в данный файл. Строка deb-src дает возможность загружать исходные пакеты Nginx с использованием команды apt source.

deb http://nginx. org/packages/mainline/ubuntu/ focal nginx deb-src http://nginx. org/packages/mainline/ubuntu/ focal nginx

Если вы работаете с Ubuntu 22.04, замените focal на jammy.

Используйте сочетание Ctrl+O для сохранения документа. Для закрытия файла нажмите Ctrl+X. После этого обновите индекс локальных пакетов.

Читайте также:  Разработчики kwin и x.org прокомментировали mir от canonical

sudo apt update

Теперь официальный репозиторий Nginx интегрирован в сервер Ubuntu.

Загрузка первоначального пакета Nginx

В домашней директории мы организуем каталог для Nginx, где будут храниться его исходные файлы, после чего переместимся в созданный каталог.

mkdir ~/nginx && перейти в директорию~/nginx

Установите пакет dpkg-dev и скачайте исходный пакет Nginx, воспользовавшись следующей командой:

sudo apt install dpkg-dev sudo apt source nginx

Пожалуйста, убедитесь в правильности загруженных файлов.

ls ~/nginx/

nginx-1.23.2 nginx_1.23.2-1~focal. dsc nginx версии 1.23.2-1~focal. debian. tar. xz nginx_1.23.2.orig. tar.gz

Скачивание начального пакета ngx_pagespeed

Для сборки Nginx с модулем ngx_pagespeed потребуется исходный пакет ngx_pagespeed. Посетите страницу загрузки ngx_pagespeed на GitHub и скачайте последнюю бета-версию (на данный момент это v1.13.35.2-beta) в ваш домашний каталог. Учтите, что номер версии может измениться.

cd ~скачать архив с помощью команды wget: wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.13.35.2-beta

sudo apt-get install unzip unzip v1.13.35.2-beta

Переместитесь в только что созданную папку:

cd incubator-pagespeed-ngx-1.13.35.2-beta/

Также необходимо загрузить библиотеку PSOL (PageSpeed Optimization Library) и извлечь её содержимое. Версия библиотеки должна совпадать с версией PageSpeed.

wget https://dl. google.com/dl/page-speed/psol/1.13.35.2-rx64.tar.gz распакуйте с помощью команды tar xvf1.13.35.2-x64.tar.gz

Это приведет к образованию каталога psol внутри другого каталога.~/инкубатор-страницы-скорости-ngx-1.13.35.2-бета, и именно в этом месте ему суждено находиться.

Внедрение модуля ngx_pagespeed в конфигурацию компиляции Nginx.

Измените файл с правилами компиляции для Nginx.

sudo nano ~/nginx/nginx-1.23.2/debian/rules

В завершение раздела COMMON_CONFIGURE_ARGS вставьте следующую строку. Подмените username на своё реальное имя пользователя. Данная строка указывает путь к модулю ngx_pagespeed.

--add-module=/home/username/ngx_pagespeed-1.13.35.2-beta

Данный учебник скачивает страницу исходного кода ngx_pagespeed в директорию пользователя. Если вы работаете под учетной записью root, замените /home/username на /root, так как для пользователя root его домашний каталог — это /root.

Читайте также:  Как улучшить производительность вашего Linux дистрибутива

Обратите внимание, что в строку —with-ld-opt необходимо добавить обратный слеш, как показано на скриншоте ниже. В противном случае строка —add-module, которую вы указали, будет проигнорирована во время компиляции Nginx.

Установка ngx_pagespeed на Ubuntu 16.04.

Теперь сохраните изменения и закройте документ.

Приступите к компиляции.

Убедитесь, что вы находитесь в папке с исходниками Nginx.

cd ~/nginx/nginx-1.23.2/

Убедитесь, что вы установили все требуемые зависимости для компиляции нашего deb-пакета Nginx.

sudo apt build-dep nginx

Теперь примените следующую команду для создания пакета deb.

sudo dpkg-buildpackage - b

Приготовьте чашку кофе и подождите несколько минут. На одном процессоре KVM VPS сборка заняла примерно 10 минут. После завершения, в каталоге~В каталоге /nginx/ будет находиться 7 файлов с расширением. deb. Нам необходимо установить пакет nginx_1.11.1-1.~xenial_amd64.deb или nginx версии 1.11.1-1~xenial_i386.deb следует выбирать в зависимости от архитектуры вашей операционной системы. Остальные пакеты представляют собой динамический модуль Nginx и пакет для отладки. Установить их также возможно, если это необходимо.

Если вы уже устанавливали Nginx, сейчас подходящий момент для удаления устаревшей версии и установки актуальной.

sudo apt remove nginx nginx-common nginx-full cd ~/nginx sudo dpkg - i nginx_1.23.2-1~focal_amd64.deb

sudo dpkg - i nginx_1.23.2-1~focal_i386.deb

Теперь приступим к запуску Nginx.

sudo systemctl start nginx

Если вам появится данное сообщение об ошибке.

Не удалось запустить nginx.service: Единица nginx.service замаскирована.

Тогда отключите маскировку Nginx и снова запустите команду.

sudo systemctl unmask nginx

Имейте в виду, что процесс Nginx может функционировать под учетной записью пользователя nginx или www-data. Это можно изменить, изменив первую строку в файле /etc/nginx/nginx.conf.Убедитесь, что Nginx работает под тем же пользователем, что и PHP-FPM.

Читайте также:  Два метода установки TeamViewer на Ubuntu 18.04 LTS Bionic Beaver

Теперь убедитесь в корректности аргументов конфигурации Nginx.

sudo nginx - V

Если внизу страницы вы наблюдаете указанную строку, это означает, что модуль ngx_pagespeed был успешно интегрирован в Nginx.

--add-module=/home/username/ngx_pagespeed-1.13.35.2-beta

Активируйте модуль ngx_pagespeed.

<

Сохраните изменения в файле конфигурации вашего серверного блока и закройте его. После этого выполните перезагрузку Nginx.

sudo systemctl reload nginx

  • Убедитесь, что PageSpeed функционирует корректно.
  • Зайдите на ваш сайт и обновите страницу несколько раз. Затем откройте исходный код страницы. Нажмите Ctrl+F и введите pagespeed. Вы заметите, что множество ресурсов вашего сайта прошло обработку через pagespeed. Некоторые файлы CSS и JavaScript были объединены в один. Если вы используете браузер Google Chrome, то увидите, что изображения на вашем сайте конвертированы в формат webp, что позволяет существенно сократить их размер.

    Вы можете проверить работу ngx_pagespeed, сопоставив результаты тестов на скорость вашего сайта.

    На вашем сервере можно использовать следующую команду:

    curl - I - p http://your-domain.com| grep X-Page-Speed

    Вы сможете увидеть номер версии X-Page-Speed.

    X-Page-Speed: 1.13.35.2-7423

  • Обеспечьте защиту Nginx от автоматического обновления.
  • Если в репозитории есть новая версия Nginx, команда apt-get upgrade автоматически обновит Nginx, что приведёт к удалению вашего модуля ngx_pagespeed. Чтобы избежать этого обновления, используйте следующую команду:

    sudo apt-mark hold nginx

    Для демонстрации удерживаемых пакетов:

    apt-mark showhold

    Некоторые директивы pagespeed, которые можно включить в конфигурацию серверного блока Nginx, отсутствуют в CoreFilters.

    pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters insert_dns_prefetch;

    фильтры ngx_pagespeed

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

    Чтобы узнать более подробную информацию о каждом из фильтров, посетите страницу фильтров Google PageSpeed.

    Мы всегда рады вашим комментариям, вопросам и предложениям. Если данный пост оказался для вас полезным, не стесняйтесь поделиться им с друзьями в соцсетях! Подписывайтесь на нас, чтобы не пропустить новые уроки по Linux.