Установка и наладка WacoWiki в Windows XP

Очень подробная инструкция, специально для чайников (читать, только под музыку Вивальди)



1. Кикбоксинг с Apache 2

С Apache вроде никаких проблем не предвидится, но если что нибудь не так сделаете, то возможно они будут.


Итак:
Берём самый последний дистрибутив под Windows, он будет здесь. http://httpd.apache.org/download.cgi
Скажу одно, не берите MSI Installer потом забодаетесь вязать его с PHP. Я же, взял вот этот файл: httpd-2.2.2-win32-x86-ssl.zip на момент установки он был самым свежим.
Его нужно распаковать в папку Apache2 или как вы там назовёте, в корневой каталог какого угодно диска. Вообще, желательно, чтобы для вашего проекта был отдельный диск, но на диске C: тоже будет работать неплохо.


В папке C:\Apache2\conf есть файл конфигурации httpd.conf. Откроем его в Вордпаде или другом текстовом редакторе. И проверим всё ли в порядке. Поменяем где надо диск или путь, всё согласно нашему местоположению. Пробежитесь по файлу внимательным взглядом и поправьте если надо, следующие, ниже перечисленные строчки или раскоментируйте их, если перед строчкой стоит знак #

ServerRoot "c:/Apache2"
LoadModule rewrite_module modules/mod_rewrite.so
ServerName localhost
DocumentRoot "c:/Apache2/htdocs"

<Directory "c:/Apache2/htdocs">
 AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
DirectoryIndex index.html index.php	

Оособо обратите внимание на строчку AllowOverride, потому что, по умолчанию там стоит AllowOverride None поправьте её на AllowOverride All. Эта команда, с радостью и рвением, будет тыкать носом Apache везде, где стоит файл .htaccess, а в Wiki таких мест предостаточно. В данном случае из этого фала загружаются правила поведения Сервера с каталогом где .htaccess стоит.
И тогда рекомендации из стандартного руководства по Wiki /Doc/Русский/InstalljacijaPodApache отпадают, потому как Апач от этого сходит с ума и возникают проблемы с загрузкой страниц, да и картинок тоже, в бровзере.


Команду LoadModule rewrite_module modules/mod_rewrite.so нужно раскомментировать если она забита знаком #


ServerName localhost можно поправить на реальный IP адрес вашего сервера в сети, а он и будет таким на 100 процентов, если хочется юзать Вику, да и не только её, по сетке. Например, ServerName 192.168.0.1 тогда по сети можно будет вызывать так http://192.168.0.1/wiki (Тогда, соответственно и в конфигурационном файле Ваки config.inc.php нужно поправить переменную "base_url" => "http://localhost/wiki/", на соответствующее, но это позже, Вака же у нас еще не стоит)


В DirectoryIndex по умолчанию не включено обращение к файлу index.php, так сделаем это, если не охота каждый раз дописывать столько букыв :) а вообще, можно застолбить себе на будущее удобств немерено, добавив все мысленные стартовые расширения, в пределах разумного, конечно. Командная строка преобразится и будет выглядеть вполне по научному:
DirectoryIndex index.html index.htm index.shtml index.php


Ну и конечно же, теперь его, Apache нужно запустить в систему, то есть установить в сервисы, чтобы стартовал комфортно вместе с системой. Для этого, запускаем CMD (для тех кто не в курсе что это: эмулятор DOS. Пуск/Выполнить/cmd ) и в черном окошке эмулятора DOS, заходим в папку с бинарниками Apache (у меня C:\Apache2\bin)


cd c:\Apache2\bin


втыкаем Apache в сервис командой


httpd.exe -k install


Ну и запустим его


httpd.exe -k start


Если всё нормально, то команда исполнится без всяких ругательств. Вообще, стартовать сервис можно из того места, где положено Пуск/Настрока/Панель управления/Администрирование/Службы, но воткнуть его туда можно только командой из DOS httpd.exe -k install По крайней мере я не нашел другого способа.
Проверьте в службах, всё ли правильно, появилась ли там строчка Apache2
Ну и состояние тоже, должно высвечивать слово "работает". Если это так, то поздравляю, с Апачем мы на половину разделались.
Можно ещё проверить для полного удовлетворения из Эксплорера такой командой:


http://localhost/
или
http://127.0.0.1/ что совершенно однозначно.


