Не так давно мы рассказывали о настройке сервера на базе Ubuntu 9.04. С тех пор прошло не так уж много времени, но за это время успел увидеть свет дистрибутив 9.10 и было бы неплохо обновить сервер до последней версии. Также мы расскажем как настроить автоматическое обновление - залог стабильности и безопасности вашего сервера.
Обновление дистрибутива
Если вы не используете LTS версии Ubuntu Server, то потребность в переходе на новую версию будет возникать раз в полгода. Но стоит ли обновляться так часто? Наше мнение - стоит. Несмотря на то, что любая версия Ubuntu имеет 18 месячную поддержку (LTS версии 3 и 5 лет), это будут обновления безопасности, в то время как новая версия дистрибутива содержит последние версии используемого ПО. Мы советуем рассматривать новые выпуски Ubuntu Server как Service Pack Windows (ведь ни у кого не вызывает сомнений ставить их или нет), которые тоже содержат как обновления безопасности так и новые версии ПО.
Итак, мы решили обновить свой сервер под управлением Ubuntu Server 9.04 до версии 9.10. Сделать это несложно, все что вам нужно это аккуратность, работающий интернет канал и немного свободного времени. Не забудьте предупредить клиентов, которых обслуживает данный сервер о временных перебоях в обслуживании (а лучше всего это сделать в перерыв или во внерабочее время).
Сначала нужно установить update-manager-core (если он ещё не установлен):
Теперь выполним обновление дистрибутива:
Система проверит наличие нового релиза, обновит информацию о пакетах и репозиториях, и выдаст вам заключение, где будет указан размер архивов и предполагаемое время загрузки для вашего канала. Вы можете подтвердить или отказаться от обновления, например если скорость вашего интернета не позволяет скачать такой объем трафика в течении перерыва.
По окончании загрузки пакетов начнется обновление системы. С этого момента процесс остановить нельзя и нужно следовать инструкциям на экране. Особое внимание следует уделить запросу на перезапись конфигурационных файлов. Если данные файлы относятся к настроенным нами ранее службам сервера, наиболее правильным решением будет отказаться от их перезаписи. В конце нам будет предложено перезагрузить систему, после чего следует убедиться в работоспособности всех служб сервера.
В нашем случае пришлось откорректировать конфигурационный файл прокси-сервера squid, изменив строку:
на:
В любом случае, если что-то перестало работать, попробуйте вручную перезапустить нужные службы, скорее всего вы получите сообщение об ошибке или перезагрузите сервер и посмотрите логи (/var/log/syslog).
Автоматическая установка обновлений
Следующим важным шагом будет настройка автоматической установки обновлений безопасности. По умолчанию это действие производится вручную администратором, однако гораздо лучше если сервер будет устанавливать обновления сам, скажем раз в неделю. Для этих целей будем использовать планировщик cron. Сначала создадим файл скрипта в директории /etc/cron.weekly, что обеспечит ему еженедельное исполнение:
Откроем его в редакторе Midnight Commander (F4) и внесем следующий текст:
Сохраним (F2) и, выйдя из mc, добавим ему права на исполнение:
Теперь наш скрипт будет исполняться еженедельно записывая результат своей работы в
/var/log/updates, чтобы избежать излишнего разрастания лог-файла необходимо обеспечить его ротацию. Для этого воспользуемся штатной утилитой logrotate. Создадим файл:
И внесем в него следующий текст:
При указанных настройках файл будет заменяться новым каждую неделю (weekly) или по превышении им размера 250 кБ (size 250k), при этом будут сохранятся два предыдущих файла (rotate 2) в сжатом виде (compress), при пустом логе ротация не происходит (notifempty).
При необходимости можно легко изменить период установки обновлений. Достаточно переместить скрипт updates в соответствующую директорию. Например его перемещение из /etc/cron.weekly в /etc/cron.daily позволит устанавливать обновления ежедневно.
Если вы не используете LTS версии Ubuntu Server, то потребность в переходе на новую версию будет возникать раз в полгода. Но стоит ли обновляться так часто? Наше мнение - стоит. Несмотря на то, что любая версия Ubuntu имеет 18 месячную поддержку (LTS версии 3 и 5 лет), это будут обновления безопасности, в то время как новая версия дистрибутива содержит последние версии используемого ПО. Мы советуем рассматривать новые выпуски Ubuntu Server как Service Pack Windows (ведь ни у кого не вызывает сомнений ставить их или нет), которые тоже содержат как обновления безопасности так и новые версии ПО.
Итак, мы решили обновить свой сервер под управлением Ubuntu Server 9.04 до версии 9.10. Сделать это несложно, все что вам нужно это аккуратность, работающий интернет канал и немного свободного времени. Не забудьте предупредить клиентов, которых обслуживает данный сервер о временных перебоях в обслуживании (а лучше всего это сделать в перерыв или во внерабочее время).
Сначала нужно установить update-manager-core (если он ещё не установлен):
sudo apt-get install update-manager-coreТеперь выполним обновление дистрибутива:
sudo do-release-upgradeСистема проверит наличие нового релиза, обновит информацию о пакетах и репозиториях, и выдаст вам заключение, где будет указан размер архивов и предполагаемое время загрузки для вашего канала. Вы можете подтвердить или отказаться от обновления, например если скорость вашего интернета не позволяет скачать такой объем трафика в течении перерыва.
По окончании загрузки пакетов начнется обновление системы. С этого момента процесс остановить нельзя и нужно следовать инструкциям на экране. Особое внимание следует уделить запросу на перезапись конфигурационных файлов. Если данные файлы относятся к настроенным нами ранее службам сервера, наиболее правильным решением будет отказаться от их перезаписи. В конце нам будет предложено перезагрузить систему, после чего следует убедиться в работоспособности всех служб сервера. В нашем случае пришлось откорректировать конфигурационный файл прокси-сервера squid, изменив строку:
error_directory /usr/share/squid/errors/Russian-koi8-rна:
error_directory /usr/share/squid/errors/ruВ любом случае, если что-то перестало работать, попробуйте вручную перезапустить нужные службы, скорее всего вы получите сообщение об ошибке или перезагрузите сервер и посмотрите логи (/var/log/syslog).
Автоматическая установка обновлений
Следующим важным шагом будет настройка автоматической установки обновлений безопасности. По умолчанию это действие производится вручную администратором, однако гораздо лучше если сервер будет устанавливать обновления сам, скажем раз в неделю. Для этих целей будем использовать планировщик cron. Сначала создадим файл скрипта в директории /etc/cron.weekly, что обеспечит ему еженедельное исполнение:
sudo touch /etc/cron.weekly/updatesОткроем его в редакторе Midnight Commander (F4) и внесем следующий текст:
echo "**************" >> /var/log/updates
date >> /var/log/updates
aptitude update >> /var/log/updates
aptitude safe-upgrade -o Aptitude::Delete-Unused=false --assume-yes --target-release `lsb_release -cs`-security >> /var/log/updates
echo "Security updates (if any) installed"Сохраним (F2) и, выйдя из mc, добавим ему права на исполнение:
sudo chmod +x /etc/cron.weekly/updatesТеперь наш скрипт будет исполняться еженедельно записывая результат своей работы в
/var/log/updates, чтобы избежать излишнего разрастания лог-файла необходимо обеспечить его ротацию. Для этого воспользуемся штатной утилитой logrotate. Создадим файл:
sudo touch /etc/logrotate.d/updatesИ внесем в него следующий текст:
/var/log/updates {
rotate 2
weekly
size 250k
compress
notifempty
}При указанных настройках файл будет заменяться новым каждую неделю (weekly) или по превышении им размера 250 кБ (size 250k), при этом будут сохранятся два предыдущих файла (rotate 2) в сжатом виде (compress), при пустом логе ротация не происходит (notifempty).
При необходимости можно легко изменить период установки обновлений. Достаточно переместить скрипт updates в соответствующую директорию. Например его перемещение из /etc/cron.weekly в /etc/cron.daily позволит устанавливать обновления ежедневно.

