Установка DokuWiki на FreeBSD Печать
Добавил(а) Гусев Александр   

Задача

Выполнить установку Dokuwiki на ОС FreeBSD. Получить рабочий прототип системы любым способом, даже жертвуя оптимальностью, производительностью, безопасностью.

Исходные данные

  • ОС FreeBSD 8.2-RELEASE-p4 amd64.
  • Web-сервер Nginx (без поддержки SSL).
  • Использование PHP.
  • Использование Spawn.
  • Работа Dokuwiki осуществляется под системной учетной записью www.

Вместо вступления

Понадобилась wiki для написания технических статей на разные темы с логическими связями между собой. Применение плоской структуры (файлы статей в каталогах на файловой системе) не устраивала по причине ограничения создаваемых зависимостей (одна). А вот материал, который можно связать между собой логически (http линками) не привязываясь к физическому нахождению самой статьи, соответствует ожиданиям от системы.

Требования, которые выдвигались:

· Open Source.
· Простота в установке\настройке.
· Работа на FreeBSD.
· Работа в окружении Jail.
· Работа только в защищённом сетевом периметре (специальных требований по безопасности нет).
· Количество одновременный работающих клиентов – не более 10.
· Отсутствие базы данных.
. Тонкий клиент http (https – опционально).
· Наличие поиска.
. Работа в кодировке UTF-8.
· Необходимость создания множественных логических ссылок на другие статьи.
· Известность проекта.
· Расширяемость функционала плагинами.

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

Структура статьи блочная, для улучшенного понимания, редактирование текста, исправления ошибок и неточностей, а также для ввода новых блоков, когда во время введения нового функционала сценарий установки будет меняться. В заглавии компонент присутствует их общее название, но в примерах фигурируют версии применяемого ПО.

Есть отдельная глава «Общая сборка системы» в который приведены сценарии сборки системы в зависимости от применяемых версий установленного ПО.

Некоторых описанные подходы могут «смущать», но я считаю, что лучше людей сразу сориентировать в своих начальных познаниях, нежели «корчить» из себя знатока. Как бы там не было приведённая инсталляции системы работающая, а как говорил Ульянов (Ленин) - «Критерий истины заключается в практике».

Инсталляция необходимых компонентов
Web-сервер Nginx (без поддержки SSL)

Install: nginx 1.0.12_1,1 (без поддержки SSL)

cd /usr/ports/www/nginx
make config

Options for nginx 1.0.12_1,1:

[X] HTTP_MODULE               Enable HTTP module
[X] HTTP_REWRITE_MODULE       Enable http_rewrite module
[X] HTTP_STATUS_MODULE        Enable http_stub_status module
[X] WWW                       Enable html sample files
make install clean

PS: Порты от которых зависит данное ПО был установлены с параметрами по умолчанию.

Использование PHP

Install: php5 5.3.10_1

/usr/ports/lang/php5
make config

Options for php5 5.3.10_1:

[X] CLI        Build CLI version
[X] CGI        Build CGI version
make install clean

PS: Порты от которых зависит данное ПО был установлены с параметрами по умолчанию.

Install: php5-xml-5.3.10_1

cd /usr/ports/textproc/php5-xml
make install clean

Install: php5-session-5.3.10_1

cd /usr/ports/www/php5-session
make install clean
Использование Spawn

Install: spawn-fcgi-1.6.3

cd /usr/ports/www/spawn-fcgi
make install clean

PS: Порты от которых зависит данное ПО было установлено с параметрами по умолчанию.

Использование Dokuwiki

Install: dokuwiki-2012-01-25.tgz "Angua"

  • Архив дистрибутива dokuwiki - dokuwiki-2012-01-25.tgz;
  • Рабочий каталог Dokuwiki - /usr/local/www;
  • Системный пользователь ОС от имени которого будет работ Web-сервер и которому необходимы полные права на каталоги\файлы дистрибутива - www;

Команды для распаковки и подготовки работы дистрибутива Dokuwiki:

set restoreDir=/usr/local/www
set workUser=www
tar -xzv -f dokuwiki-2012-01-25.tgz -C $restoreDir
mv $restoreDir/dokuwiki-2012-01-25 $restoreDir/dokuwiki
chown -R "$workUser":"$workUser" $restoreDir/dokuwiki
chmod -R 770 $restoreDir/dokuwiki
Конфигурирование компонентов
Config: php5 5.3.10_1

Использования стандартных настроек PHP.
Так как по умолчанию конфигурационный файл php.ini не создаётся, его необходимо создать из шаблона.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Config: spawn-fcgi-1.6.3

Реализовать автоматический старт spawn-fcgi во время загрузки ОС

Конфигурационный файл /etc/rc.conf

spawn_fcgi_enable="YES"

Ручной запуск spawn_fcgi

/usr/local/etc/rc.d/spawn-fcgi start

Пример отклика об спешном старте spawn_fcgi:

Starting spawn_fcgi.
spawn-fcgi: child spawned successfully: PID: 56535
Config: nginx 1.0.12_1,1 (без поддержки SSL)

Реализовать автоматический старт nginx во время загрузки ОС

Конфигурационный файл /etc/rc.conf

nginx_enable="YES"

"Холодный пуск" Dokuwiki с шаблоном первоначальной настройки

Конфигурационный файл /usr/local/etc/nginx/nginx.conf

# First start config dokuwiki
user www;
worker_processes  1;
events {
    worker_connections  10;
}
    http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
gzip  on;
server {
       listen   xxx.xxx.xxx.xxx:80; #ip:port на которых будет работать dokuwiki
       server_name      C.ru;       # полное доменное имя хоста, указывается 
                                    # в адресной строке браузера
       root /usr/local/www/dokuwiki;
       index install.php;
       try_files $uri $uri/ /install.php;
       location ~ .php$ {
       include        fastcgi_params;
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index install.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               }
       }
}

Ручной запуск nginx

/usr/local/etc/rc.d/nginx start

Пример отклика об спешном старте nginx:

Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.

Первоначальное конфигурирование

Первоначальное конфигурирование сводится к заполнению полей:

  • Wiki Name
  • Superuser
  • Real name
  • E-Mail
  • Password
  • once again
  • Initial ACL policy
  • Please choose the license you want to put your content under
  • Choose your language

Запуск Dokuwiki с основной настройкой

  • Остановка компонентов Dokuwiki:
/usr/local/etc/rc.d/nginx stop; /usr/local/etc/rc.d/spawn-fcgi stop
  • Конфигурационный файл с основной настройкой /usr/local/etc/nginx/nginx.conf
# Work config Dokuwiki
user www;
worker_processes  1;
events {
    worker_connections  10;
}
http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
gzip  on;
server {
       listen   xxx.xxx.xxx.xxx:80; #ip:port на которых будет работать dokuwiki
       server_name            C.ru; # полное доменное имя хоста, которое 
                                    # указывается в адресной строке браузера
       root /usr/local/www/dokuwiki;
       index index.php doku.php;
       try_files $uri $uri/ /duku.php;
       location ~ .php$ {
       include        fastcgi_params;
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index doku.php;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               }
       }
}
  • Старт компонентов Dokuwiki:
/usr/local/etc/rc.d/spawn-fcgi start; /usr/local/etc/rc.d/nginx start
Общая сборка системы
Сценарий №1 - "Angua" + nnginx 1.0.12_1,1 (без поддержки SSL) + php5 5.3.10_1 + spawn-fcgi-1.6.3
  • Install: nginx 1.0.12_1,1 (без поддержки SSL);
  • Install: php5 5.3.10_1;
  • Install: php5-xml-5.3.10_1;
  • Install: php5-session-5.3.10_1;
  • Install: php5-session-5.3.10_1;
  • Install: dokuwiki-2012-01-25.tgz «Angua»;
  • Config: php5 5.3.10_1;
  • Config: spawn-fcgi-1.6.3;
  • Config: nginx 1.0.12_1,1 (без поддержки SSL);

[Ссылки]

1. DokuWiki.org.