Содержание

Инсталляция DokuWiki

Для того, чтобы развернуть на своей площадке такой же сайт необходимо установить и настроить ядро DokuWiki, установить и настроить тему, установить и настроить необходимые плагины.

Ниже представлен примерный перечень шагов с описаниями, которые может быть необходимо выполнить:

  1. Работать в соответствии с инструкцией по установке Install:
    • Скачать с сайта DokuWiki последний стабильный
    • Распаковать архив, загрузить через FTP или SSH содержимое архива на сервер в целевую директорию (например, в корень WWW).
    • Создать пустой файл changes.log в папке data (либо командой touch data/changes.log, либо копированием пустого файла через FTP)
    • Установить папкам data и conf и подпапкам атрибуты 755 или 777
    • Установить всем файлам в data и conf атрибуты 644 или 666
    • Переименовать conf/users.auth.php.dist в conf/users.auth.php и установить атрибуты 644 или 666
    • Переименовать conf/acl.auth.php.dist в conf/acl.auth.php и установить атрибуты 644 или 666
    • Переименовать conf/local.php.dist в conf/local.php и установить атрибуты 644 или 666
    • Создать первую страницу - средствами DokuWiki (кнопка Create Page)
  2. В соответствии с руководством по улучшению безопасности security
    • Переименовать папку data в другое имя, например data21) и внести соответствующее изменение в conf/local.php
      $conf['savedir'] = '/data2';
  3. Включить поддержку авторизации в соответствии с acl
    • Исправить conf/local.php
      $conf['useacl']       = 1;        // this enables the ACL feature
      $conf['superuser']    = '@admin'; // admin group is superuser
    • Зарегистрировать в системе пользователя - средствами DokuWiki
    • В файле conf/users.auth.php исправить группу у пользователя на группу суперюзера (указать после последнего двоеточия admin) - пользователь приобретёт администраторские права
    • На первой странице (start) зайти в Admin/Access Control List Management и исправить права доступа для пространства имён, группа ALL оставить только чтение, нажать «Обновить»
  4. Настроить DokuWiki в соответствии с config
    • Зайти в DokuWiki под админским логином в раздел Admin/Configuration Manager (кнопка снизу) и поставить language=ru, применить настройки
    • В «Управление/Настройки Вики» (бывшее Admin/Configuration Manager):
      • Права для создаваемых директорий - 0777 (чтобы не было проблем с бэкапом и управлением через FTP)
      • Права для создаваемых файлов - 0666 (чтобы не было проблем с бэкапом и управлением через FTP)
      • Включить отладку (отключите!) - убрать флажок
      • Транслитерация в именах страниц - полная транслитерация (чтобы не было ссылок с %D0%A4…)
      • Разрешить подписку на изменения - да
      • Удобочитаемые адреса (URL) - Средствами DokuWiki
  5. установить плагин plugin:confmanager и добавить ссылки на yandex.ru и google.ru:
    • Вставить в conf/interwiki.conf строки:
      ya        http://www.yandex.ru/yandsearch?text=
      google.ru http://www.google.ru/search?q=
    • Загрузить в lib/images/interwiki файлы :ya.gif и :google.ru.gif
  6. Настроить дату сервера в соответствии с tips:timezone, ниже приведён пример для Московского времени:
    • Исправить файл conf/local.protected.php, добавив после <?php строку
      putenv("TZ=Europe/Moscow");// - для PHP4
      date_default_timezone_set("Europe/Moscow"); // - для PHP5
  7. Добавить определения новых типов файлов (example.mpp, example.vsd, , example.rar, example.djvu)
    • В conf/mime.conf дописать следующие строки2):
      mpp     application/vnd.ms-project
      vsd     application/vnd.visio
      mp3     audio/mpeg
      rar     application/x-rar-compressed
      djvu    application/x.djvu
      djv     application/x.djvu

      если установить плагин plugin:txtconf, то добавить эти строки в mime.conf можно с помощью этого плагина.

Темы

На текущий момент на сайте используется стандартная тема, которая уже изначально включает функционал бокового меню

Better Navigation Template - тема, в которой название сайта помещено в левый угол, сделана подсветка активной страницы в списке посещённых, добавлено боковое меню для разделов сайта.

