Cvsup-mirror - создание зеркала сервера обновлений CVSup

Версия для печатиОтправить другуPDF version

Начнем с теории... Порты во FreeBSD - это коллекция переносимых приложений. Порты не содержат самого ПО, однако каждый порт содержит инструкции и указания по сборке пакета из "сырцов" - исходных кодов. Поскольку ПО постоянно модифицируется (разработчики выпускают новые версии), соответсвенно дересо портов необходимо время от времени обновлять, чтобы поддерживать его в актуальном соостоянии. Для обновления дерева портов служит утилита csup. А для того, чтобы обнаружить "ближайший" сервер обновлений, можно воспользоваться утилитой fastest_cvsup.

Со временем парк обслуживаемых серверов все увеличивается, поэтому решил, что пора поднять собственное зеркало сервера обновлений CVSup. Для реализации данного проекта воспользуемся возможностями cvsup-mirror. Поскольку каналы в Интернет почти что "резиновые" (несколько гигабит/с), то основным критерием считаю то, что с локального сервера обновления будут проходить быстрее.

Итак, выполним установку cvsup-mirror из системы портов:

# cd /usr/ports/net/cvsup-mirror && make install clean && rehash

Сам порт cvsup-mirror не собирает никаких бинарников, а только создает скрипты и список заданий в cron. Настройка происходит в режиме диалога. Постараюсь дать подробные комментарии к поставленным вопросам.

Этап 1. Общая информация

Первый вопрос: с каким "вышестоящим" севрером будет выполняться синхронизация?

Master site for your updates [cvsup-master.freebsd.org]? cvsup5.ua.freebsd.org

Я указал cvsup5.ua. freebsd.org, исходя из результата поиска наиболее оптимального сервера обновлений утилитой fastest_cvsup. Вывод результата:

>>  Speed Daemons:
    - 1st: cvsup6.ua.freebsd.org
    - 2nd: cvsup5.ua.freebsd.org
    - 3rd: cvsup11.ua.freebsd.org

Почему не cvsup6.ua.freebsd.org, а cvsup5.ua.freebsd.org? Думаю, что не один я пользуюсь утилитой fastest_cvsup и сервер cvsup6.ua.freebsd.org скоро окажется перегружен.

Стоит иметь ввиду, что "главные" зеркала FreeBSD находятся в США и Дании, однако строго не рекомендуется использовать их для обновления, поэтому запуск утилиты fastest_cvsup выполнялся с ключами -c ua (fastest_cvsup -c ua).

Cтоит иметь ввиду, что c региональных серверов обновления будут выполняться намного быстрее. Поиск оптимального сервера обновлений советую выполнить самостоятельно, указывая при поиске код страны.

Второй вопрос: с какой периодичностью запускать обновления файлов?

How many hours between updates of your files [1]? 3

По умолчанию предлагают выполнять синхронизацию раз в час, однако раз в три часа - вполне достаточно.

Этап 2. Настройка зеркал

Первый вопрос: создавать ли зеркало главного хранилища исходников?

Do you wish to mirror the main source repository [y]? y

Соглашаться обязательно, поскольку хотя и не обязательно хранить остальные зеркала, создание зеркала  главного хранилища контролируется.

Второй вопрос: путь в файловой системе для хранения данных?

Where would you like to put it [/home/ncvs]? /db5/cvsupd-mirror

Каталог для хранения зеркала указал на несистемном диске, чтобы не нагружать системный диск во время обновлений.

ТРетий вопрос: создавать ли зеркало сайта (данных WWW)?

Do you wish to mirror the installed World Wide Web data [y]? n

Такой необходимости не вижу, поэтому отказываюсь.

Четвертый вопрос: создавать ли зеркало базы данных багов?

Do you wish to mirror the GNATS bug tracking database [y]? n

Такой необходимости не вижу, поэтому отказываюсь.

Пятый вопрос: создавать ли зеркало архива списка рассылок?

Do you wish to mirror the mailing list archive [y]? n

Такой необходимости не вижу, поэтому отказываюсь.

Этап 2. Настройка системных свойств

Первый вопрос: уникальный непривилегированный идентификатор пользователя для запуска клиента?

Unique unprivileged user ID for running the client [cvsupin]? cvsupin

Второй вопрос: уникальный непривилегированный идентификатор группы для запуска клиента?

Unique unprivileged group ID for running the client [cvsupin]? cvsupin

Третий вопрос: уникальный непривилегированный идентификатор пользователя для запуска сервера?

