Организация аналога Викисклада для собственной Вики

6 апреля 2011 г.

Вики-движки широко распространились на просторах интернета. Вики-разметка и множество удобных расширений позволяют охватить широкий спектр задач: от создания странички для личных заметок до корпоративного центра знаний.

Предположим, что ваш путь — установка вики на виртуальном хостинге. Данное решение встречается достаточно часто — не требуется поднимать Apache и настраивать MySQL, а для отдельных хостингов и мучаться с ocaml и latex. Доступ к виртуальному серверу зачастую надежнее, чем к корпоративному.

Минусов в таком решении два:

  1. Вики сама провоцирует на написание документации, что приводит к достаточно быстрому её росту. Как следствие, мы наталкиваемся на ограничения по объему доступной дисковой памяти платного хостинга.
  2. Размещать на внешних серверах некоторые корпоративные файлы — не фен-шуй.


Решить наши проблемы можно, если хранить все прикладываемые к вики-страницам файлы (картинки, pdf, телеметрию измерений и прочее) на рабочем сервере.

MediaWiki позволяет реализацию этой концепции без дополнительных плясок с бубном.

Устанавливаем на рабочем сервере MediaWiki. В моем случае в качестве сервера выступал слабенький QNAP (сетевая система хранения данных (NAS)) с постоянным внешним IP. На нём с завода запущен Apache и MySQL, RAID из двух дисков. Но linux достаточно урезанный, что не позволяет быстро собрать полноценный latex, ocalm и т.д., а следовательно, полноценно использовать MediaWiki.

В MediaWiki на QNAP разрешаем закачивать файлы, для чего добавляем/изменяем в LocalSettings.php:

$wgEnableUploads = true;
$wgCheckFileExtensions = false;

Настраиваем права пользователей по своему усмотрению.

В MediaWiki на платном хосте в аналогичный файл добавляем:

$wgForeignFileRepos[] = array(
 'class' => 'ForeignAPIRepo',
 'name' => 'servercommon', # Как назовете, так и будет...
 'apibase' => 'http://YOURFILESERVER/wiki/api.php', #Адрем к API сервера в QNAP
 'hashLevels' => 2,
 'fetchDescription' => true,
 'descriptionCacheExpiry' => 43200, # Настройки кэширования файлов, если оно
 'apiThumbCacheExpiry' => 86400, # у вас включено
);

$wgUploadNavigationUrl = "http://YOURFILESERVER.ru/wiki/index.php/Special:Upload"; # Теперь в первой вики "Загрузить файл" будет указывать на страницу загрузки в QNAP

$wgEnableUploads = true; # Делаем доступной "Загрузить файл"

Теперь вы можете использовать вторую вики (на рабочем сервере) так, как Википедия использует Викисклад — загружать файлы на вторую вики, а в первой использовать тот же синтаксис, что используете для её собственных файлов. Например,
[[File:MyPic.png]]

Теги: рубрика Сайтостроение