Nginx/hasher-apt-cache

Материал из ALT Linux Wiki

Интро.

В дополнение к статье Использование nginx как кэширующего прокси для APT
Краткое руководство простейшего кеширующего локального сервера, для использования с утилитами Mkimage-profiles или (и) hasher.

Исходные условия

Для решения задачи примем как необходимые следующие условия:

  • У нас уже установлен nginx. Не настраивался для других целей.
  • Мы будем использовать локальный 80 порт для обращения к nginx.
  • У нас задано имя хоста (в данном примере altnginx)
  • Настраиваем кеширующий сервер на работу с http://ftp.altlinux.org
  • Ветка: ALTLinux p10 x86_64
  • Команды вводятся от пользователя root ( su - )

Конфигурация hostname

Имя хоста в /etc/hostname (в данном примере altnginx) будет использоваться и как имя сервера nginx. Более продвинутые пользователи сами могут создать виртуальные сервера на хосте, и правильно прописать обращение к ним по имени. Мы будем обращаться просто по имени в hostname.

altnginx

Конфигурация nginx

С помощью любимого редактора создаем файл конфигурации сервера

/etc/nginx/sites-available.d/altrepo.conf:

server {
    listen       80;
    server_name altnginx;
    location /altlinux/ {
        root /var/www/;
        proxy_pass http://ftp.altlinux.org/;
        proxy_store /var/www/$request_uri;
        error_page 404 = /fetch$uri;
        expires 1y;
    }
}

Обратите внимание, в параметре: server_name altnginx;
altnginx должно соответствовать имени вашего хоста, в нашем случае это имя из /etc/hostname.

Подключаем конфигурацию

Включаем конфигурацию кэширующего сервера (выполняем в консоли):

[root /]# ln -sf /etc/nginx/sites-available.d/altrepo.conf /etc/nginx/sites-enabled.d/altrepo.conf

Не лишне будет создать самостоятельно каталоги и выставить права (выполняем в консоли):

[root /]# mkdir -p /var/www/altlinux
[root /]# chown -R _nginx:_nginx /var/www/altlinux

Можно проверить конфигурацию:

[root /]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Можно запустить наш сервер.

[root /]# systemctl restart nginx

Изменение настроек apt

Приводим к следующему виду файл /etc/apt/sources.list:

rpm [p10] http://altnginx/altlinux/pub/distributions/ALTLinux p10/branch/x86_64 classic gostcrypto
rpm [p10] http://altnginx/altlinux/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic
rpm [p10] http://altnginx/altlinux/pub/distributions/ALTLinux p10/branch/noarch classic

Необходимо закомментировать другие источники. Все пакеты будем тянуть через свой кэширующий сервер.

Для Сизифа настройки меняем соответственно.

# ftp.altlinux.org (ALT Linux, Moscow)
rpm http://altnginx/altlinux/pub/distributions/ALTLinux/Sisyphus x86_64 classic gostcrypto
rpm http://altnginx/altlinux/pub/distributions/ALTLinux/Sisyphus x86_64-i586 classic
rpm http://altnginx/altlinux/pub/distributions/ALTLinux/Sisyphus noarch classic


При этих настройках apt-get будет тянуть файлы через наш кеширующий сервер. Можно подглядеть, как будет копиться кеш в /var/www/altlinux/*/*/*.
Не забываем, что сам его (кеш) чистить nginx не будет. В данной конфигурации эта задача не ставилась.

Попробуем обновить список пакетов:

[root /]# apt-get update
Получено: 1 http://altnginx p10/branch/x86_64 release [4223B]
Получено: 2 http://altnginx p10/branch/x86_64-i586 release [1665B]                                   
Получено: 3 http://altnginx p10/branch/noarch release [2844B]
Получено 12,7kB за 0s (51,8kB/s).
Найдено http://altnginx p10/branch/x86_64/classic pkglist
Найдено http://altnginx p10/branch/x86_64/classic release
Найдено http://altnginx p10/branch/x86_64/gostcrypto pkglist
Найдено http://altnginx p10/branch/x86_64/gostcrypto release
Найдено http://altnginx p10/branch/x86_64-i586/classic pkglist
Найдено http://altnginx p10/branch/x86_64-i586/classic release
Найдено http://altnginx p10/branch/noarch/classic pkglist
Найдено http://altnginx p10/branch/noarch/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

При наличии обновлений, пакеты закеширует так же nginx. Теперь если вы будете собирать пакет в hasher или свою версию Альта в Mkimage-profiles, то ранее кешированные пакеты уже не будут качаться по несколько раз с серверов Альта. Для Mkimage-profiles требуется дополнительные настройки, все они описаны в документации на эту утилиту.

Предупреждение.

Внимание! Так как в этом случае мы изменили системные настройки APT (в файле /etc/apt/sources.list), то при остановленном сервере nginx не будет работать обновление системы. Либо вы включаете nginx в качестве системного демона, запускаемого по умолчанию:
[root /]# systemctl enable nginx

Либо у вас должен быть опыт для изменения параметров APT на лету, во время работы с hasher и Mkimage-profiles.