В окне появится скромное и лаконичное Its is work, или что-то подобное, по крайней мере понятно, что заработало. В любом случае, при возникших внештатных проблемах, отсылаю вас в файлы логов Апаче. Он сюда C:\Apache2\logs пишет access.log и error.log. И признаюсь, нигде не видел столь эротичного и откровенного чтива в жизни :) почитайте, насладитесь, может за одно и разберётесь с проблемой.


Но это еще не всё! Наша задача, сделать связку с PHP, иначе зачем мы все, здесь собрались?



2. Интимные подробности о PHP

Идём на родину PHP http://php.net/ и там берём любой релиз. Но учтите, более старые версии могут потом взбрыкнуться, когда попытаетесь связать их с MySQL. MySQL очень капризная штука.


Вобщем качаем PHP 5.x.x . Я пробовал и PHP 4.4.3, и PHP 5.1.4 оба работают нормально. PHP 4.0 тоже работает но со старой версией MySQL. Учтите, что вы должны взять сразу два файла оттуда: стандартный инсталятор PHP 5.1.4 installer и PHP 5.1.4 zip package. Дело в том, что инсталятор не имеет всех файлов для нормальной работы, что есть в зипе, но зато хорошо привязывает PHP к системе. Не понимаю, начорта разработчики так сделали, ну и бог с ними, им виднее. Да! Пока не забыл, еще нужно скачать модуль php5apache2.dll-php5.1.x.zip для связки Apache 2 с PHP вот здесь http://www.apachelounge.com/download/ Модуль что есть в наличии в самом PHP вообще не годится. Я над этим просидел, между прочим, два дня.


Запускаем инсталятор и он должен создать папку C:\PHP или там где вы укажете инсталятору. В систему он станет нормально, но как говорилось выше, не со всеми файлами что надо. Тогда распаковываем файл php-5.1.4-Win32.zip в это место C:\PHP


Идём дальше. Вот тот файл, что мне стоил двух дней жизни и почти довёл до самоубийства, распределяем следующим образом:


и качаем его. Это есть компилятор СИ от Микрософта, который хоть и бесплатен, но Бил Гейтс не включил его в стандартную поставку системы. Он нужен для того, чтобы связка Apache2-PHP всё же заработала. Запускаем только что скачанный инсталятор. Всё должно пройти стандартно и без лишней пыли. Всёж-таки Микрософт, не хухры-мухры.
Вот тут начинается самое интересное. Шаманство, честное слово :) Идём в наш установленный и рабочий Апаче и начинаем его ломать. В папке C:\Apache2\conf находим старого знакомого, файл конфигурации httpd.conf, вот ему-то, родимому мы и будем выкручивать руки. Откроем WordPadом и в секции # Dynamic Shared Object (DSO) Support, там где все модули загружаются, ставим такие строчки:

LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"	

Именно так, а не иначе. Слэши путей не меняйте на нормальное для Виндов, Апаче родом из Юникса и понимает только так. Ну разве что имена папок, что создавали по своему усмотрению и диски куда ставили дистрибутивы.
Если вы ставили php4.4 то покопайтесь на том же сайте http://www.apachelounge.com/download/ и найдите подходящую связку для него. Файл который нужен, называется php4apache2.dll-php4.4.x.zip. После распаковки найдите ReadmeFirst.txt, вот там-то, на чистом английском языке всё и написано, что я здесь, долго и нудно, втирал.
Самое главное! Не забывайте перезапускать сервис Apache в службах, после каждой правки httpd.conf да и php.ini тоже о котором пойдёт речь далее.
Если вы сделаете это сейчас же, то сервисная служба заматерится и не запустит Апаче, но не огорчайтесь, всё у нас еще впереди. Берёмся за долгожданный php.ini. Заходим в C:/php и... опа! Его там нет. Вот поэтому служба обижалсь и верещала, что не будет дружить с нами. Но файл php.ini есть и инсталятор PHP его "корректно" втиснул в папку C:\WINDOWS а мы Апачу указали на другое место, ну и ладно, копируем его оттуда. Или если лень ходить туда, (там, честно признаюсь, такой бардак) находим, точно такой же файл в папке C:/php, но он называется по другому php.ini-recommended. Переименнуем его, но по правилам хорошего тона, лучше его сдублировать и дубликат уже переименовать в php.ini. Начинаем в том же текстовом редакторе морочить голову уже ему. Прошвырнитесь по строчкам, так же как и в апачевом конфигурационном файле, найдите и поправьте что нужно.

