Nginx/hasher-apt-cache
Интро.
В дополнение к статье Использование 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.