Блог Рагимова Романа

Обновление пакета Denwer до актуальных версий ПО

Доброго времени суток, уважаемые

Сегодня я расскажу вам, какие мантры надо прочесть, для того чтобы обновить ПО входящее в состав Denwer до текущих версий. Будут затронуты вопросы актуализации phpMyAdmin, php и mysql. Для самых маленьких, в конце поста приведена ссылка на готовый архив с обновленными версиями всего ПО входящего в Denwer — распаковал и радуйся.

Оглавление

Предисловие

Ввиду природной лени, у меня не возникает желания, каждый раз после переустановки ОС, устанавливать и настраивать окружение для webdev. Посему я предпочитаю пользоваться готовыми комплектами WAMP. Долгое время я сидел на XAMPP, но в прошлом году перешел на Denwer. Причин перехода я уже и не помню, но проблема была достаточно серьезная (кажется он отказывался работать под Windows 7, хотя я не уверен)

Основной «фишкой» всех модных фреймворков является наличие «консоли». Консолью это правда только называется, а на самом деле это php-скрипт исполняемый в shell. Для меня, как дитя Windows, этот подход совершенно чужд. Неужели так сложно сделать Web-интерфейс? Непонятно, но приходится мириться.

Так вот, намедни, решил я ознакомиться с новейшими достижениями web-разработки в лице ORM фреймворка Doctrine (знающие товарищи скорее всего догадались, что сейчас будет). Но мои желания наткнулись на непонимание со стороны Doctrine — «консоль» вылетала с ошибкой:

Error in my_thread_global_end(): 1 threads didn’t exit

Пичаль, подумал я, и уже было решил отложить наше знакомство до того момента, как я перейду на Linux (т.е. практически навсегда), но что то дернуло меня погуглить на тему этой ошибки. Результаты гугления привели меня в древнюю тему на официальном форуме MySQL, где иностранные дядьки, на чистом английском, материли текущую сборку библиотека libmysql.dll и рекомендовали всем либо откатиться на старую, либо перейти на бету 5.1, т.к. там этой ошибки нет. Т.к. откатываться куда-то желания особого не было, я пошел качать «бету». «Бета» оказалась стабильным релизом ветки 5.1, что меня в общем-то порадовало. С этого момента и началась основная история :-)

Обновление MySQL

По умолчанию Denwer поставляется с MySQL версии 5.0.45. На данный момент актуальной является версия 5.1.41. И хотя модераторы на форуме Denwer-а придерживаются консервативных взглядов на ПО, особых вариантов у меня не было. Из существующих багов и потенциальных я выбираю потенциальные.

Для начала скачиваем свежую версию MySQL для своей платформы. Для Windows нам предлагается 3 варианта: Essentials, MSI Installer и Without Installer. Если у вас есть ограничения по трафику или канал не очень широкий, рекомендую скачать Essentials — экономия 60 мегабайт ценой пары лишних кликов мышью. Всем остальным — Without Installer.

После скачивания распаковываем архив в любую папку. Те, кто скачал Essentials версию вместо распаковки выполняют установку. На последнем этапе, господа Essential-исты снимают галочки с предложений установить сервис и настроить сервер.

Переходим в папку denwer_disk:usrlocalmysql5 и удаляем папки bin и share.

НЕ УДАЛЯЙТЕ ПАПКУ data!

Опасающиеся, что что-то пойдет не так, перед удалением делают бэкап. Теперь копируем в denwer_disk:usrlocalmysql5 папки bin и share из папки распаковки/установки MySQL. Почему просто не заменить старые файлы новыми версиями? Пробовал. Не получилось. Тянутся зависимости и без полного пакета (ну, почти полного, пару десятков мегабайт сэкономить мне все-таки удалось) программы отказываются работать.

Теперь переходим к самому ответственному этапу — правке конфигурационного файла. Открываем denwer_disk:usrlocalmysql5my.cnf и копируем в него содержимое одного из ini-шников, поставляющихся с mysql. Для себя я выбрал my-medium.ini и пока всем доволен. Далее нужно поправить следующие строки:

[client]      
#password   = your_password      
port        = 3306      
socket      = /tmp/mysql5.sock

# Here follows entries for some specific programs  
# The MySQL server  
[mysqld]  
port        = 3306  
socket      = /tmp/mysql5.sock

skip-locking

key_buffer_size = 16M  
max_allowed_packet = 1M  
table_open_cache = 64  
sort_buffer_size = 512K  
net_buffer_length = 8K  
read_buffer_size = 256K  
read_rnd_buffer_size = 512K  
myisam_sort_buffer_size = 8M

Иначе сервер не запустится (не спрашивайте почему, заниматься изысканиями особого желания нет).

Вот и все. Ах, да, забыл сказать, что все эти действия надо проводить при отключенном Denwer-е.

Обновление PHP

После обновления MySQL у вас могут возникнуть проблемы в работе с phpMyAdmin. Скорее всего вы будете получать ошибку связанную с php_mysqli.dll. Решением этой проблемы будет обновление PHP до версии 5.3.1 (с Denwer поставляется PHP 5.2.4).

Скачиваем архив с дистрибутивом с  официального сайта. Я выбрал Thread Safe версию, но, насколько я в курсе, для Denwer нет принципиальной разницы какую версию использовать, так что можете брать ту, название которой понравится больше :-) Переходим в папку denwer_disk:usrlocalphp5 и удаляем все файлы, кроме php.ini. Распаковываем содержимое скачанного архива в эту папку. Voila.

Обновление phpMyAdmin

Теперь расскажу вам о самом простом обновлении во всем пакете — замене phpMyAdmin 2 на phpMyAdmin 3. Чем руководствуется команда поддержки Denwer-а, не предлагая официальный пакет с обновлением я не знаю, но факт остается фактом - Denwer до сих пор поставляется с phpMyAdmin ветки 2.x.

Для исправления данной несправедливости, идем в раздел загрузок сайта phpMyAdmin. Открываем каталог denwer_disk:homelocalhostwwwToolsphpMyAdmin и удаляем все его содержимое. Далее распаковываем содержимое из скачанного архива в эту папку. Создаем config.inc.php и копируем в него содержимое config.sample.inc.php, не забывая добавить/изменить следующие параметры конфигурации:

/*      
 * First server  
 */  
$i++;  
/* Authentication type */  
$cfg['Servers'][$i]['auth_type'] = 'config';  
$cfg['Servers'][$i]['user'] = 'root';  
$cfg['Servers'][$i]['password'] = '';  
/* Server parameters */  
$cfg['Servers'][$i]['host'] = 'localhost';  
$cfg['Servers'][$i]['connect_type'] = 'tcp';  
$cfg['Servers'][$i]['compress'] = false;  
/* Select mysqli if your server has it */  
$cfg['Servers'][$i]['extension'] = 'mysqli';  
$cfg['Servers'][$i]['AllowNoPassword'] = true;  
$cfg['Servers'][$i]['nopassword'] = true;

Вот и все.

Заключение

Поздравляю, теперь вы обладатель почти «Denwer 4» ! Нет, конечно, Denwer 4, если верить обещаниям Дмитрия Котерова (а у меня нет причин ему не верить), будет чем-то совершенно новым. Но, учитывая то, что email адреса «в связи со скорым выходом Denwer 4» собираются уже больше года, лучше синица в руках, чем журавль в небе. Да и вряд ли версии базового ПО будут новее, чем на официальных сайтах.

Ну и напоследок, как обещал, полный архив с уже настроенными php, MySQL и phpmyadmin:

Архив с обновлением для Denwer 3 (отчет о проверке KAV)

Версии ПО в комплекте:

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

Ctrl