Здравствуйте!
У меня вопрос такой:
В процессе установки сервера, он спрашивает "Включить автоматическое обновление" или "Ручное".
Если я выставлю на автоматическое, то как я буду знать, что сервер будет спрашивать о замене конфиг. файлов? Что подскажете в данном вопросе?
Заранее спасибо.
С уважением, Роман.
Обычно обновления не затрагивают конфиги, во всяком случае мы не сталкивались с такой проблемой.
На шлюзе в данный момент "висят" 10 машин с Edubuntu. Ещё на 11 машинах Edubuntu уже установлен - осталось подключить их к общей сети. Ну, и на очереди ещё 10. Возникает проблема с обновлениями, т.к. скорость всего ... 256 :(((
Нагуглившись вдоволь, "приколхозил" (других слов применить не могу, потому как не уверен, что всё сделал правильно) на шлюз и первые 10 клиентских машин apt-cacher-ng. Первое впечатление - сеть немного разгружается (ну очень хочется верить, что что-то делал не зря). Очень бы хотелось увидеть чьё-то авторитетное мнение с анализом возможностей этой программы.
Уважаемый А.С. А вдруг Вы выберете время? Проблема очень насущная...
В принципе решение правильное, пакет будет скачиваться только один раз, остальные запросы будут обслуживаться из кэша.