LXF104:Скоростные обновления
|
|
|
- Rsync Централизуйте обновления систем с помощью локального зеркала
Содержание |
Rsync: Создаем локальное зеркало
- Надоело загружать одни и те же обновления несколько раз, для каждого компьютера? Энди Хадсон научит, как создать локальное зеркало для вашей сети.
Если вы живете в Великобритании, то, более чем вероятно, вы подключены к провайдеру, который вводит ограничения на трафик. Будь это 2 ГБ, 20 ГБ или 200 ГБ, все равно есть некий предел на объем загрузки, после которого провайдер начнет урезать канал, а то и вовсе закроет свою сеть для вас [ну, а если вы живете в РФ, все может быть еще проще – трафик порой оплачивается помегабайтно, так что каждый сэкономленный бит приносит живые деньги, – прим. ред.]. Еще хуже невнятная политика использования, гласящая о
«приемлемом объеме загрузки» без указания точного значения этого
объема, которое можно было бы отследить. Думаете, вам до этого
и дела нет? Но если вы лично используете более двух компьютеров
или работаете в корпоративной среде, где отвечаете за много машин,
то интенсивность загрузки может резко возрасти, когда вы захотите
обновить ваш дистрибутив Linux. Представьте, что надо обновить пять
компьютеров по 100 МБ обновлений на каждый – и вот вам уже объем
в 500 МБ. А уж сколько времени займет загрузка и установка всех этих
обновлений – сплошной кошмар администратора.
Однако, на наше счастье, в большинстве дистрибутивов Linux возможно создание локальных зеркал для использования в вашей частной сети, и они действуют как центральный репозиторий для любого подключенного к сети клиента. Сделать это легко, и вы сэкономите и время, и трафик! На данном уроке мы будем опираться на Fedora 8, но заодно покажем, как сделать это в Ubuntu.
Установка
Первое и главное – нам необходим компьютер с установленной Fedora 8. С графическим у вас интерфейсом система или текстовым – неважно, поскольку вы будете использовать этот компьютер как центральный сервер, включенный 24 часа 7 дней в неделю. А вот что важно – это наличие достаточно большого жесткого диска, как минимум 60 ГБ, чтобы хранить не только базовую ОС, но и файлы репозитория: они бывают довольно объемны. Грубо говоря, локальное зеркало полной установки Fedora (все пакеты) вместе с зеркалом обновлений занимает 22 ГБ. В идеале ваш компьютер должен быть подключен к проводной сети, но беспроводной адаптер также может работать. Кроме того, вам следует настроить вашу машину (если вы еще не сделали этого), указав ей статический IP-адрес, чтобы обеспечить вашим клиентам возможность всегда подключаться к серверу для получения обновлений (см. Фиксируем IP).
Что касается ПО – убедитесь, что на вашем компьютере установлен и запущен Apache. Для проверки этого перейдите в Приложения > Системные [ Applications > System Tools] и выберите Terminal, чтобы открыть окно командной строки. Введите
$ rpm -q httpd && /sbin/service httpd status
Первая часть этой команды опрашивает базу данных RPM, чтобы узнать, установлен ли httpd (Apache), и возвращает номер версии. Вторая половина проверяет, запущен ли httpd (Apache). Если вы ничего не меняли в вашей системе Fedora, то весьма маловероятно, что Apache запущен, а потому вы увидите нечто следующее:
httpd-2.2.6-3 httpd is stopped
Если Apache не запущен, введите команду
$ su -c ‘/sbin/service httpd start’
для запуска службы Apache. Заметьте, что будет выдан запрос на пароль суперпользователя (root), поскольку только он имеет привилегии, необходимые для запуска и остановки служб.
Но таким образом вы запустите Apache лишь в текущей сессии, и после перезагрузки вам потребуется выполнить все снова. Чтобы избежать этого, можно настроить Apache так, чтобы он запускался на уровнях запуска 3 и 5 (соответственно, текстовый и графический режим), используя команду chkconfig следующим образом:
$ su -c ‘/sbin/chkconfig --level 35 httpd on’
Тогда Apache будет запускаться при каждом перезапуске системы, и всегда будет доступен подключающимся клиентам.
Теперь, при установленном и запущенном Apache, необходимо немного подстроить брандмауэр, разрешив HTTP-трафик с вашего сервера. Если ваше окно терминала осталось открытым, то введите от имени root команду:
# system-config-firewall-tui
чтобы открыть текстовый инструмент Fedora для настройки брандмауэра. По умолчанию брандмауэр включен, так что при помощи Tab переместитесь к кнопке Настроить [Customise] и нажмите клавишу Enter. В появившемся окне слева вы увидите столбец под названием Доверенные службы [Trusted Services]. Клавишами курсора переместитесь к опции www (HTTP) и нажмите пробел, чтобы выделить его (появится звездочка). При помощи Tab перейдите к кнопке OK и нажмите Enter, для возврата к первому экрану. И наконец, переместитесь к кнопке OK для настройки правил брандмауэра и открытия порта 80 для HTTP-трафика.
Фиксируем IP
При настройке машины в качестве сервера правильно будет присвоить ей статический IP-адрес, чтобы обеспечить постоянную доступность для подключений. В Fedora для этого есть два способа.
- Выберите инструмент Network GUI (system-config-network) в меню Система > Приложения. Будет выдан запрос пароля root. Первое окно показывает список сетевых устройств, подключенных к системе. На данном уроке будем предполагать, что сетевой интерфейс только один (eth0). Выделите его и нажмите на панели инструментов кнопку Редактировать [Edit].
- По умолчанию, Fedora использует для настройки сетевых интерфейсов DHCP, если только вы не меняли это при первоначальной установке. Если нет, щелкните на радио-кнопке Статический IP-адрес [Static IP address] и введите параметры сети, затем, через Файл >Сохранить [File > Save], запомните изменения. И наконец, отключите и вновь включите сетевой интерфейс, используя кнопки на панели инструментов, чтобы новые настройки применились к Fedora.
- Другой вариант (если вы работаете в командной строке) – воспользоваться текстовыми инструментами настройки сети, system-config-network-tui. Введите эту команду от имени root, чтобы увидеть окно, показанное выше. Выбрав устройство клавишами перемещения курсора и нажав Enter, вы увидите экран настройки, как показано на следующем экранном снимке.
- Перейдите при помощи Tab к кнопке DHCP и нажмите пробел, затем Tab’ом пройдитесь по другим полям и введите ваши параметры статического IP. Переместитесь к кнопке OK и нажмите Enter для возврата к первому экрану, затем переместитесь на кнопку Выход [Quit] и нажмите клавишу Enter для возврата в оболочку. Перезапустите сеть, набрав service network restart от имени root; по завершении, ваша система получит свой статический IP-адрес.
Создание зеркала
Покончив с этим, приступим к созданию структуры каталогов для нашего локального зеркала. По умолчанию Apache в Fedora использует каталог /var/www/html/ в качестве корневого, и любые данные необходимо сохранять здесь в подкаталогах. В терминале войдите от имени суперпользователя, использовав команду:
$ su -
Теперь надо подумать о том, как скомпоновать каталоги в /var/www/html/, чтобы это было не очень сложно. Допустим, создайте каталог для той версии дистрибутива, которую собираетесь зеркалировать например, f8 (для Fedora 8), используя команду
# mkdir /var/www/html/f8
Он будет играть роль каталога верхнего уровня для зеркала Fedora 8. В этом каталоге нам необходимо создать еще парочку, для базового репозитория и обновлений, так что скомандуйте:
# mkdir /var/www/html/f8/base && mkdir /var/www/html/f8/updates
чтобы создать два подкаталога. Осталось только хорошенько проверить права доступа для каталога f8 и убедиться, что они позволяют людям читать файлы и просматривать содержимое директорий
Используйте команду
ls -al
чтобы отобразить права для обоих наших каталогов и убедиться что они доступны всем на чтение (read) и запуск (execute) (последние три символа прав должны выглядеть так: r-x). Здесь стоит отметить что записывать в эти каталоги разрешено только суперпользователю Позднее, когда мы дойдем до выполнения ночной синхронизации репозитория, это будет важно.
Итак, сейчас у нас есть запущенный и работающий web-сервер и созданная структура каталогов. Теперь определим пакеты, которые вы хотите зеркалировать локально, и загрузим их. Простейшим началом будет скопировать содержимое установочного DVD Fedora 8 в /var/www/html/f8/base/ командой вроде
# rsync -avz /media/Fedora\ 8\ i386\ DVD/ /var/www/html/f8/base/
Она копирует все содержимое DVD точно в таком же виде, как на источнике (права и прочее) в каталог /var/www/html/f8/base/. Запустив web-браузер на другом компьютере и открыв в нем http://ВашСтатичIP/f8/base, вы должны увидеть каталог со списком содержимого скопированного DVD Fedora. Самые глазастые из вас, вероятно, отметят, что мы скопировали в базовый каталог больше, чем просто RPM-пакеты. Это не плохо, поскольку означает, что вы также можете использовать этот репозиторий для выполнения сетевой установки по HTTP.
Как только rsync отработает (это займет около 15 минут, в зависимости от скорости вашего DVD-привода), следует наскоро убедиться, что все файлы на месте:
# ls -al /var/www/html/f8/base/ | more
Если вам повезло и все выглядит прекрасно, пора создавать репозиторий. Для этого понадобится утилита createrepo, которая по умолчанию не устанавливается, так что добавьте ее:
# yum install createrepo
Этот пакет невелик, так что загрузка и установка – дело нескольких секунд. Заполучив его, вы сможете сгенерировать необходимые Yum метаданные, которые Fedora будет читать при обращении к вашему репозиторию. Также следует знать, что Fedora включает XML-файл, определяющий, к какой группе принадлежит каждый пакет, а именно Служебные, Web-разработка и т.д. Этот файл расположен в /var/www/html/f8/base/repodata/ и называется Fedora-8-comps.xml.
Для работы с createrepo используется команда
# createrepo -g /var/www/html/f8/base/repodata/Fedora-8-comps.xml /var/www/html/f8/base/
Тогда createrepo пройдется по всем подряд пакетам в поиске соответствий в XML-файле групп и сгенерирует метаданные, чтобы репозиторий можно было использовать.
Теперь наш базовый репозиторий готов к использованию, и необходимо выполнить первую синхронизацию с репозиторием обновлений. Первым шагом должно стать посещение http://mirrors.fedoraproject.org/publiclist/Fedora/8, для поиска географически ближайшего к вам rsync-зеркала, чтобы обеспечить хорошую скорость соединения. На данном уроке мы обратимся к сервису зеркал Великобритании: он располагается в Кентском университете. Путь к репозиторию обновлений можно получить, щелкнув на HTTP-ссылке и перейдя вниз по структуре каталогов через Updates > 8 > i386 (это в нашем случае, но вы-то берите подходящую вам архитектуру). То, что оказалось в строке адреса, и есть тот самый полный путь к репозиторию обновлений выбранного вами зеркала.
Откройте терминал и переключитесь на root. Затем введите команду
# rsync -avz rsync://rsync.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/updates/8/i386/ /var/www/html/f8/updates/
и приготовьтесь ждать. Будет закачано около 7,6 ГБ данных; и если вас не греет созерцание ползущей полосы прогресс-индикатора на экране, лучше, наверное, запустить этот процесс на ночь. Эта команда также загружает содержимое репозитория обновлений, включая содержимое каталога debug. Весьма вероятно, что вам захочется исключить его, поскольку экономия времени и трафика получится почти вдвое (там около 3,8 ГБ). Это делается вставкой
--exclude=debug/
между сайтом-источником и целевым каталогом: вставка велит rsync при загрузке игнорировать любые каталоги с именем debug, значительно сберегая ваши ресурсы.
Когда rsync закончит загрузку репозитория обновлений, надо будет, как и ранее, воспользоваться createrepo чтобы создать метаданные, необходимые Yum для доступа к репозиторию. Файл групп содержится в каталоге updates/repodata/ и называется comps-f8.xml – во всем остальном команда остается неизменной.
Cron 101
Последнее, что надо выполнить на стороне сервера – настроить задание Cron для автоматической синхронизации удаленного репозитория обновлений с нашим новым локальным репозиторием и генерации метаданных. Вводом
# crontab -e
откройте для редактирования файл Crontab.
Сюда необходимо ввести желаемое время запуска задания, в следующем порядке: минуты, часы, число, месяц, день недели, имя пользователя, который собирается запускать задание, и, наконец, сама команда. Поскольку мы собираемся заставить машину работать 24 часа 7 дней в неделю, обновления желательно выполнять в полночь, и пусть это будет каждую ночь. Если вы помните из предыдущего, только root может изменять содержимое /var/www/html/, так что логично сделать root пользователем, запускающим эту команду. Итак, для обновления репозитория в 12 часов ночи мы вводим:
0 0 * * * root rsync -avz rysnc://rsync.mirrorservice.org/sites/ download.fedora.redhat.com/pub/fedora/linux/updates/8/i386/ -- exclude=debug/ /var/www/html/f8/updates/
Также потребуется ввести строку запуска createrepo по завершении синхронизации. Сколько времени пройдет между синхронизацией и созданием метаданных, зависит от скорости соединения. Если у вас соединение 6 МБ+, мы предлагаем задать минут 30, введя в Crontab следующую строку:
30 0 * * * root createrepo -g /var/www/html/f8/updates/repodata/comp-f8.xml /var/www/html/f8/updates
Все ли?
Возможно, вы уже осознали, что DVD Fedora содержит не все пакеты, доступные в репозитории. На самом деле пакетов более 8 400. Чтобы обеспечить полную комплектацию, надо будет однократно выполнить rsync-обновление с репозитория ‘everything’. Вновь, найдите ближайшее к вам зеркало и на сей раз перейдите в releases/8/Everything/i386/os/:
# rsync -avz rsync://rsync.mirrorservice.org/sites/download.fedora.redhat.com/pub/fedora/linux/releases /8/Everything/i386/os/ /var/www/html/f8/base/
В целом здесь около 10,6 ГБ данных для загрузки, но они пересекаются с содержимым DVD, объем которого около 3,6 ГБ. В любом случае, рекомендуется запустить обновление на ночь. Не забудьте выполнить команду createrepo, как раньше; единственное отличие – ей теперь придется перебрать 8 440 пакетов!
Настройка клиентов Fedora
Если вы справились с настройкой сервера, работа на стороне клиента покажется вам простой.
- Откройте Pirut (это всего лишь графическая оболочка Yum), перейдя в Приложения > Добавить/Удалить программы [Applications > Add/Remove Software].
- Когда Pirut откроется, перейдите в Редактировать > Репозитории [Edit > Repositories] и выберите в появившемся списке репозиторий Fedora. Нажмите Редактировать [Edit].
- Вы будете предупреждены, что изменение настроек может привести к невозможности обновления системы. Бесстрашно нажмите OK, проигнорировав это.
- Щелкните на радиокнопке местоположения и в ставшем активном поле введите полный URL. Закончив, нажмите OK.
Зеркалирование Ubuntu
Что можно сделать в Fedora, можно сделать и в Ubuntu; то есть так же зеркалировать всю доступную в репозитории информацию на локальной машине. Чтобы это сделать, понадобится установить Apache2 и apt-mirror. В Ubuntu Apache в качестве корневого каталога для всех папок и файлов использует /var/www/ – не как в Fedora, где имеется дополнительный под-уровень (html/), помните это!
Команда Ubuntu apt-mirror используется для автоматического создания зеркала репозиториев, указанных в файле /etc/apt/mirror.list. Откройте его в командной строке, используя Nano:
sudo nano /etc/apt/mirror.list
Если вы знакомы с файлом sources.list, используемым Apt, то вы справитесь и с этим файлом: они почти идентичны. Надо только закомментировать ненужные строки, поставив в их начало символ решетки (#). Если же вы хотите загрузить только пакеты main и restricted, поместите решетку перед ‘universe’ или ‘multiverse’, чтобы закомментировать их. С зеркала, расположенного в вашей стране, загрузка может проходить быстрее, так что везде, где увидите archive.ubuntu.com, поставьте перед ним в качестве префикса код вашей страны, например, ru. для России или us. для США. Отредактировав файл, нажмите Ctrl+O, чтобы сохранить его, и Ctrl+X для возврата в командную строку.
Теперь просто скомандуйте
sudo apt-mirror
и apt-mirror загрузит информацию с репозиториев в соответствии с файлом mirror.list, который вы только что редактировали. В зависимости от сделанных вами изменений, размер загрузки может достигать 40 ГБ, если не больше! К счастью, apt-mirror запоминает, где остановился, если вы отменили его работу, не дождавшись конца, и вы можете выполнять загрузку несколько ночей, пока она не закончится. Все данные сохранятся в /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu и будут готовы к использованию. Если вы задали код вашей страны как префикс для archive.ubuntu.com, этот путь учтет указанный код: например, /var/spool/apt-mirror/mirror/ru.archive.com/ubuntu. Как только apt-mirror завершит свою работу, на вашем жестком диске окажется свежая копия всех выбранных репозиториев. Вы можете убедиться, что она самая свежая, еще раз выполнив команду apt-mirror, как раньше. Как и в случае с Fedora, вы можете предпочесть сделать это автоматически через Cron, причем Ubuntu уже позаботился о включении соответствующего задания Cron под названием apt-mirror, в закомментированном виде, в /etc/cron.d/. По умолчанию установлено ежедневное обновление в 16-00, но вы можете изменить это как вам удобнее.
Теперь осталось только сделать репозитории доступными через Apache. Мы сделаем это при помощи нескольких символьных ссылок, поскольку это наиболее эффективный способ. Введите в командной строке:
sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu
И вновь, если вы использовали локальное зеркало, то предварите archive.ubuntu.com префиксом, соответствующим коду вашей страны. Потом запустите Apache командой:
sudo /etc/init.d/apache2 start
и настройте свои клиенты!
Как побочный результат настройки этих репозиториев, вы теперь можете использовать их для выполнения сетевой установки по HTTP, но это тема другого урока! LXF
Настройка клиентов Ubuntu
Когда apt-mirror закончит свою работу и вы создадите символьные ссылки, надо будет настроить каждого клиента, используя утилиту Software Sources [Источники пакетов], расположенную в меню Система > Администрирование.
Завершив следующие три шага, выйдите из Software Sources, и вам предложат обновить информацию о пакетах с новыми настройками. На данном этапе клиент будет настроен на использование локального зеркала вместо удаленного, сберегая вам массу драгоценного трафика.
- Снимите галочки со всех пунктов на вкладке Ubuntu Software в утилите Software Sources.
- На вкладке Сторонние пакеты [Third-Party Software], нажмите кнопку Добавить [Add].
- Введите строку Deb (включая репозитории, загруженные при помощи apt-mirror) и нажмите Добавить источник [Add Source].