После долгих экспериментов с различными wiki-движками написанными на PHP и использующий в качестве хранилища MySQL я всё-таки остановился на том от чего хотел уйти — MediaWiki.
Внимание! В репозитории Ubuntu 11.10 лежит пакет mediawiki-1.15.5-3build1, на Launchpad дела с версией обстоят не многим лучше. В то время как на данный момент рабочая версия — 1.18! Я устанавливал MediaWiki из репозитория, так как она будет использоваться для внутрекорпоративых целей на офисном сервере. Для серверов, доступных из Сети, я рекомендовал бы скачать последнюю версию MediaWiki и использовать её.
Для работы MediaWiki нужен сервер Apache, PHP5 и MySQL. Если коротко, то для их установки нужно выполнить:
sudo apt-get install apache2 mysql-server php5 php5-mysql
За подробностями можно заглянуть в Google.
Установка MediaWiki из репозитория элементарна:
sudo apt-get install mediawiki
Для начала нужно запомнить несколько путей с которыми придётся работать:
- /var/lib/mediawiki — это так называемая «установочная директория», то есть если нужна всего одна wiki на всём сервере, то работать она будет отсюда. Здесь расположены директории для установки wiki (config), дополнений (extensions), картинок (images), а также ссылки на директории и файлы самого wiki-движка (/usr/share/mediawiki/).
- /etc/mediawiki/ — это директория содержит настройки для Apache — apache.conf, на этот файл при установке была добавлена ссылка в /etc/apache2/conf.d/mediawiki.conf .
Путь, который предлагается во всех увиденных мной руководствах по настройке пакета mediawiki мне не понравился, так как он советовал раскомментировать 3-ю строчку в файле /etc/mediawiki/apache.conf , а именно:
Alias /wiki /var/lib/mediawiki
И таким образом дать доступ к wiki с любого домена, добавив в строке адреса к нему /wiki.
Мне же хотелось сделать wiki на поддомене, к примеру, wiki.site.ru, что в результате я и сделал.
Для начала создаём директорию, которая будет домом для wiki, к примеру, /home/http/public_html/wiki . Копируем в неё всё содержимое /var/lib/mediawiki. Так как в /var/lib/mediawiki в основном лежат символичные ссылки на /usr/share/mediawiki/, то таким образом мы получаем копию «установочной директории» и, если пакет mediawiki обновится, то и на wiki.site.ru тоже будет обновлённая wiki. Не забываем Web-серверу дать права на запись в директории config, images:
sudo chown -R :www-data /home/http/public_html/wiki/
sudo chmod -R g+w /home/http/public_html/wiki/config/ /home/http/public_html/wiki/images/
Теперь дело за настройкой Базы Данных и Web-сервера. В БД всё просто, нужно создать пользователя, БД и дать пользователю права на эту БД. Короче, phpMyAdmin в помощь. А с настройкой Web-сервера Apache2 всё немного сложнее.
Создаём файл /etc/apache2/sites-available/ru.site.wiki и вставляем в него команды (кодировка UTF-8). Секции Directory взяты из файла /etc/mediawiki/apache.conf , за что ему спасибо.
Включаем сайт и перезагружаем Apache:
sudo a2ensite ru.site.wiki
sudo /etc/init.d/apache2 restart
Теперь при правильных настройках DNS ( в DNS для site.ru нужно добавить запись типа A с именем wiki и указанием IP-адреса сервера ) при переходе в браузере по адресу wiki.site.ru должна открыться страница с информацией о том, что mediawiki ещё не настроена и с ссылкой на страницу с настройкой ( wiki.site.ru/config/index.php ).
Заполняем на странице все нужные поля и сохраняем изменения. Теперь необходимо переместить файл LocalSettings.php из директории /config/ в корень сайта:
mv /home/http/public_html/wiki/config/LocalSettings.php home/http/public_html/wiki/LocalSettings.php
После этого можно удалить директорию /config/ , так как она больше не нужна:
rm -rf /home/http/public_html/wiki/config
Если есть желание, то можно перейти к тонкой настройке mediawiki путём редактирования файла LocalSettings.php . У меня это желание было потому что меня что-то дёрнуло сделать красивый адрес для страниц. Не http://wiki.site.ru/index.php?Заглавная_страница ,а http://wiki.site.ru/wiki/Заглавная_страница . Для решения этой задачи ищем в файле LocalSettings.php строчку, начинающуюся с переменной $wgScriptPath , и добавляем между ней и строчкой ниже:
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
В первой переменой /wiki/ и есть тот красивый адрес, который заменит index.php. В качестве него можно указать всё, что угодно, хоть один символ /w/ . Но если Вы измените здесь значение /wiki/ на что-то другое, то не забудьте в файле /etc/apache2/sites-available/ru.site.wiki найти строчку:
Alias /wiki /home/http/public_html/wiki/index.php
И заменить в ней /wiki на Ваше новое значение.
Если есть желание, то можно ещё пошаманить в файле LocalSettings.php , но для меня это было достаточно, поэтому я его сохранил и пошёл заполнять wiki.
Для повышения безопасности wiki можно добавить в LocalSettings.php;
$wgGroupPermissions['*']['read'] = false; // Запрет просмотра страниц не авторизованным пользователям.
$wgGroupPermissions['*']['edit'] = false; // Запрет редактирования без авторизации.
$wgGroupPermissions['*']['createpage'] = false; // Запрет на создание страниц без авторизации.
$wgGroupPermissions['*']['createtalk'] = false; // Запрет на создание страниц с обсуждениями
$wgGroupPermissions['*']['createaccount'] = false; // Запретить регистрацию.
$wgGroupPermissions['*']['writeapi'] = false; // Запрет использование API
Посмотреть описание всех доступных прав.
Посмотреть какими правами обладают группы можно посмотреть на странице в Вашей wiki ( вместо /index.php? использовано /wiki/): http://wiki.site.ru/wiki/Служебная:ListGroupRights
После проделанного перестал работать сам вики, и директория в которой лежат все мои разработки. Теперь что мне делать?
Александр, первое — не паниковать.
Второе, просмотрел все команды, ничего страшного не делалось. Попробуйте отключить хост:
sudo a2ensite ru.site.wiki
sudo /etc/init.d/apache2 restart
Если после этого ваши проекты заработают, то в файле /etc/apache2/sites-available/ru.site.wiki допущена ошибка. Если нет — будем думать.
Zeboton, заработали остальные проекты, после отключения ru.site.wiki . Возможно произошёл конфликт где то с DNS. Я не стал заморачиваться с «красивым адресом», поэтому прописал символьную ссылку на mediawiki в /var/www
Александр.