engine = On
zend.ze1_compatibility_mode = On
include_path = ".;c:\php\includes"
doc_root ="C:\Apache2\htdocs"
extension_dir = "C:\php\ext"
extension=php_mysql.dll	

engine = On для того чтобы пятая версия была совмесима с четвёртой, в частности простая конструкция вида <? ..... ?> уже не работает, потому что грамотнее, так <?php ...... ?>. Для Ваки это по барабану, потому что в ней всё путём, но для других приложений... да вы, пеной изойдетесь! Для той же цели команда zend.ze1_compatibility_mode = On


doc_root ="C:\Apache2\htdocs" я на всякий случай поставил. Кто их знает, разработчиков? Как они компилировали свой дистрибутив с параметром FORCE_REDIRECT или нет, а компилировать под винды я не умею сам, так что, от греха подальше, напрямую указал PHP где его место. Тоже самое и с остальными путями, нефик программе размышлять куды б втыкнуть.
Обязательно раскомментируйте extension=php_mysql.dll иначе с MySQLем не свяжетесь, к бабке ходить не надо. Строчка закомментирована, а сам же модуль преспокойненько лежит в EXT. Тут уж стоит сделать отступление: мне пришлось устанавливать и удалять 4 разных версии PHP и MySQL пока не догадался доки почитать :) ЧИТАЙТЕ ДОКИ ОНИ РУЛЕЗ! Зато почерпнул много полезного для себя, в частности, что 4.0 версии PHP вовсе не нужен этот модуль. Поддержка, таки, встроена в код, но он не работает со старшими версиями MySQL (НУ это отдельная тема, целого романа)
Вот пожалуй и всё. Можно сохранять изменения и дрожащими руками стартовать сервис Апача, он автоматом должен запустить PHP. проверяем:
Пишем небольшой код в любом текстовом редакторе. (Хотя, я рекомендую замечательную программу, целый процессор для построения кодов php EnginSite for PHP http://enginsite.com/php-editor.htm Ну, это для для желающих умереть программистами PHP)


 
<?
phpinfo();
?>

Сохраяем его под именем proba.php в папке C:\Apache2\htdocs (кто еще не догадался, htdocs папка для всех WEB проектов ) и стартуем из бровзера http://localhost/proba.php
Работает! Вывалится красочный список того, что может и не может PHP.
На этом можно было бы закончить со связкой Apache с PHP, но я добавлю:
Когда писал эту статью, а именно сейчас я это и делаю, нарвался в php.ini на такую команду upload_max_filesize = 2M
Хмммм :) Тут на сайте многие рвут на голове волосы, по поводу, что Вака не признаёт файлов больше 2х мегабайт. Так вот где собака зарыта! Сам еще не проверял, но обязательно проверю, я вообще собирался Ваку использовать как удобное хранилище своих данных, а они не по две тонны весят.

КАК РАЗРЕШИТЬ ЗАГРУЗКУ В ВАКУ ГИГАНТСКИХ ФАЙЛОВ.
Ну чтож :) Исследования проведены успешно. Вот там как раз в php.ini и был забор для больших файлов.
В команде upload_max_filesize = 2M поменяем на значение которое будет греть сердце, я поставил 1000M как раз с запасом, чтобы мои ISO-шки помещались, кому надо больше поставьте сколько надо. (Если конечно, канал у вас не дохлый в 64к, а то, какой нибудь юзверь захватит канал и будет заливать диск порнухи на ваш сервер пару недель)
Но это еще не вся переделка, если вы  исправите только этот параметр, то файлы будут качаться не более 8 мегабайт, другую правку вы должны сделать в том же php.ini, вот здесь: post_max_size = 8M, поставьте 1000M
И перезапустите сервис (службу) Apache2. 
А теперь открываем файл конфигурации Ваки config.inc.php ищем там переменную "upload_max_size" и подставляем значение "1000000" это как раз и будет ровно один гигабайт. Учитывая, что в Ваке это значение в килобайтах измеряется.
Пользуйтесь на здоровье :)	


3. MySQL и большой геморрой с ним