После установки темы необходимо скопировать в папку темы из папки стандартной темы lib\tpl\default\ файлы _admin.css, _mediaoptions.css и _linkwiz.css, а также добавить пару строк в файл style.ini в раздел [stylesheets]:

_admin.css     = screen
_linkwiz.css   = screen
_mediaoptions.css   = screen

Тема, использованная на этом сайте - Better Navigation Template с небольшими исправлениями.

ach Template - тема с левым боковым меню, встроенным обсуждением для каждой страницы, удобное управление.

Дополнительные плагины

Никогда, никогда не используйте программу MS Notepad3) для редактирования файлов в UTF-8 кодировке!

Эта программа вставляет тройку символов в самое начало файла (EF BB BF), по которым определяет, что это UTF-8 кодировка, что иногда приводит к сбоям в PHP скриптах и порче разметки сайтов.

Конечно, эти символы не есть личная придумка Microsoft - это один из способов отмечать UTF-8 документы. Но MS Notepad не умеет сохранять документы без этого префикса.

:!: Используйте редакторы, умеющие правильно работать с UTF-84).

Google Analitycs

Плагин для подключения статистики от Google Analytics.

Надо модифицировать шаблон, вставив в файл lib/tpl/…./main.php следующие строки:

было:
</body>
</html>
 
стало:
</body>
  <?php
    if (file_exists(DOKU_PLUGIN.'googleanalytics/code.php')) include_once(DOKU_PLUGIN.'googleanalytics/code.php');
    if (function_exists('ga_google_analytics_code')) ga_google_analytics_code();
  ?>
</html>

BookmarkMe

Вставляет блок кнопок для создания закладок на публичных серверах типа http://del.icio.us

Вставляет ссылки на служебные функции/специальные страницы DokuWiki. Например, Все страницы.

{{actionlink>[action]|[title]}}

Элемент action может принимать следующие значения:

Элемент title является необязательным. Он позволяет вставить другой текст вместо стандартного 'Редактировать страницу', 'Старые версии', 'Недавние изменения', и т.д.

Chem

Позволяет автоматически форматировать простые химические формулы, например: 10C2H5OH, 2H3PO4, Al(OH)3, Fe3+, 15[Cat]32+[Anion]23-, N0, N+1, 238Pu

<chem>10C2H5OH, 2H3PO4, Al(OH)3, Fe3+, 15[Cat]3|2+[Anion]2|3-, N0, N+1, 238^Pu</chem>

СacheRevisionsEraser

Очищает кэш и удаляет старые версии документов

Выводит список ссылок на текущую страницу:


Search Index Manager

Перестраивает индекс для полнотекстового поиска

Иногда плагин не работает и выдаёт ошибку

Warning: array_keys(): The first argument should be an array in ...\inc\indexer.php on line 56
Warning: join(): Bad arguments in ...\inc\indexer.php on line 56

В таком случае может помочь исправление в файле inc\indexer.php:

// добавить следующую строку
if (!is_array($links)) { $links = Array($links); }
// перед строчкой 
$tmp = join(' ',array_keys($links));

Note

Оформляет текст как заметку (:!: Выглядит по-разному в Explorer'е и Firefox'е)

В таком виде можно оформлять всевозможные комментарии в справочных руководствах
заметка-подсказка
важная заметка
заметка-предупреждение

PageMove

Переименовывает и переносит страницы между разными пространствами имён

Discussion

Добавляет форму отправки комментариев к странице, фактически позволяет разместить на странице ветку форума. Пример смотри в конце этой страницы.

Плагин не совместим с предыдущей версией плагина Blog, составной частью которого он является. Старую версию надо удалить перед инсталляцией Discussion.

ICQ

Выводит номер ICQ с отображением текущего статуса пользователя (запрашивает картинку с сервера ICQ): 123456789

Highlight

Выделяет текст цветом: выделение по умолчанию выделение нужным цветом (red)

текст текст текст текст

FreeMind

Выводит файлы сделанные в FreeMind в виде интерактивного Flash или Java.

Пример использования:

#freemind?type=flash(dokuwiki.mm)#

#freemind?type=flash(dokuwiki.mm)#

BackupTool

Позволяет делать архивную копию страниц, предыдущих версий, meta-данных, media-файлов, файлов конфигурации, тем и плагинов.

