Установка DokuWiki на Nginx в Ubuntu 12.04

Вики-сайты не теряют своей популярности. Существует множество вики-приложений, каждое из которых имеет свои преимущества. Среди них следует выделить 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 можно расширить при помощи плагинов и шаблонов.

Tags: , , ,

Добавить комментарий