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

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

{{toc numerate=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, иначе зачем мы все, здесь собрались?

---------------------
===Интимные подробности о 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**

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

  * Копируем **php5apache2.dll** в php папку (например. c:\php)
  * Копируем **httpd.exe.manifest** в c:\apache2\bin
  * Затем идём по этому адресу: ((http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en)) 
и качаем его. Это есть компилятор СИ от Микрософта, который хоть и бесплатен, но Бил Гейтс не включил его в стандартную поставку системы. Он нужен для того, чтобы связка ~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) 

%%(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" это как раз и будет ровно один гигабайт. Учитывая, что в Ваке это значение в килобайтах измеряется.
Пользуйтесь на здоровье :)
%%
-------

===~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 взаимодействует с базами. Вот она:

%%(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, раздал все права, что есть в наличии одним кликом кнопки <<.

Всё.

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

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

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

===Предохраняемся===

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

---------------
===Благодарности с занесением===

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