Установка и настройка DokuWiki на CentOS 8

О чём эта инструкция
DokuWiki — лёгкий и гибкий Open Source вики-движок без необходимости использования СУБД. Он популярен за простоту синтаксиса, удобство бэкапа и интеграции. В этой статье описан реальный рабочий сценарий развёртывания на CentOS 8 с Nginx и PHP-FPM, с опциями HTTPS и рекомендациями по безопасности и эксплуатации.
Важно: руководствуйтесь политикой безопасности вашей организации при открытии внешнего доступа и выборе сертификатов.
Ключевые варианты использования
- Локальная внутренняя документация для команды (Intranet).
- Публичная документация и базовая база знаний.
- Вики для DevOps-процессов и runbook’ов.
Требования
- Веб-сервер, поддерживающий PHP (Nginx, Apache, Lighttpd, LiteSpeed, IIS).
- PHP версии 5.6 или новее; рекомендуются актуальные стабильные ветки PHP 7.x/8.x.
- Пользователь с правами sudo.
- Домены/поддомены для HTTPS (по желанию).
Предварительные условия
- Чистая инсталляция CentOS 8.
- Наличие непривилегированного пользователя с sudo.
- Желательно: доступ к DNS для создания записей A/AAAA для домена.
Начальные шаги
Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)Настройте часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты системы:
sudo dnf update -yУстановите полезные утилиты:
sudo dnf install -y curl wget vim git unzip socat bash-completion epel-releaseЗаметка: для новых версий PHP иногда удобнее использовать репозиторий Remi; если вам нужна конкретная версия PHP, установите и настройте соответствующий репозиторий.
Шаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения:
sudo dnf install -y php php-cli php-fpm php-gd php-xml php-zipПроверьте доступные модули PHP:
php -m
ctype
curl
exif
fileinfo
...Проверьте версию PHP:
php --version
# PHP 7.2.11-1-(cli) (built: Oct 26 2019 14:14:18) ( NTS )Запустите и включите PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceСовет: CentOS 8 в стандартном репозитории может предоставлять конкретные версии PHP; если требуется PHP 7.4/8.0, подключите и используйте официальный репозиторий Remi.
Шаг 2 — Получение сертификата Let’s Encrypt (опционально)
HTTPS не обязателен, но настоятельно рекомендуется для защиты трафика.
Мы используем acme.sh — лёгкий клиент для получения сертификатов от Let’s Encrypt.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверка версии:
acme.sh --version
# v2.8.2Получение сертификатов RSA и ECDSA (замените example.com на ваш домен):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging, чтобы не расходовать квоты Let’s Encrypt.
Сертификаты будут располагаться в папках вида /home/username/example.com и /home/username/example.com_ecc.
Список выданных сертификатов:
acme.sh --listСоздайте целевые директории для копирования сертификатов в систему, например /etc/letsencrypt:
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите сертификаты (пример с перезагрузкой nginx):
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"acme.sh автоматически позаботится о продлении сертификатов.
Важно: если nginx слушает 80/443, при использовании –standalone временно остановите nginx или используйте вебвызов (webroot) для валидации.
Шаг 3 — Установка и конфигурация Nginx
DokuWiki может работать на любом поддерживающем PHP веб-сервере. Здесь используется Nginx.
Установка nginx:
sudo dnf install -y nginxПроверка версии:
sudo nginx -v
# nginx version: nginx/1.14.2Создайте файл конфигурации виртуального хоста:
sudo vim /etc/nginx/conf.d/dokuwiki.confПример конфигурации Nginx (скопируйте и отредактируйте server_name и пути к сертификатам):
server {
listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECC
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
server_name wiki.example.com;
root /var/www/dokuwiki;
index index.html index.htm index.php doku.php;
client_max_body_size 15M;
client_body_buffer_size 128K;
location / {
try_files $uri $uri/ @dokuwiki;
}
location ^~ /conf/ { return 403; }
location ^~ /data/ { return 403; }
location ~ \.ht { deny all; }
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1 last;
}
location ~ \\.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Примечания:
- Если PHP-FPM слушает unix-сокет (например /run/php-fpm/www.sock), замените fastcgi_pass 127.0.0.1:9000 на fastcgi_pass unix:/run/php-fpm/www.sock;
- Настройте server_name в соответствии с вашим DNS.
Проверьте конфигурацию nginx:
sudo nginx -tПерезагрузите nginx:
sudo systemctl reload nginx.serviceШаг 4 — Установка DokuWiki
Создайте корневую папку для сайта:
sudo mkdir -p /var/www/dokuwikiПерейдите в неё и загрузите стабильный архив DokuWiki:
cd /var/www/dokuwiki
sudo wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgzРаспакуйте и переместите файлы (название папки внутри архива может отличаться в зависимости от релиза — проверьте точное имя):
sudo tar xvf dokuwiki-stable.tgz
sudo rm dokuwiki-stable.tgz
sudo mv dokuwiki-2018-04-22b/* . && sudo mv dokuwiki-2018-04-22b/.* .
sudo rmdir dokuwiki-2018-04-22b/Настройте владельца файлов на пользователя веб-сервера. В CentOS чаще корректно использовать nginx:nginx или apache:apache в зависимости от сервера. Для Nginx:
sudo chown -R nginx:nginx /var/www/dokuwikiОтредактируйте конфигурацию PHP-FPM, чтобы процесс работал от пользователя nginx (если требуется):
sudo vim /etc/php-fpm.d/www.conf
# Установите user = nginx и group = nginxПерезапустите сервис PHP-FPM (замените имя сервиса при необходимости):
sudo systemctl restart php7.3-fpm.serviceПримечание: имя сервиса php7.3-fpm.service может отличаться; используйте systemctl list-units | grep php для проверки.
Откройте установщик в браузере: http://wiki.example.com/install.php и следуйте инструкциям инсталлятора. Установщик проверит доступность PHP-функций и права на файлы, создаст администратора и базовые ACL.
Шаг 5 — Доступ к веб-интерфейсу и финальная настройка
Откройте в браузере http://example.com/install.php (или соответствующий поддомен). Следуйте шагам установки: укажите имя администратора, email, пароль и базовые настройки.

Заполните поля и нажмите Save. После успешной установки вы увидите подтверждение:

Перейдите в ваш новый вики и войдите:



После успешной установки обязательно удалите скрипт install.php:
sudo rm /var/www/dokuwiki/install.phpSELinux, firewall и права доступа
- Firewall (firewalld): откройте порты 80 и 443 при публикации:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload- SELinux: если SELinux включён, убедитесь, что контексты файлов корректны:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/dokuwiki(/.*)?"
sudo restorecon -Rv /var/www/dokuwikiЕсли semanage недоступен, установите пакет policycoreutils-python-utils.
- Права: обычно директории data/ и conf/ должны быть доступны для записи веб-серверу. Не давайте прав на запись всем пользователям.
Проверка и отладка
- nginx: sudo nginx -t; журнал — /var/log/nginx/error.log
- php-fpm: sudo systemctl status php-fpm; журналы — /var/log/php-fpm/www-error.log (зависит от конфигурации)
- SELinux: sudo ausearch -m avc -ts recent
Типичные проблемы и решения:
- 502 Bad Gateway: проверьте, что PHP-FPM слушает по TCP 127.0.0.1:9000 или сокету; укажите корректный fastcgi_pass.
- Ошибки прав доступа при записи: проверьте владельца nginx:nginx и SELinux-контекст.
- 403 при обращении к /conf/ или /data/: это ожидаемое поведение — эти папки должны быть закрыты для внешнего доступа.
Альтернативные подходы и расширения
- Веб-сервер: если вы предпочитаете Apache, используйте модуль PHP-FPM или mod_php. Конфигурация DokuWiki для Apache проще для начинающих.
- SSL: вместо acme.sh можно использовать Certbot или управлять сертификатами вручную.
- Плагины: сообщество DokuWiki предоставляет плагины для поиска, аутентификации (LDAP), визуального редактора и бэкапов.
- Хранилище: DokuWiki хранит контент в файловой системе, что упрощает бэкап и миграцию.
Безопасность и эксплуатация
- Регулярно обновляйте DokuWiki и плагины.
- Следите за правами на /conf/ и /data/.
- Настройте резервное копирование: архивируйте папки data/, conf/ и inc/ и храните копии вне сервера.
- Настройте мониторинг доступности и логирования.
Роли и чек-листы
Администратор сервера:
- Установить CentOS 8 и обновить пакеты.
- Установить PHP и Nginx.
- Получить и установить сертификаты.
- Настроить firewall и SELinux.
- Настроить бэкап и мониторинг.
Администратор вики:
- Пройти страницу установки и создать суперпользователя.
- Настроить базовую политику ACL.
- Установить необходимые плагины и шаблон.
Разработчик/Интегратор:
- Интегрировать аутентификацию (LDAP/SSO), если нужно.
- Настроить CI/CD для шаблонов и плагинов.
Критерии приёмки
- Доступность главной страницы DokuWiki по HTTPS (если настроено).
- Авторизация администратора выполнена успешно.
- Установщик install.php удалён.
- Папки conf/ и data/ закрыты для внешнего доступа (код ответа 403).
- Работоспособность поиска и редактирования страниц.
Частые ошибки и способы их устранения
- Ошибка 502/504: убедитесь, что php-fpm запущен и настроен адрес fastcgi_pass.
- Права записи: chown -R nginx:nginx /var/www/dokuwiki и проверьте SELinux-контексты.
- Проблемы с LetsEncrypt: проверьте доступность порта 80 и актуальность DNS-записей.
Краткая методология развёртывания (мини-SOP)
- Подготовка ОС и резервной стратегии.
- Установка PHP и веб-сервера.
- Получение сертификатов (опционально).
- Развёртывание файлов DokuWiki и настройка прав.
- Запуск веб-интерфейса и проверка функционала.
- Настройка бэкапов и мониторинга.
Когда этот подход не подходит
- Нужна масштабируемая база данных и сложные реляционные запросы — DokuWiki хранит данные в файловой системе.
- Нужна встроенная многопользовательская репликация / кластеризация — DokuWiki не рассчитан на горизонтальную масштабируемость без внешних решений.
Факты и рекомендации
- Бэкап: копируйте папки data/ и conf/ и архивируйте их регулярно.
- Плагины: тестируйте плагины в тестовой среде перед установкой в прод.
Резюме
- DokuWiki легко установить на CentOS 8 с Nginx и PHP-FPM.
- HTTPS и правильные права доступа повышают безопасность.
- SELinux и firewall требуют дополнительной проверки при развёртывании.
Ссылки
Короткое объявление: вы успешно установили DokuWiki и получили готовую к использованию вики-систему; на следующем этапе — настройте плагины и политику доступа под нужды команды.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента