воскресенье, 16 марта 2014 г.

Установка и настройка dokuwiki

На этот раз я опишу настройку dokuwiki - небольшой wiki-системы на PHP, не использующей базы данных SQL. Поскольку не так давно я начал использовать вместо Lighttpd веб-сервер nginx, я опишу два варианта настройки.

1. Вариант 1 - настройка Lighttpd

Установим веб-сервер Lighttpd и PHP:
# apt-get install lighttpd php5-cgi
Для того, чтобы dokuwiki работала на отдельном домене, нужно исправить файл конфигурации /etc/lighttpd/conf-available/50-dokuwiki.conf до следующего состояния:
$HTTP["host"] == "wiki.domain.tld" {
  server.document-root = "/usr/share/dokuwiki"

  $HTTP["url"] =~ "^/" {
    server.follow-symlink = "enable"
  }

  $HTTP["url"] =~ "/(\.|_)ht" {
    url.access-deny = ( "" )
  }

  $HTTP["url"] =~ "^/(bin|data|inc|conf)" {
    url.access-deny = ( "" )
  }
}
В случае, если dokuwiki должна работать из каталога сайта, можно создать такой файл конфигурации /etc/lighttpd/conf-available/50-dokuwiki.conf:
$HTTP["host"] == "domain.tld" {
  $HTTP["url"] =~ "^/wiki" {
    server.document-root = "/usr/share/dokuwiki"

    $HTTP["url"] =~ "^/" {
      server.follow-symlink = "enable"
    }

    $HTTP["url"] =~ "/(\.|_)ht" {
      url.access-deny = ( "" )
    }

    $HTTP["url"] =~ "^/(bin|data|inc|conf)" {
      url.access-deny = ( "" )
    }
  }
}
Осталось включить поддержку fastcgi, PHP в fastcgi и только что созданный файл конфигурации:
# lighty-enable-mod fastcgi
# lighty-enable-mod fastcgi-php
# lighty-enable-mod dokuwiki
Чтобы настройки веб-сервера вступили в силу, нужно его перезапустить:
# /etc/init.d/lighttpd restart
2. Вариант 2 - настройка nginx и php5-fpm

Установим веб-сервер и менеджер управления FastCGI-процессами PHP:
# apt-get install nginx-light php5-fpm
php5-fpm устанавливается с преднастроенным пулом процессов в файле /etc/php/fpm/pool.d/www.conf, так что дополнительные настройки не требуются. Но при желании можно настроить имеющийся пул или создать отдельный пул.

Теперь добавим файл /etc/nginx/sites-available/dokuwiki с настройками для dokuwiki, если нужно настроить её на отдельном домене:
server {
  listen 80;

  server_name wiki.domain.tld;

  root /usr/share/dokuwiki;
  index index.php;

  location /bin/ {
    deny all;
  }

  location /data/ {
    deny all;
  }

  location /inc/ {
    deny all;
  }

  location /conf/ {
    deny all;
  }

  location ~ \.ht {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/var/run/dokuwiki.sock;
    fastcgi_index index.php;

    include fastcgi_params;
  }
}
Или, если dokuwiki должна работать из отдельного каталога на имеющемся сайте, можно добавить в файл конфигурации этого сайта следующие настройки:
location /wiki/bin/ {
  deny all;
}

location /wiki/data/ {
  deny all;
}

location /wiki/inc/ {
  deny all;
}

location /wiki/conf/ {
  deny all;
}

location /wiki {
  alias /usr/share/dokuwiki;
  index index.php;

  location ~ \.ht {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;

    include fastcgi_params;
  }
}
Осталось включить использование конфигурации сайта, если вы настраивали dokuwiki на отдельном домене:
# cd /etc/nginx/sites-enabled
# ln -s /etc/nginx/sites-available/dokuwiki .
И перезапустить nginx, чтобы его новые настройки вступили в силу:
# /etc/init.d/nginx restart
Можно было бы написать ещё и третий вариант настройки - для использования Lighttpd совместно с php5-fpm, но я не стану этого делать. Кому понадобится такой вариант - тот разберётся в нём сам.

3. Установка dokuwiki

Установка dokuwiki проста - нужно лишь установить соответствующий пакет:
# apt-get install dokuwiki
В процессе установки будет задано несколько вопросов:







После установки можно зайти в веб-интерфейс с паролем администратора, который мы указали при установке:



Я также пользуюсь темой arctic для dokuwiki. Пакет с этой темой можно взять у меня: dokuwiki-arctic-theme_0.0.20081104_all.deb

4. Вариант 1 - настройка dokuwiki через файлы конфигурации

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

Для первичной настройки достаточно лишь прописать в файл /etc/dokuwiki/local.php несколько настроек:
$conf['title'] = 'wiki.domain.tld'; # Название wiki, которое будет на ней отображаться
$conf['license'] = '';              # Название лицензии, под которой выкладываются материалы
$conf['lang'] = 'ru';               # Язык интерфейса
$conf['useacl'] = 1;                # Включает использование списков ограничения доступом
$conf['superuser'] = '@admin';      # Группа для администраторов
$conf['template'] = 'arctic';       # Используемая тема
Любую из настроек можно не вписывать - у них у всех есть значения по умолчанию.

В файле /etc/dokuwiki/plugins.local.php я отключил использование плагина, отсылающего разработчикам статистику использования dokuwiki:
<?php
$plugins['popularity']      = 0;
?>
В файле acl.auth.php можно настраивать права доступа к определённым разделам wiki. Например, вот так можно ограничить доступ к разделу private для незарегистрированных пользователей:
*               @ALL          1
*               @user         8
private:*       @ALL          0
В теме arctic, которую я использую, в файле /etc/dokuwiki2/themes/arctic/default.php я удаляю из настроек всех правых и левых панелей страницу index, поскольку для каждого раздела я создаю вручную страницу sidebar, которая и выполняет роль оглавления раздела.

5. Вариант 2 - настройка dokuwiki через веб

Для того, чтобы можно было менять настройки из самой DokuWiki, нужно назначить права доступа веб-сервера к каталогу /etc/dokuwiki:
# chgrp www-data /etc/dokuwiki
# chmod ug=rwx,o=rx /etc/dokuwiki
Также нужно поменять права доступа веб-сервера к файлу /etc/dokuwiki/local.php и, по желанию, к другим файлам в этом каталоге:
# chown www-data /etc/dokuwiki/local.php
# chmod u=rw,go=r /etc/dokuwiki/local.php
После этих манипуляций можно настраивать dokuwiki через меню "Управление".

Вот так выглядит настроенная мной dokuwiki с темой arctic:

2 комментария:

ddo комментирует...

Разделение доступа - прекрасная штука. В своё время создавал корпоративный Wiki на MediaWiki, и там это не так просто.

Есть опыт использования dokuwiki в достаточно больших проектах, скажем под сотню участников? Насколько стабилен? Нет ли проблем с производительностью?

morbo комментирует...

Лично у меня такого опыта нет, однако на работе используется dokuwiki с интеграцией в LDAP и с использованием групп оттуда.

Не знаю точно, сколько там активных пользователей, занимающихся наполнением системы - возможно около 30 человек. Читают, соответственно, гораздо больше.

Не мне судить о стабильности, поскольку не я администрирую систему, но как пользователь не замечал никаких проблем. С производительностью всё должно быть хорошо, поскольку система не использует SQL для хранения данных - используются текстовые файлы.