Вики-сайты не теряют своей популярности. Существует множество вики-приложений, каждое из которых имеет свои преимущества. Среди них следует выделить DokuWiki – легковесное и простое в настройке приложение, которое хранит данные в простых файлах и не требует базы данных, что значительно упрощает процессы миграции и масштабирования.
Данное руководство поможет установить DokuWiki и Nginx на виртуальный сервер Ubuntu 12.04.
Установка Nginx и PHP
Как уже говорилось, DokuWiki не нуждается в реляционных СУБД, для работы этого приложения нужны только веб-сервер и язык для обработки данных.
Установка Nginx
В данном руководстве в качестве веб-сервера используется Nginx. Легковесный сервер Nginx прост в установке и настройке.
Пакеты можно загрузить из репозитория Ubuntu:
sudo apt-get update
sudo apt-get install nginx
После этого нужно запустить сервер:
sudo service nginx start
Откройте в браузере IP-адрес или домен, чтобы просмотреть приветственную страницу Nginx.
server_ip_or_domain
Если страница открывается, значит, установка прошла успешно.
Установка PHP
Приложение DokuWiki написано в PHP, потому необходимо установить PHP и несколько других компонентов. В отличие от Apache, по умолчанию Nginx не включает модуль для обработки PHP, потому его нужно установить отдельно.
Также нужно установить библиотеку для обработки PHP-файлов. Для установки можно использовать apt.
sudo apt-get install php5-fpm php5-gd
После установки нужно отладит настройки безопасности сервиса. Если запрашиваемый файл не существует, процессор PHP по умолчанию выполняет другой похожий на него файл; такое поведение небезопасно и его нужно изменить.
Откройте конфигурационный файл:
sudo nano /etc/php5/fpm/php.ini
Найдите параметр cgi.fix_pathinfo и отредактируйте его так:
cgi.fix_pathinfo=0
Сохраните и закройте файл.
После этого нужно настроит процессор для поддержки сокетов вместо портов на локальном интерфейсе. Откройте файл с правами root:
sudo nano /etc/php5/fpm/pool.d/www.conf
Найдите директиву listen и измените её значение:
listen = /var/run/php5-fpm.sock
Сохраните и закройте файл.
Теперь конфигурация на стороне PHP завершена. Перезапустите сервис, чтобы активировать изменения настроек.
sudo service php5-fpm restart
Настройка Nginx
Процессор PHP уже настроен, но пока что Nginx не знает, как передать ему запросы. Это нужно изменить.
Откройте файл стандартного виртуального хоста Nginx.
Примечание: Виртуальные хосты в терминологии Nginx называются блоками server.
sudo nano /etc/nginx/sites-available/default
Этот файл имеет такой вид (комментарии опущены для удобства):
server {
root /usr/share/nginx/www;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
}
В код этого файла нужно внести несколько существенных изменений. Для начала нужно добавить директиву listen и указать порт 80; эту строку можно просто раскомментировать в файле:
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
. . .
После этого нужно переопределить индексный файл; индексные файлы PHP должны обрабатываться первыми.
server {
listen 80;
root /usr/share/nginx/www;
index index.php index.html index.htm;
. . .
Измените имя сервера; замените localhost доменом или IP-адресом сервера. Это нужно для корректной обработки запросов:
. . .
root /usr/share/nginx/www;
index index.php index.html index.htm;
server_name server_domain_or_IP_address;
location / {
. . .
Закомментируйте раздел документации, так как на данный момент он настроен на запросы, исходящие от самого сервера.
Также нужно включить обработку ошибок; эти строки, скорее всего, уже есть в этом файле, их нужно просто раскомментировать:
. . .
# location /doc/ {
# alias /usr/share/doc/;
# autoindex on;
# allow 127.0.0.1;
# deny all;
# }
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
. . .
После настроек обработки ошибок можно определить блок location, который будет передавать запросы процессору PHP. Если этот код уж есть в файле, раскомментируйте и откорректируйте его. Следует обратить внимание на директиву try_files, которая проверяет наличие PHP-файлов перед обработкой запроса, и fastcgi_param, которая передаёт скрипты процессору для выполнения.
. . .
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
. . .
После этого блока следует ещё один закомментированный блок настроек, который можно раскомментировать. Эти настройки блокируют использование файлов .htaccess, запрещающих в Apache доступ к ряду каталогов; сервер Nginx не нуждается в этом.
Затем нужно добавить новый блок кода, который закроет внешний доступ к некоторым внутренним каталогам DokuWiki.
. . .
location ~ /\.ht {
deny all;
}
location ~ /(data|conf|bin|inc)/ {
deny all;
}
}
Настройка веб-сервера завершена. На данный момент настройки выглядят так:
server {
listen 80;
root /usr/share/nginx/www;
index index.php index.html index.htm;
server_name server_domain_or_IP_address;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location ~ /(data|conf|bin|inc)/ {
deny all;
}
}
Сохраните и закройте файл.
Теперь нужно перезапустить веб-сервер, чтобы обновить его настройки.
sudo service nginx restart
Тестирование PHP
Прежде чем приступить к настройке DokuWiki, нужно убедиться, что процессор PHP может обрабатывать файлы.
Если сервер настроен неверно, файлы PHP будут загружаться, но не обрабатываться.
Для начала создайте файл в каталоге document root (/usr/share/nginx/www). Добавьте в него нижеприведённый код:
sudo sh -c 'echo "<?php phpinfo(); ?>" > /usr/share/nginx/www/info.php'
После этого откройте этот файл в браузере. Для этого используйте такую ссылку:
server_domain_or_IP_address/info.php
Если настройка выполнена правильно, на экране появится страница с информацией о PHP и системе (версии программ, расширения, интерфейсы и т.д.).
Важно! После тестирования необходимо удалить этот файл, так как он предоставляет доступ к конфиденциальным данным сервера.
После этого можно переходить к установке и настройке DokuWiki.
sudo rm /usr/share/nginx/www/info.php
Установка и настройка DokuWiki
Теперь сервер полностью готов к установке и настройке приложения DokuWiki.
Перейдите в домашний каталог и загрузите последнюю версию DokuWiki:
cd ~
wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
В каталоге появится архив, который нужно распаковать:
tar xzvf dokuwiki-stable.tgz
После этого архив можно удалить:
rm dokuwiki-stable.tgz
Переименуйте каталог, выберите для него более удобное имя, например, просто wiki:
mv doku* wiki
Переместите каталог DokuWiki в root-каталог сайта, чтобы веб-сервер получил доступ к этим файлам.
sudo mv wiki /usr/share/nginx/www/
Теперь приложение DokuWiki доступно в браузере по ссылке:
server_domain_or_IP_address/wiki
Теперь нужно отладить настройки безопасности; если на данном этапе этого не сделать, то сервер не сможет получить доступ к некоторым точкам системы. Откройте каталог:
cd /usr/share/nginx/www/wiki
Откройте доступ к следующим каталогам вики-приложения:
sudo chown -R www-data data
sudo chown www-data lib/plugins/
sudo chown www-data conf
Теперь можно приступать к установке DokuWiki в веб-браузере.
Откройте браузер и перейдите по ссылке:
server_domain_or_IP_address/wiki/install.php
На экране должна появиться страница с формой установки DokuWiki, которую нужно заполнить.
DokuWiki Installer
Wiki name:
Enable ACL (recommended)
[...]
Это единственная страница настроек, которую нужно заполнить. Здесь же можно выбрать название для вики и создать учётную запись администратора.
Политика ACL – очень важная настройка; она определяет доступ пользователей к вики-сайту. В меню Initial ACL Policy выберите наиболее подходящий для вас режим (Open, Public, Closed).
Примечание: ACL – Access Control List, список управления доступом.
Нажмите Save.
Готово! Установка DokuWiki успешно завершена, и приложение полностью готов к работе. Удалите установочный скрипт:
sudo rm /usr/share/nginx/www/wiki/install.php
Заключение
Теперь на сервере есть легковесное приложение для создания вики-сайтов и управления ими. Функции DokuWiki можно расширить при помощи плагинов и шаблонов.