Перейти к содержанию

Настройка APT-репозитория

APT-репозиторий GetPageSpeed Extras содержит пакеты nginx-module-* для поддерживаемых выпусков Debian и Ubuntu.

Бесплатная пробная версия на 30 дней

Important

Устанавливайте стандартный NGINX и подходящие модули с помощью apt-get install без учетной записи или подписки. Настройка репозитория и apt-get update также являются публичными.

Модули с контролем лицензии имеют 30-дневный льготный период, начинающийся с первой анонимной проверки лицензии на сервере. По истечении льготного периода поддерживаемые модули продолжают обслуживать страницы, но добавляют небольшое уведомление GetPageSpeed к HTML-ответам. Активная подписка на репозиторий GetPageSpeed, покрывающая публичный IP сервера, убирает это уведомление.

Pro-модули и NGINX-MOD требуют уровня Pro или выше с самого начала. Пакеты EDGE и Plesk сохраняют свои отдельные требования к плану. Та же бесплатная пробная установка применяется к стандартным RPM-пакетам; см. что устанавливается бесплатно.

Один .deb-пакет разворачивает связку ключей, файл источников deb822 со всеми тремя каналами, APT pin для nginx и вспомогательную утилиту getpagespeed-extras-channel для переключения между ними. Проверьте его перед установкой, если предпочитаете.

curl -fsSL https://extras.getpagespeed.com/release-latest.deb \
  -o /tmp/getpagespeed-extras-release.deb
sudo apt-get install -y /tmp/getpagespeed-extras-release.deb

Пакет создаёт /etc/apt/sources.list.d/getpagespeed-extras.sources с тремя стефами deb822: stable (Enabled: yes), <codename>-mainline (Enabled: no) и <codename>-nginx-mod (Enabled: no). Stable всегда включён; переключайте два других с помощью утилиты:

sudo getpagespeed-extras-channel stable      # only stable
sudo getpagespeed-extras-channel mainline    # stable + mainline
sudo getpagespeed-extras-channel nginx-mod   # stable + nginx-mod (+ APT pin)

Выберите нужный канал, затем обновите и установите:

sudo apt-get update
sudo apt-get install nginx-module-brotli

Шаг обновления загружает публичные метаданные репозитория. Пример устанавливает nginx-module-brotli без подписки, чтобы вы могли сразу его попробовать. См. требования к пробному периоду и плану выше, прежде чем выбирать другие модули или переключаться на NGINX-MOD.

Tip

getpagespeed-extras-channel nginx-mod также устанавливает рекомендуемый APT pin в /etc/apt/preferences.d/getpagespeed-nginx.pref. Если вы используете stable или mainline и на системе есть другой источник nginx (например, PPA ondrej или nginx.org), см. раздел Pin GetPageSpeed nginx packages ниже.

Справочник по каналам

Канал Включённые наборы Когда использовать
stable <codename> Продакшн-версия NGINX stable + динамические модули.
mainline <codename> + <codename>-mainline Последняя ветка NGINX mainline (и совместимые модули).
nginx-mod <codename> + <codename>-nginx-mod Stable nginx с патчами GetPageSpeed (upstream_check, upstream_api, расширенные единицы limit_req_rate).

nginx-mod ABI-совместим с пакетом stable nginx, поэтому любой пакет nginx-module-* из соответствующего stable-набора загружается с ним без пересборки. Установка nginx-mod заменяет любой существующий пакет nginx (он объявляет Conflicts: nginx). Поддерживаемые кодовые имена на момент запуска: jammy, noble, resolute, bookworm.

GetPageSpeed EDGE

EDGE — отдельный закрытый продукт Ultra, который сосуществует с nginx. Его пакеты требуют аутентифицированного доступа к репозиторию, а установленный сервер также требует действительный токен Ultra в /etc/edge/license.jwt.

После установки связки ключей репозитория с помощью пакета быстрой установки выше включите соответствующий набор EDGE и установите:

