Начнем с теории... Порты во 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 |
Собственно, старт демона:
# 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.
Последние комментарии
11 недель 3 дня назад
35 недель 4 дня назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 11 недель назад