Linux, apt-mirror + nginx. Локальный репозиторий

Причины использовать локальный репозиторий

Локальный репозиторий может уменьшить нагрузку на сеть. Так как обновления скачиваются всего один раз во время синхронизации локального репозитория с официальным. А остальные сервера обновляются по локальной сети.

Также локальное зеркало обеспечит идентичность пакетов на всех серверах. Например, мы можем обновить тестовый сервер, в течении нескольких дней проверить его работу. И если все нормально, следующем шагом можем обновлять боевые сервера. При этом официальные репозитории за эти дни успеют поменять версии пакетов, но наш репозиторий останется без изменения.

Установка и настройка apt-mirror

На debian и ubuntu apt-mirror устанавливается легко из официальных репозиториев:

# apt install apt-mirror

Основной конфигурационный файл – /etc/apt/mirror.list. Например нам нужно создать зеркало репозитория для proxmox ps и proxmox ve. Указываем нужные репозитории и комментирует ненужные, все остальное можно оставить по умолчанию:

# nano /etc/apt/mirror.list
#deb http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-src http://ftp.us.debian.org/debian unstable main contrib non-free
deb [arch=amd64] http://download.proxmox.com/debian/pve buster pve-no-subscription
deb http://download.proxmox.com/debian/pbs buster pbs-no-subscription

Давайте разберем другие настройки в конфигурационном файле:

  • set base_path – путь к основному каталогу репозитория;
  • set mirror_path – здесь будут складываться скаченные пакеты;
  • set skel_path – место для временно скачиваемых индексов;
  • set var_path – здесь размещены файлы журналов, url-адреса и контрольные суммы MD5. А также скрипты clean.sh, postmirror.sh;
  • set cleanscript – скрипт очистки, по умолчанию пустой, его ещё нужно написать;
  • set defaultarch – архитектура по умолчанию (i386 или x86_64)
  • set postmirror_script – скрипт постобработки, по умолчанию пустой;
  • set run_postmirror – запускать ли скрипт постобработки (0 – не запускать, 1 – запускать);
  • set nthreads – количество потоков при скачивании (по умолчанию 20);
  • set _tilde – чтобы разрешить правильную загрузку зеркал с тильдой в URL-адресе или имени пакета установите – 1, по умолчанию – 0.

Чтобы создать репозиторий выполним:

# apt-mirror

Вы увидите объём репозитория и он начнёт закачиваться к вам на сервер!

После закачки можем проверить что у нас закачалось. Для начала посмотрим на дерево скаченных каталогов:

# tree -d /var/spool/apt-mirror/
/var/spool/apt-mirror/
├── mirror
│   └── download.proxmox.com
│       └── debian
│           ├── pbs
│           │   └── dists
│           │       └── buster
│           │           └── pbs-no-subscription
│           │               └── binary-amd64
│           └── pve
│               └── dists
│                   └── buster
│                       └── pve-no-subscription
│                           └── binary-amd64
├── skel
│   └── download.proxmox.com
│       └── debian
│           ├── pbs
│           │   └── dists
│           │       └── buster
│           │           └── pbs-no-subscription
│           │               └── binary-amd64
│           └── pve
│               └── dists
│                   └── buster
│                       └── pve-no-subscription
│                           └── binary-amd64
└── var

И посмотрим на размер загруженных зеркал:

# du -sh /var/spool/apt-mirror/mirror/download.proxmox.com/debian/*
9.1G    /var/spool/apt-mirror/mirror/download.proxmox.com/debian/pbs
11G     /var/spool/apt-mirror/mirror/download.proxmox.com/debian/pve

Установка и настройка nginx

Опубликовать репозиторий можно с помощью веб сервера apache2 или naginx. Я для этой цели использовал nginx.

Для начала установим этот веб сервер:

# apt install nginx

После установки настроим, а именно укажем корневой путь “/var/spool/apt-mirror/mirror/download.proxmox.com/debian/” и в блок “location /” добавим опцию “autoindex on”

# nano /etc/nginx/sites-enabled/default
root /var/spool/apt-mirror/mirror/download.proxmox.com/debian/;
location / {
                try_files $uri $uri/ =404;
                autoindex on;

Теперь перезапустим nginx:

# service nginx restart

И можем зайти в репозиторий с помощью web браузера:

Осталось только настроить сервера PVE и PBS, чтобы они обновлялись не с официального репозитория, а с локального зеркала. Для этого в sources.list на этих северах напишем следующее:

# nano /etc/apt/sources.list.d/pve-no-subscription.list
deb [arch=amd64] http://xxx.xx.xx.xx/pve buster pve-no-subscription
# nano /etc/apt/sources.list.d/pbs-no-subscription.list
deb [arch=amd64] http://xxx.xx.xx.xx/pbs buster pbs-no-subscription

Спасибо за внимание!

Источник: https://sysadminium.ru/linux_apt-mirror_nginx_lokalnyj_repozitorij/

Was this helpful?

0 / 0