Обновление пакета 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)
Версии ПО в комплекте:
- PHP 5.3.1
- MySQL 5.1.41
- phpMyAdmin 3.2.4
Просто распаковываете этот архив в папку с установленным Denwer-ом и пользуетесь. Denwer во время обновления, естественно, должен быть отключен.