distro=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
codename=$(lsb_release -cs)
echo "deb [signed-by=/etc/apt/keyrings/getpagespeed.gpg] https://extras.getpagespeed.com/${distro} ${codename}-edge main" \
  | sudo tee /etc/apt/sources.list.d/getpagespeed-edge.list
sudo apt-get update
sudo apt-get install edge

Пакеты EDGE DEB доступны для Ubuntu jammy, noble и resolute, а также Debian bookworm, на amd64 и arm64.

Миграция из других репозиториев nginx

Если у вас уже установлен nginx из ondrej PPA, nginx.org или штатных пакетов Debian/Ubuntu:

  1. Выполните Быструю установку, описанную выше. Выберите нужный канал (mainline для последней версии, nginx-mod для пропатченной стабильной, stable для обычной стабильной).
  2. Пакет релиза (11-78 и новее) устанавливает APT pin для каждого канала, поэтому nginx от GetPageSpeed получает приоритет над другим источником. См. Закрепление пакетов nginx от GetPageSpeed.
  3. Обновите и замените nginx одной командой:

    sudo apt-get update
    sudo apt-get install nginx nginx-module-geoip2
    

    APT автоматически заменит конфликтующие пакеты (nginx-core, nginx-common, nginx-full, nginx-extras, nginx-light) на переходные пакеты от GetPageSpeed, которые зависят от унифицированного пакета nginx.

  4. Проверьте активный источник:

    apt-cache policy nginx
    

    В выводе должен быть указан extras.getpagespeed.com с приоритетом 1001.


Ручная настройка (для опытных пользователей)

Если вы предпочитаете настроить связку ключей и список источников самостоятельно — например, чтобы проверить каждый шаг, разместить файл источника нестандартного вида или избежать запуска стороннего .deb — следуйте приведённой ниже ручной инструкции. Она приводит к тому же конечному результату, только без вспомогательной утилиты getpagespeed-extras-channel.

Установка связки ключей APT

Скачайте связку ключей репозитория и разместите её в /etc/apt/keyrings:

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://extras.getpagespeed.com/deb-archive-keyring.gpg \
  | sudo tee /etc/apt/keyrings/getpagespeed.gpg >/dev/null

Добавление источника APT

Вы можете либо воспользоваться интерактивным помощником ниже, либо скопировать один из статических примеров.

Интерактивный генератор

Выберите дистрибутив, кодовое имя и ветку NGINX, чтобы сгенерировать как запись в sources.list, так и готовую к выполнению команду оболочки:

sources.list contents:

Shell command to create file:

Альтернатива: автоматическое определение дистрибутива и кодового имени

Если вы предпочитаете одну универсальную команду, которая работает в любой поддерживаемой системе Debian или Ubuntu, можно использовать lsb_release для автоматического определения дистрибутива и кодового имени.

Для ветки stable:

distro=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
codename=$(lsb_release -cs)
echo "deb [signed-by=/etc/apt/keyrings/getpagespeed.gpg] https://extras.getpagespeed.com/${distro} ${codename} main" \
  | sudo tee /etc/apt/sources.list.d/getpagespeed-extras.list

Для ветки mainline:

echo "deb [signed-by=/etc/apt/keyrings/getpagespeed.gpg] https://extras.getpagespeed.com/${distro} ${codename}-mainline main" \
  | sudo tee -a /etc/apt/sources.list.d/getpagespeed-extras.list

Для ветки nginx-mod включите как набор nginx-mod, так и соответствующий набор stable, чтобы динамические пакеты nginx-module-* оставались устанавливаемыми вместе с пропатченным nginx:

sudo tee /etc/apt/sources.list.d/getpagespeed-extras.list <<EOF
deb [signed-by=/etc/apt/keyrings/getpagespeed.gpg] https://extras.getpagespeed.com/${distro} ${codename}-nginx-mod main
deb [signed-by=/etc/apt/keyrings/getpagespeed.gpg] https://extras.getpagespeed.com/${distro} ${codename} main
EOF

