APT в ALT Linux/NginxAsCache: различия между версиями
Нет описания правки |
(Слил изменения) |
||
Строка 2: | Строка 2: | ||
{{Викифицировать}} | {{Викифицировать}} | ||
== Использование nginx как кэширующего прокси для APT == | == Использование nginx как кэширующего прокси для APT<ref>[http://gns-ua.livejournal.com/114453.html этой публикации gns]</ref> == | ||
При использовании дистрибутивов ALT Linux или Sisyphus часто требуется локальное частичное зеркало APT-источников: для раздачи пакетов группе машин в локальной сети, для разработки и других потребностией. Локальное - для хорошей скорости доступа, частичное - для экономии времени и трафика, которые уходят на поддержание [[Apt/Mirror|полного зеркала]]. | При использовании дистрибутивов ALT Linux или Sisyphus часто требуется локальное частичное зеркало APT-источников: для раздачи пакетов группе машин в локальной сети, для разработки и других потребностией. Локальное - для хорошей скорости доступа, частичное - для экономии времени и трафика, которые уходят на поддержание [[Apt/Mirror|полного зеркала]]. | ||
Строка 13: | Строка 13: | ||
'''nginx.conf''': | '''nginx.conf''': | ||
< | http { | ||
types_hash_bucket_size 64; # Для nginx < 0.5.35-alt1.1 | |||
location /altlinux/ { | |||
} | root /var/www/; | ||
error_page 404 = /fetch$uri; | |||
location /fetch/altlinux/alt/ { | } | ||
location /fetch/altlinux/alt/ { | |||
internal; | |||
} | proxy_pass http://ftp.altlinux.org/; | ||
proxy_store /var/www/$request_uri; | |||
location /fetch/altlinux/kiev/ { | } | ||
location /fetch/altlinux/kiev/ { | |||
internal; | |||
} | proxy_pass http://ftp.linux.kiev.ua/; | ||
proxy_store /var/www/$request_uri; | |||
} | |||
'''/etc/apt/sources.list''': | '''/etc/apt/sources.list''': | ||
rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/updates/4.0/ i586 updates | |||
rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ i586 classic | rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ i586 classic | ||
rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ noarch classic | rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ noarch classic | ||
И сделать | И сделать | ||
mkdir /var/www/altlinux | |||
chown _nginx:_nginx /var/www/altlinux | chown _nginx:_nginx /var/www/altlinux | ||
=== Более умная конфигурация nginx === | === Более умная конфигурация nginx === | ||
Строка 44: | Строка 46: | ||
'''nginx.conf''': | '''nginx.conf''': | ||
location /altlinux/ { | |||
root /var/www/; | |||
error_page 404 = /fetch$uri; | |||
error_page 403 = /fetch$uri; | |||
} | } | ||
location /fetch/altlinux/ { | |||
location /fetch/altlinux/ { | internal; | ||
proxy_pass http://ftp.altlinux.org/pub/distributions/ALTLinux/; | |||
proxy_store /var/www/$request_uri; | |||
} | |||
location /fetch/altlinux/ { | |||
internal; | |||
} | proxy_pass http://ftp.linux.kiev.ua/pub/Linux/ALT/; | ||
proxy_store /var/www/$request_uri; | |||
} | |||
'''/etc/apt/sources.list''': | '''/etc/apt/sources.list''': | ||
rpm http://**NGINX HOST**/altlinux/4.0/branch/ i586 classic | |||
rpm http://**NGINX HOST**/altlinux/4.0/branch/ noarch classic | rpm http://**NGINX HOST**/altlinux/4.0/branch/ noarch classic | ||
=== Известные проблемы === | === Известные проблемы === | ||
Строка 73: | Строка 77: | ||
Эта команда удалит из локального репозитория все файлы, которых нет на сервере, и заодно обновит индексы. | Эта команда удалит из локального репозитория все файлы, которых нет на сервере, и заодно обновит индексы. | ||
=== | === Ссылки === | ||
<references/> | |||
Версия от 09:09, 8 ноября 2008
Использование nginx как кэширующего прокси для APT[1]
При использовании дистрибутивов ALT Linux или Sisyphus часто требуется локальное частичное зеркало APT-источников: для раздачи пакетов группе машин в локальной сети, для разработки и других потребностией. Локальное - для хорошей скорости доступа, частичное - для экономии времени и трафика, которые уходят на поддержание полного зеркала.
Очевидное решение: вытаскивать из /var/cache/apt/archives или /hasher/aptbox пакеты, запускать genbasedir и подключать результат как локальный репозитарий. Очевидный недостаток: теряется информация о конкретном источнике пакета. Если подключен и бранч, и сизиф, то полученный репозитарий нельзя использовать на другой машине, которую желательно оставить на бранче.
nginx >= 0.5.31 позволяет организовать локальный частичный миррор, лишённый этого недостатка.
Конфигурация nginx
nginx.conf:
http { types_hash_bucket_size 64; # Для nginx < 0.5.35-alt1.1 location /altlinux/ { root /var/www/; error_page 404 = /fetch$uri; } location /fetch/altlinux/alt/ { internal; proxy_pass http://ftp.altlinux.org/; proxy_store /var/www/$request_uri; } location /fetch/altlinux/kiev/ { internal; proxy_pass http://ftp.linux.kiev.ua/; proxy_store /var/www/$request_uri; }
/etc/apt/sources.list:
rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/updates/4.0/ i586 updates rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ i586 classic rpm http://**NGINX HOST**/altlinux/alt/pub/Linux/ALT/4.0/branch/ noarch classic
И сделать
mkdir /var/www/altlinux chown _nginx:_nginx /var/www/altlinux
Более умная конфигурация nginx
Чтобы пользователи APT не заботились о том, на какое зеркало настроен nginx, его нужно слегка перенастроить:
nginx.conf:
location /altlinux/ { root /var/www/; error_page 404 = /fetch$uri; error_page 403 = /fetch$uri; } location /fetch/altlinux/ { internal; proxy_pass http://ftp.altlinux.org/pub/distributions/ALTLinux/; proxy_store /var/www/$request_uri; } location /fetch/altlinux/ { internal; proxy_pass http://ftp.linux.kiev.ua/pub/Linux/ALT/; proxy_store /var/www/$request_uri; }
/etc/apt/sources.list:
rpm http://**NGINX HOST**/altlinux/4.0/branch/ i586 classic rpm http://**NGINX HOST**/altlinux/4.0/branch/ noarch classic
Известные проблемы
nginx - это все-таки не настоящий кэширующий прокси, и обновлять сохраненные файлы он не намерен независимо от Last-Modified. Сами пакеты меняться не могут, поэтому это составляет проблему только для индексов APT, так что необходимо периодически делать
find /var/www/altlinux/ -type d -name base -exec rm -rf '{}' \;
Если пакеты на сервере обновляются, в нашем кэше будут накапливаться старые версии. Почистить можно так:
rsync -r --delete-before --existing rsync://ftp.altlinux.org/ALTLinux/ /var/www/altlinux/
Эта команда удалит из локального репозитория все файлы, которых нет на сервере, и заодно обновит индексы.