Перевод часов отменяется
Всем известно, что в соответствии с Федеральным Законом 107-ФЗ, в Российской Федерации начиная с лета 2011 года отменяется переход на летнее и зимнее время. Однако, компьютеры об этом указе сами по себе никак не узнают, им нужно об этом сообщить, иначе они, как и положено в соответствии с заложенными в них программами, часы все таки переведут.
Что делать?
Конечно же, все достаточно просто: необходимо поставить обновление операционной системы, в котором учтена отмена перевода часов. Однако не все так просто, если на вашем сервере стоит очень старая ОС, обновления для которой уже не выпускаются. В данной статье мы рассмотрим как произвести обновление информации о временных зонах для серверов, работающих на различных версиях ОС Debian GNU/Linux, установленной на большинстве наших серверов, и VDS/Dedicated серверов наших клиентов.
Как определить версию ОС Debian?
Чтобы определить какая именно у вас на сервере стоит версия ОС Debian, необходимо в консоли сервера выполнить следующую команду:
cat /etc/debian_version
если команда выдаст цифру, начинающуюся с 4 - это Debian Etch, если 5 - это Debian Lenny, 6 - Debian Squeeze.
Обновление tzdata для Debian Lenny и Squeeze
Для Debian Lenny (5.x) и Squeeze (6.x) доступны официальные обновления пакета tzdata, решающие
данную проблему. Для их установки достаточно в консоли выполнить следующие команды:
apt-get update
apt-get install tzdata
утвердительно ответив на вопросы системы, если они возникнут. Убедиться, что обновление установлено, можно следующим образом:
apt-cache policy tzdata
в ответ система покажет служебную информацию о данном пакете. Нас интересует строчка «Installed». Если версия установленного пакета - 2011k или более новая, значит система обновлена
и перевод часов не случится.
Обновление tzdata для Debian Etch
Для Debian Etch (4.x) официальные обновления более не выпускаются, поэтому придется провести частичный апгрейд системы до Debian Lenny (5.x). Первым делом необходимо проверить текущее состояние файла, описывающего источники пакетов для системы. Мы должны проверить не прописаны ли в нем источники пакетов от Debian Lenny. Для этого выполните команду:
grep lenny /etc/apt/sources.list
Если данная команда вернет пустой результат, необходимо добавить соответствующую строку:
echo "deb ftp://ftp.de.debian.org/debian lenny main" >> /etc/apt/sources.list
если команда grep покажет, что такая строка (или аналогичная ей) в sources.list уже есть,
добавлять ее второй раз не требуется.
После успешного выполнения этого этапа необходимо проделать все то же самое, что написано в инструкциях для Lenny/Squeeze (предыдущий раздел). При этом обновление затронет не только пакет tzdata, но и еще ряд системных пакетов.
Как обычно, если вам покажется данная работа сложной и вы не уверены в своих силах, вы можете обратиться в нашу тех.поддержку и поручить ее нам.
Я все сделал по инструкции, а мой сайт все равно показывает не верную дату!
Увы, но не все программное обеспечение написано одинаково. В частности проблемы возникнут еще с PHP версии 5 и с MySQL.
В случае MySQL проблема решается просто: достаточно перезапустить MySQL, он перечитает файл с информацией о временной зоне и далее будет работать правильно. Как правило, для рестарта MySQL необходимо выполнить:
/etc/init.d/mysql restart
однако, если у вас запущено несколько MySQL серверов, эта команда перезапустит только основной.
Вторая проблема, более глобальная, связана с PHP: начная с PHP 5 разработчики PHP решили, что на системную информацию о временной зоне полагаться не стоит и встроили в PHP свою версию базы данных tzdata. Не смотря на то, что у PHP есть ключ сборки --with-system-tzdata, PHP, кроме последних версий, его игнорирует. Нам известно,
что PHP 5.3.8 уже обращается с ним правильно, а PHP 5.3.1 еще нет. С какой именно
версии 5.3 это исправили, мы не выясняли. Соответственно, мы советуем для
PHP 5.1, 5.2 и 5.3 ранее 5.3.8 либо дополнительно собрать PECL расширение
timezonedb, либо провести обновление PHP до версии 5.3.8, собранной с опцией --with-system-tzdata.
Поскольку процесс сборки PECL расширений достаточно сложен, а процесс пересборки PHP еще сложнее, мы не можем описать его в рамках данной статьи и предлагаем либо разобраться с проблемой самостоятельно, либо обратиться в тех.поддержку.