Sysadminium
Утилита apt-mirror используется для создания локального зеркала репозитория Linux.
Причины использовать локальный репозиторий
Локальный репозиторий может уменьшить нагрузку на сеть. Так как обновления скачиваются всего один раз во время синхронизации локального репозитория с официальным. А остальные сервера обновляются по локальной сети.
Также локальное зеркало обеспечит идентичность пакетов на всех серверах. Например, мы можем обновить тестовый сервер, в течении нескольких дней проверить его работу. И если все нормально, следующем шагом можем обновлять боевые сервера. При этом официальные репозитории за эти дни успеют поменять версии пакетов, но наш репозиторий останется без изменения.
Установка и настройка apt-mirror
На debian и ubuntu 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.
Чтобы создать репозиторий выполним:
Вы увидите объём репозитория и он начнёт закачиваться к вам на сервер!
После закачки можем проверить что у нас закачалось. Для начала посмотрим на дерево скаченных каталогов:
# 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.
Для начала установим этот веб сервер:
После установки настроим, а именно укажем корневой путь «/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:
И можем зайти в репозиторий с помощью 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
Утилита apt-mirror используется для создания локального зеркала репозитория Linux. Локальный репозиторий синхронизируется с официальными репозиториями
Настройка локальных репозиториев с помощью apt-mirror в системах Ubuntu и Debian
Когда сегодня трафик и случайная скорость интернета измеряются десятками гигабайт за мгновение даже для обычных интернет-клиентов, какова цель установки кэша локального репозитория в локальной сети, спросите вы?
Одна из причин — снижение пропускной способности интернета и высокой скорости загрузки пакетов из локального кеша. Но, кроме того, еще одной важной причиной должна быть конфиденциальность. Давайте представим, что клиенты из вашей организации ограничены в доступе в Интернет, но их Linux-компьютеры нуждаются в регулярных системных обновлениях программного обеспечения и безопасности или просто нуждаются в новых пакетах программного обеспечения. Чтобы продолжить картину, сервер, который работает в частной сети, содержит и обслуживает секретную конфиденциальную информацию только для ограниченного сегмента сети и никогда не должен подвергаться публичному доступу в Интернет.
Это всего лишь несколько причин, по которым вам следует создать локальное зеркало репозитория в вашей локальной сети, делегировать пограничный сервер для этой работы и настроить внутренних клиентов для извлечения программного обеспечения из своего зеркала кэша.
Ubuntu предоставляет пакет apt-mirror для синхронизации локального кэша с официальными репозиториями Ubuntu, зеркало, которое можно настроить через HTTP или FTP сервер для совместного использования программные пакеты с локальными системными клиентами.
Для полного зеркального кэша на вашем сервере требуется не менее 120 ГБ свободного места, зарезервированного для локальных репозиториев.
Требования
- Минимум 120 ГБ свободного места.
- Сервер Proftpd установлен и настроен в анонимном режиме.
Шаг 1: Настройте сервер
1. Первое, что вы можете сделать, это определить ближайшие и самые быстрые зеркала Ubuntu рядом с вами, посетив страницу архивного зеркала Ubuntu и выбрав свою страну.
Если в вашей стране есть больше зеркал, вам следует определить адрес зеркала и выполнить некоторые тесты на основе результатов ping или traceroute.
2. Следующим шагом является установка необходимого программного обеспечения для настройки локального зеркального репозитория. Установите пакеты apt-mirror и proftpd и настройте proftpd как автономный системный демон.
$ sudo apt-get install apt-mirror proftpd-basic
3. Теперь пришло время настроить сервер apt-mirror. Откройте и отредактируйте файл /etc/apt/mirror.list, добавив ближайшие местоположения (Шаг 1) — необязательно, если зеркала по умолчанию достаточно быстры или вы не в торопитесь — и выберите системный путь, по которому следует скачивать пакеты. По умолчанию apt-mirror использует местоположение /var/spool/apt-mirror для локального кеша, но в этом руководстве мы собираемся использовать изменение системного пути и набор точек base_path к местоположению /opt/apt-mirror.
$ sudo nano /etc/apt/mirror.list
Также вы можете раскомментировать или добавить другой список источников перед директивой очистки, включая источники Debian, в зависимости от того, какие версии Ubuntu используют ваши клиенты. Вы можете добавить источники из 12.04, если хотите, но имейте в виду, что для добавления большего количества источников требуется больше свободного места.
Чтобы просмотреть списки источников Debian, посетите Генератор списков источников Debian.
4. Все, что вам нужно сделать сейчас, это просто создать путь к каталогу и запустить команду apt-mirror для синхронизации официальных репозиториев Ubuntu с нашим локальным зеркалом. .
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror
Как вы можете видеть, apt-mirror продолжает индексацию и загрузку архивов, отображая общее количество загруженных пакетов и их размер. Как мы можем себе представить, 110–120 ГБ — это достаточно много, чтобы загрузить некоторое время.
Вы можете запустить команду ls для просмотра содержимого каталога.
После завершения первоначальной загрузки будущие загрузки будут небольшими.
5. Пока apt-mirror загружает пакеты, вы можете настроить свой сервер Proftpd. Первое, что вам нужно сделать, это создать анонимный файл конфигурации для proftpd, выполнив следующую команду.
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
Затем добавьте следующее содержимое в файл anonymous.conf и перезапустите службу proftd.
User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 DenyAll
6. Следующий шаг — связать путь apt-mirror с путем proftpd, запустив привязку монтирования, введя команду.
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
Чтобы проверить это, запустите команду mount без параметров или опций.
7. Последний шаг — убедиться, что сервер Proftpd автоматически запускается после перезагрузки системы и каталога mirror-cache. также автоматически монтируется на пути ftp-сервера. Чтобы автоматически включить proftpd, выполните следующую команду.
$ sudo update-rc.d proftpd enable
Для автоматического монтирования кэша apt-mirror на proftpd откройте и отредактируйте файл /etc/rc.local.
Добавьте следующую строку перед директивой exit 0. Также используйте задержку 5 секунд перед попыткой монтирования.
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
Если вы извлекаете пакеты из репозиториев Debian, выполните следующие команды и убедитесь, что соответствующие настройки для приведенного выше файла rc.local включены.
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/
8. Для ежедневной синхронизации apt-mirror вы также можете создать задание системного расписания для запуска по команде crontab, выберите предпочитаемый редактор и добавьте следующий синтаксис строки.
В последней строке добавьте следующую строку.
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log
Теперь каждый день в 2 часа ночи кеш вашего системного репозитория будет синхронизироваться с официальными зеркалами Ubuntu и создавать файл журнала.
Шаг 2. Настройте клиентов
9. Чтобы настроить локальные клиенты Ubuntu, отредактируйте /etc/apt/source.list на клиентских компьютерах, указав IP-адрес или имя хоста apt-mirror server — замените протокол http на ftp, затем обновите систему.
deb ftp://192.168.1.13/ubuntu trusty universe deb ftp://192.168.1.13/ubuntu trusty main restricted deb ftp://192.168.1.13/ubuntu trusty-updates main restricted ## Ad so on….
10. Для просмотра репозиториев вы можете открыть браузер и указать IP-адрес вашего сервера или доменное имя, используя протокол FTP.
Та же система применяется также к клиентам и серверам Debian, единственные необходимые изменения — это зеркало Debian и список источников.
Кроме того, если вы устанавливаете новую систему Ubuntu или Debian, укажите локальное зеркало вручную с протоколом ftp, когда установщик спросит, какой репозиторий использовать.
Самое замечательное в наличии собственных локальных зеркальных репозиториев заключается в том, что вы всегда в курсе последних событий, и вашим локальным клиентам не нужно подключаться к Интернету для установки обновлений или программного обеспечения.