Как я и намекал ранее, что пятая версия у меня не пошла ни в какую. Вернее, она-то пошла, было всё замечательно, даже таблицы создавались, но Вака упёрлась, в момент, когда стала заносить данные в базу. Ну с этим еще стоит разобраться. уж очень соблазнительно поставить пятую версию.
Если кто ставил Ваку и на строчке добавления админа в базу Вака орала благим матом Adding admin user... FAILED: Hmm! Так вот, у этой проблемы как раз оттуда ноги растут. Версия MySQL пятая? Пятая. Ставь MySQL4.1 и нефик строить из себя. Плюс, ко всему прочему, не запускались другие скрипты, например, программа phpMyAdmin 2.7.0-pl2 (если кому интересно, то она здесь http://www.phpmyadmin.net/ очень порядочный администратор MySQL) но ему и положено, он для версий не выше MySQL 4.0. С этим тоже, еще разбираться придётся.
Сразу же появилась мысль понизить версию MySQL, что и было незамедлительно сделано. 3.5 и 4.0 не приняли пятого PHP. Понижаем и его, всё заработало как часы, но мы же в 21 веке живём! Хочется чтобы посовременнее всё было. Так что я постепенно дошел до связки php-5.1.4 и MySQL4.1.21


Лирические отступления о трудных буднях юзера окончены, теперь поговорим об установке. Ну она проста как три копейки, никаких наворотов как с PHP нет и не будет. Качаем MySQL Server 4.1 http://mysql.org/downloads/ Вам нужен этот файл mysql-4.1.21-win32.zip весит всего навсего 41 мегабайт. Оттуда же, очень советую, скачать программу MySQL GUI Tools (17.6 Мб) или попросту администратор. Можно конечно и без него, но там столько возможностей по контролю, подготовке и сохранению-восстановлению баз, что грех не пользоваться, тем более бесплатно.


Ставим всё по стандартному, по умолчанию localhost, единственное не забудем пароль администратора, то есть root, для сервера базы, а то напишем что попало, потом удалять придётся. А сервер не пустит к себе без пароля администратора. Удалять, сразу оговорюсь, трудно. Смешно конечно, делов то, взял и нажал uninstall. Ага! Аж два раза! Всё это, конечно, правильно, он удалится из системы, но из сервисов нет. Тогда ручками.

Вот об этом подробнее, вдруг придётся, когда нибудь. Сначала удаляем стандартыми средствами из системы программу, смотрим в службах осталась ли она там, если осталась, то прямая дорога в реестр. Топаем туда. Знаете как? Пуск/Выполнить/regedit Откроется редактор реестра.
Там, пожалуйста, по-осторожнее! Всёж таки реестр. А то, натопчите - систему переустанавливать придётся. Ищем в реестре по папкам (а там, точно так же, как и на диске, так что ничего странного и сложного не увидите) 
Вот идите по этому маршруту  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\  Там этих, всяких сервисов, как тараканов у меня на столе! :) но мы удаляем только папку MySQL, проверьте, на всякий случай и папку Set003, чем чёрт ни шутит, может и туда затесалось.
Можно перезапускать машину. Сервиса в следующий запуск не будет. Теперь идём в C:\Program Files\MySQL\ и удаляем весь каталог с потрохами MySQL Server 4.1
Да! Если у вас в базе всё же есть ценные данные, которых жалко до слёз, так варварски не поступают и об этом поговорим в разделе "Предохраняемся"	

Итак MySQL Server 4.1 установлен. Он вообще втиснется в службы как миленький и даже запустится. Что значит умён - подлец!
Проверяем дёшево и сердито программой, что приведена ниже. Можно конечно, сразу Вакой и проверить, но программка, вообще-то, полезная для общего развития и понимания, как же этот гад, PHP взаимодействует с базами. Вот она:


<?
define("DBName","test");
define("HostName","localhost");
define("UserName","root");
define("Password","");
// Разумеется, в Password забивается ваш пароль администратора MySQL

// Вот здесь, как раз это и проверяется
if(!mysql_connect(HostName,UserName,Password)) 
{  echo "Не могу соединиться с базой ".DBName."!<br>"; 
   echo mysql_error();
   exit; 
}
mysql_select_db(DBName);

// Создаем таблицу t. Если такая таблица уже есть,
// сообщение об ошибке будет подавлено, т.к. 
// используется "@"
@mysql_query("create table t(id int,a text)");

// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++) 
{  $id=time();
   mysql_query("insert into t(id,a) values($id,'Стр$i!')");
}   

// Выводим все записи
$r=mysql_query("select * from t");
for($i=0; $i<mysql_num_rows($r); $i++)
{  $f=mysql_fetch_array($r);
   echo "$f[id] -> $f[a]<br>\n";
}
?>

