Репозиторий программного обеспечения («репо») является центральным хранилищем файлов для хранения и поддержки пакетов программного обеспечения, из которых пользователи могут извлекать пакеты и устанавливать их на своих компьютерах.
Хранилища часто хранятся на серверах в сети, например в Интернете, к которым могут обращаться несколько пользователей.
Однако вы можете создать и настроить локальный репозиторий на своем компьютере и получить доступ к нему как одному пользователю или разрешить доступ другим компьютерам в LAN (локальной сети).
Одним из преимуществ настройки локального репозитория является то, что вам не нужно подключение к Интернету для установки пакетов программного обеспечения.
В этой статье мы расскажем, как настроить локальный веб-сервер YUM-хранилища через HTTP (Nginx) на CentOS 7 VPS, а также покажем, как найти и установить пакеты программного обеспечения на клиентских компьютерах CentOS 7.
Наша тестовая среда
Yum HTTP Repository Server: CentOS 7 [192.168.0.100] Client Machine: CentOS 7 [192.168.0.101]
Шаг 1. Установка веб-сервера Nginx
1. Сначала запустите установку HTTP-сервера Nginx из репозитория EPEL с помощью диспетчера пакетов YUM следующим образом:
# yum install epel-release # yum install nginx
2. После того как вы установили веб-сервер Nginx, вы можете запустить его в первый раз и включить его для автоматического запуска при загрузке системы.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
3. Затем вам нужно открыть порты 80 и 443, чтобы разрешить веб-трафик службе Nginx, обновить правила брандмауэра системы, чтобы разрешить входящие пакеты по HTTP и HTTPS, используя приведенные ниже команды:
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --zone=public --permanent --add-service=https # firewall-cmd --reload
4. Теперь вы можете убедиться, что ваш сервер Nginx поднят и запущен, используя следующий URL-адрес; если вы видите веб-страницу Nginx по умолчанию, все хорошо.
http://SERVER_DOMAIN_NAME_OR_IP
Шаг 2: Создайте локальный репозиторий Yum
5. На этом этапе вам необходимо установить необходимые пакеты для создания, настройки и управления локальным репозиторием.
# yum install createrepo yum-utils
6. Затем создайте необходимые каталоги (репозитории yum), которые будут хранить пакеты и любую связанную с ними информацию.
# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
7. Затем используйте инструмент reposync для синхронизации репозиториев CentOS YUM с локальными каталогами, как показано ниже:
# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
Пример вывода:
Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.fibergrid.in * epel: mirror.xeonbd.com * extras: mirrors.fibergrid.in * updates: mirrors.fibergrid.in base/7/x86_64/group | 891 kB 00:00:02 No Presto metadata available for base (1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm | 163 kB 00:00:02 (2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm | 267 kB 00:00:02 (3/9911): ElectricFence-2.2.2-39.el7.i686.rpm | 35 kB 00:00:00 (4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm | 35 kB 00:00:00 (5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm | 695 kB 00:00:04 (6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm | 110 kB 00:00:00 (7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm | 110 kB 00:00:00 (8/9911): GConf2-3.2.6-8.el7.i686.rpm | 1.0 MB 00:00:06
8. Затем проверьте содержимое локальных каталогов, чтобы убедиться, что все пакеты были синхронизированы локально.
# ls -l /var/www/html/repos/base/ # ls -l /var/www/html/repos/base/Packages/ # ls -l /var/www/html/repos/centosplus/ # ls -l /var/www/html/repos/centosplus/Packages/ # ls -l /var/www/html/repos/extras/ # ls -l /var/www/html/repos/extras/Packages/ # ls -l /var/www/html/repos/updates/ # ls -l /var/www/html/repos/updates/Packages/
9. Теперь создайте новую реподату для локальных репозиториев, запустив следующие команды, где флаг -g используется для обновления информации о группе пакетов с использованием указанного XML-файла.
# createrepo -g comps.xml /var/www/html/repos/base/ # createrepo -g comps.xml /var/www/html/repos/centosplus/ # createrepo -g comps.xml /var/www/html/repos/extras/ # createrepo -g comps.xml /var/www/html/repos/updates/
10. Чтобы включить просмотр репозиториев и пакетов в них, через веб-браузер создайте блок сервера Nginx, который указывает на корень ваших репозиториев, как показано.
# vim /etc/nginx/conf.d/repos.conf
Добавьте следующую конфигурацию в файл repos.conf.
server { listen 80; server_name repos.test.lab; #change test.lab to your real domain root /var/www/html/repos; location / { index index.php index.html index.htm; autoindex on; #enable listing of directory index } }
Сохраните файл и закройте его.
11. Затем перезапустите сервер Nginx и просмотрите репозитории из веб-браузера, используя следующий URL-адрес.
http://repos.test.lab
Шаг 3. Создание задания Cron для синхронизации и создания репозиториев
12. Затем добавьте задание cron, которое автоматически синхронизирует ваши локальные репозитории с официальными репозиториями CentOS, чтобы захватить обновления и исправления безопасности.
# vim /etc/cron.daily/update-localrepos
Добавьте эти команды в скрипт.
#!/bin/bash ##specify all local repositories in a single variable LOCAL_REPOS=”base centosplus extras updates” ##a loop to update repos one at a time for REPO in ${LOCAL_REPOS}; do reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/ createrepo -g comps.xml /var/www/html/repos/$REPO/ done
Сохраните скрипт и закройте его и установите для него соответствующие разрешения.
# chmod 755 /etc/cron.daily/update-localrepos
Шаг 4: Настройка локального репозитория Yum на клиентских машинах
13. Теперь на ваших клиентских компьютерах CentOS добавьте локальные репозитории в конфигурацию YUM.
# vim /etc/yum.repos.d/local-repos.repo
Скопируйте и вставьте конфигурацию ниже в файл local-repos.repo (внесите необходимые изменения).
[local-base] name=CentOS Base baseurl=http://repos.test.lab/base/ gpgcheck=0 enabled=1 [local-centosplus] name=CentOS CentOSPlus baseurl=http://repos.test.lab/centosplus/ gpgcheck=0 enabled=1 [local-extras] name=CentOS Extras baseurl=http://repos.test.lab/extras/ gpgcheck=0 enabled=1 [local-updates] name=CentOS Updates baseurl=http://repos.test.lab/updates/ gpgcheck=0 enabled=1
Сохраните файл и начните использовать локальные зеркала YUM.
14. Затем запустите следующую команду, чтобы просмотреть локальные репозитории в списке доступных репозиториев YUM на клиентских компьютерах.
# yum repolist или # yum repolist all