Unique unprivileged user ID for running the server [cvsup]? cvsup

Четвертый вопрос: уникальный непривилегированный идентификатор группы для запуска сервера?

Unique unprivileged group ID for running the server [cvsup]? cvsup

 

Этап 3. Настройка логгирования

Первый вопрос: Syslog facility, используемый для логирования?

Syslog facility for the server log [daemon]? daemon

Этап 3. Настройка ограничений

Первый вопрос: максимальное количество одновременных подключений?

Maximum simultaneous client connections [8]? 15

CVSup во время работы не сильно нагружает сеть, однако на CPU и HDD нагрузка будет более интенсивная. Попробуем остановиться на количестве одновременных подключений - 15. Для локальных серверов обновлений достаточно будет и 5.

 

На этом шаге непосредственная настройка завершена. Следующий шаг - установка зависимостей (например - cvsup, поскольку при наличии в системе csup мало кто устанавливает еще и cvsup). По завершению установок зависимостей следует финальный диалог. Соглашаемся со всем:

You need a group "cvsup".
Would you like me to create it [y]? y
Done.
You need a user "cvsup".
Would you like me to create it [y]? y
Done.
You need a group "cvsupin".
Would you like me to create it [y]? y
Done.
You need a user "cvsupin".
Would you like me to create it [y]? y
Done.
Would you like me to create cvsupin's home directory (/home/cvsupin) [y]? y
Fixing ownerships and modes in "/usr/local/etc/cvsup".
Setting up links and directories for distributions.
  Linking distrib.self -> ..
  Linking FreeBSD.cvs -> /db5/mirror-cvsupd
  Fixing ownerships and modes in /db5/mirror-cvsupd ... done.
  Linking FreeBSD-www.current -> SKIP
  Linking FreeBSD-gnats.current -> SKIP
  Linking FreeBSD-mail.current -> SKIP
 
Would you like me to set up the syslog logging [y]? y
Setting up server logging in "/etc/syslog.conf".
Creating "/var/log/cvsupd.log".
Giving syslogd a kick in the pants.
Adding cvsup and cvsupd log entry to "/etc/newsyslog.conf".
Done.
 
Would you like me to set up your crontab for updates every 3 hours [y]? y
Scheduling updates every 3 hours in "/etc/crontab".
Done.  The first update will be 5 minutes from now, at 03:51.
The cvsupd server will be started automatically after the first update,
and whenever you reboot.

По завершению настройки cvsup-mirror запустит первое обновление ровно через пять минут после установки. Через 5 минут в каталоге, заданном при настройке (в моем случае это /db5/mirror-cvsupd), должны появиться первые файлы. Это свидетельство того, что клиент cvsup настроен корректно и работает. Если же этого не случилось - смотрите лог /var/log/cvsup.log для выяснения причины.

Следующий шаг - запуск серверной части. Добавим в rc.conf опцию запуска сервера:

# echo '# CVSup mirror server' >> /etc/rc.conf
# echo 'cvsupd_enable="YES"' >> /etc/rc.conf

Собственно, старт демона:

# sh /usr/local/etc/rc.d/cvsupd start

Проверяем, запустилась ли серверная часть:

# sh /usr/local/etc/rc.d/cvsupd status
cvsupd is running as pid 57247.

Кажется все в порядке... Теперь осталось более детально настроить правила доступа. Задать ограничения можно в файле /usr/local/etc/cvsup/cvsupd.access. В моем случае содержание файла получилось такое:

+192.168.206.0/24		# Разрешаем подключаться с локальной сети без ограничений
-0.0.0.0/0	15	# Общее ограничение одновременных подключений
-0.0.0.0/0/32	1	# Только одно подключение с хоста
+0.0.0.0/0		# При достижении этого правила, разрешаем подключение клиента

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

Теперь попробуем обновиться с сервера. Создадим конфигурационный файл обновления /etc/csup/ports-all следующего содержания:

*default host=cvsup.muff.kiev.ua
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress ports-all

Предварительно удалим каталог портов и запустим обновление:

# rm -R /usr/ports
# csup -g -L 2 /etc/csup/ports-all

Порты обновляются, значит сервер обновлений работает корректно. Сервер открыт для всех - можете пользоваться. Адрес сервера уже указывался в конфигурационном файле - cvsup.muff.kiev.ua.

 

Голосов пока нет

Вставай, Україно!

Литература

Блаженны юзеры ибо не ведают что творят!