Но теперь пора бы, туда занести и базу Ваки. Можно всё сделать конечно, при помощи того же чёрного окна CMD, но не откажу себе в удовольствии ещё раз заявить: "Мы живём в 21 веке, черт возьми!" Вооружившись этой горделивой философской формулой бытия, ставим ту программу, что советовал MySQL GUI Tools. Инсталятор так прост, что поймёт даже кошка, научилась бы и на "Вискас" себе зарабатывала копеечку. Поэтому, ничего не скажу про установку.
Пользоваться ненамного сложнее, так что, та же кошка, имела бы по две банки консервов в день, администрируя базы данных MySQL. В общем за пяток минут разберётесь в интерфейсе и сможете сделать базу Wakka и юзера Wakka и расставить ему привелегии. Да что там эти привелегии ставить? В User Administation наступил на юзера Wakka и в закладке Schema Privileges выбрал базу Wakka, раздал все права, что есть в наличии одним кликом кнопки <<.


Всё.


А где же, обещанный геморрой, спросите вы? Геморрой еще будет, не радуйтесь. Вот начнёте сохранять базу, а потом её восстанавливать, он и появится. Потому что кодировки не совместимы. Пока пользуйтесь тем, что есть, а потом, когда приспичит предохраняться, вот тогда и поговорим.



4. Как поставить Ваку и чтобы нам за это ничего небыло


Здесь, конечно, нового не скажу, что есть в официальном руководстве по Ваке. Но сказать есть о чём. Поэтому раздел будет пополняться по мере сил.


КАК ПОСТАВИТЬ ДВЕ ВАКИ НА ОДИН СЕРВЕР.
Это очень просто. Сделайте две разных папки с Вакой в C:\Apache2\htdocs\ конечно же под разными именами, желательно по названиям ваших проектов, например, hotel и magia. Содержимое в них, всё те же Ваки, совершенно идентичные.
В MySQL создайте соответствующие базы hotel и magia ну и юзеров hotel и magia раздайте им привелегии каждому юзеру свою базу и пароли.
Затем по очереди запустите инсталятор Ваки для каждого проекта, всё стандартно, с отличием лишь, что впишите в поля где есть wakka, hotel или magia. Включая и префиксы wacko_ (используя нужную символику hotel_ или magia_) Вот и на здоровье, у вас уже есть две Ваки, да хоть сто!
Только, будьте готовы к тому, что во время добавления в личное меню одного проекта, тоже самое будет появляться и в другом. С природой этого загадочного явления я пока не разобрался, но будем надеяться, ничего серьёзного, всё поправимо.


5. Предохраняемся


Раздел ждёт своего часа. Здесь, по идее, будет разговор по сохранению вашей Ваки и всех наработок в ней. Вообще, люди мрут, а о винчестерах и говорить нечего.



6. Благодарности с занесением


А вообще эта Вака-Вика замечательная вещь, хоть и обладает таким ужасным редактором... всё форматирование вручную. Не удобнее ли для пользователя так: выделил текст и нажал правую кнопку, а там весь список правил форматирования. Хоть здесь и выведены многие функции на кнопки, но страшно неудобно для использования. Таблицы вообще не охота строить. В Ворде просто замечательно всё сделано. Построил таблицу и забивай данные, даже думать об этом не надо. Если бы Вака умела автоматически воспринимать коды форматирования Ворда и преобразовывать в свои, цены бы ей небыло. Тоже самое можно сказать и о HTML с PHP. Представьте, включаем в тело Ваки свои собственные страницы и коды, насколько выгоднее стали бы смотреться документы. Редактор, как отмечал выше совсем не дружественен с пользователем. Конечно удобно, два раза щелкнул на страницу и включился редактор. Так доработайте же! Чтобы стало совсем хорошо. Пусть страница и открывается в том месте, где щёлкнули. Потом сохранили документ, а он и открылся на том месте где редактировали. Я просто измаялся от этих неудобств. Пока найдёшь место где раньше редактировал, забудешь о чем была речь. Вот, такой камень в огород разработчиков. Но не обращайте внимания, это всего лишь брюзжание беспечного пессимиста, которым являюсь с рождения. Ребята, таки молодцы, проделали столь колоссальную работу. Я весьма и приятно удивлён таким грамотным и качественным продуктом, который к тому же распространяется даром.
С уважением, респектом и кисточкой к группе разработчиков, Инти Айа. http://zhurnal.lib.ru/i/inti_a/