Замечание: Данный плагин использует библиотеку PEAR. Если эта библиотека не установлена, то вы получите сообщение о невозможности создания архивной копии.

Инфа на будущее

Миграция со старых версий

Когда обновляется DokuWiki со старой версии, которая ещё не поддерживала функцию «транслитерация» сталкиваешься с проблемой, что получается практически нечитабельная структура файлов и директорий.

Например : «%D0%BA%D1%8B%D1%80%D0%B3%D1%8B%D0%B7%D1%81%D1%82%D0%B0%D0%BD.txt» это тоже самое, что «кыргызстан.txt»

Это происходит потому что имена файлов в UTF-8 подвергаются url-кодированию.

В последних версиях DokuWiki есть опция «транслитерация» для того, чтобы изменить такое поведение. Однако простая смена настроек DokuWiki недостаточна - все старые файлы переименованы не будут.

Для того, чтобы конвертировать нечитабельную файловую структуру в «транслитерированный формат» был написан следующий скрипт:

<?php
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
require_once(DOKU_INC.'inc/utf8.php');
 
 
/**
 * Copy a file, or recursively copy a folder and its contents, and clean up the filenames according to the dokuwiki UTF-8 
 *
 * @original_author      Aidan Lister <aidan@php.net>
 * @link        http://aidanlister.com/repos/v/function.copyr.php
 * @param       string   $source    Source path
 * @param       string   $dest      Destination path
 * @return      bool     Returns TRUE on success, FALSE on failure
 */
function copyr($source, $dest)
{
	$dest2=cleanID($dest);
	echo $source."->".$dest." ->$dest2<br/>";
    // Simple copy for a file
    if (is_file($source)) {
        return copy($source, $dest2);
    }
 
    // Make destination directory
    if (!is_dir($dest)) {
        mkdir($dest2);
 
	}
 
    // Loop through the folder
    $dir = dir($source);
    while (false !== $entry = $dir->read()) {
        // Skip pointers
        if ($entry == '.' || $entry == '..') {
            continue;
        }
 
        // Deep copy directories
        if ($dest !== "$source/$entry") {
            copyr("$source/$entry", "$dest/$entry");
        }
    }
 
    // Clean up
    $dir->close();
    return true;
}
 
copyr("/srv/www/htdocs/data/","/srv/www/htdocs/datanew/"); // пути к папкам на сервере (исходный и конечный)
 
function cleanID($id,$ascii=false){
  $id = trim(urldecode($id));
  $id = utf8_strtolower($id);
  $id = utf8_romanize($id);
  utf8_deaccent($id,-1);
  $id = preg_replace('#\'+#','_',$id);
  return($id);
}
 
?>

В скрипте надо исправить путь к директории с данными, поместить его в папку bin и запустить из браузера www.yoursite.ru/bin/convert.php

После этого будет создана папка с копией данных но в транслитерированном формате. Теперь осталось только зайти в настройки DokuWiki, исправить путь к папке с данными на datanew и выбрать вариант «Полная транслитерация в именах страниц», а также «Использовать первый заголовок вместо имени».

Также может потребоваться чистка кэша DokuWiki (для этого можно использовать соответствующий плагин).

Также не помешает проверить структуру созданных папок и файлов на корректность — в именах файлов могут появиться символы типа «'» (если в названии страницы был твёрдый знак).

Смотри также

1)
В некоторых случаях нужно указывать абсолютный путь (точка перед слэшем), './data2'. Например, плагин СacheRevisionsEraser не работал, пока не был указан именно второй вариант.
2)
для DJVU файлов правильный mime тип image/x.djvu, однако в таком случае они будут переданы на обработку в графическую библиотеку, которая попытается (безуспешно) сделать иконку. С типом application/x.djvu DokuWiki поступает проще - делает для таких файлов ссылку на скачивание и даёт стандартную иконку.
3)
он же Блокнот
4)
Текстовые редакторы, в которых можно без проблем работать с файлами Dokuwiki: Notepad++ (Опция «Кодировать в UTF-8 без BOM»), или встроенные в FAR, либо в Total Commander, а также множество других более современных программ
5)
Способ работает только в случае, если DokuWiki находится на Unix сервере, к которому есть непосредственный доступ или доступ через SSH.