Закрепление пакетов nginx от GetPageSpeed

Пакет релиза (11-78 и новее) устанавливает этот файл за вас. При ручной настройке, а также если у вас есть (или может позже появиться) другой источник nginx, например PPA ondrej/nginx или пакеты nginx.org, создайте его самостоятельно, чтобы пакеты GetPageSpeed всегда имели приоритет:

sudo tee /etc/apt/preferences.d/getpagespeed-nginx.pref > /dev/null <<'EOF'
Package: nginx nginx-mod nginx-common nginx-core nginx-full nginx-extras nginx-light nginx-module-* libnginx-mod-*
Pin: origin extras.getpagespeed.com
Pin-Priority: 1001
EOF

По умолчанию APT присваивает каждому репозиторию приоритет 500; при равных приоритетах побеждает более высокая версия. Приоритет 1001 заставляет APT отдавать предпочтение этим пакетам, даже если для этого потребуется понизить версию или заменить версии из других репозиториев. Это важно, поскольку модули GetPageSpeed зависят от точного ABI пакета nginx от GetPageSpeed (nginx-r<version>). Закрепление охватывает только пакеты nginx: все остальные пакеты из этого репозитория остаются с приоритетом 500 и конкурируют с вашим дистрибутивом по версии, а пакет, удерживаемый с помощью apt-mark hold, остаётся удерживаемым.

Tip

Этот шаг обязателен для ручной настройки, если в системе настроен любой другой репозиторий nginx. Проверьте с помощью apt-cache policy nginx. Удаление файла означает отказ от закрепления; при обновлении пакетов он не воссоздаётся, а getpagespeed-extras-channel — воссоздаёт.

После добавления источника и закрепления выполните sudo apt-get update, затем sudo apt-get install nginx-module-<name>.

Автоматические обновления

По умолчанию unattended-upgrades устанавливает обновления только из архивов самого дистрибутива. Он ежедневно обновляет индекс GetPageSpeed, но оставляет nginx и его модули на изначально установленной версии, включая выпуски с исправлениями безопасности. Чтобы он устанавливал и обновления GetPageSpeed, добавьте drop-in файл:

sudo tee /etc/apt/apt.conf.d/52unattended-upgrades-getpagespeed > /dev/null <<'EOF'
Unattended-Upgrade::Origins-Pattern {
    "origin=GetPageSpeed";
};
EOF

Шаблон охватывает все каналы GetPageSpeed: stable, mainline, NGINX-MOD и EDGE. nginx и его модули обновляются вместе одной транзакцией, а пакет заменяет работающий бинарный файл nginx без разрыва соединений и перезапускает сервис, только если это не удалось. Проверьте, что источник разрешён и что обновит следующий запуск:

sudo unattended-upgrade --dry-run --debug 2>&1 | grep -E 'Allowed origins|will be upgraded'

Если вы обновляете вручную, используйте sudo apt update && sudo apt upgrade. Избегайте apt-get upgrade: он никогда не устанавливает новые зависимости и поэтому удерживает nginx, когда выпуск добавляет новую.

Проверка пакета релиза

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

curl -fsSLO https://extras.getpagespeed.com/release-latest.deb
dpkg-deb --info release-latest.deb       # metadata and dependencies
dpkg-deb --contents release-latest.deb   # every file it installs
dpkg-deb --control release-latest.deb ctl
cat ctl/postinst ctl/postrm              # maintainer scripts

Файл sources доверяет связке ключей через Signed-By: только для этого репозитория, а не для всей системы. Хук установки в /etc/apt/apt.conf.d/99-getpagespeed-extras.conf выполняется перед任何 загрузкой: когда транзакция включает пакеты из этого репозитория, он отправляет их имена на www.getpagespeed.com и останавливается со ссылкой на подписку, если сервер не покрыт. Сравните связку ключей с полными отпечатками на странице ключей подписи GetPageSpeed:

gpg --show-keys --with-fingerprint /etc/apt/keyrings/deb-archive-keyring.gpg