DokuWiki «Докувики» — это простая в использовании вики совместимая со стандартами и лёгкая в использовании, предназначена в первую очередь для создания разного рода документации. Докувики ориентирована на команды разработчиков, рабочие группы и небольшие компании. Все данные хранятся в простых текстовых файлах, поэтому для работы не требуется система база данных (СУБД). Простой, но мощный синтаксис облегчает создание структурированных текстов и позволяет при необходимости читать файлы данных даже за пределами Wiki. Автор проекта — Андреас Гор (Andreas Gohr).
На основе DokuWiki, немецкой компанией, создана ICKEwiki (существует Free версия) - корпоративная вики для малого и среднего бизнеса. Если вы только выбираете себе движок Вики под свой проект, обратите внимание на ресурс WikiMatrix, где в удобной форме можно сравнить возможности всех популярных WIKI.
Выбор подходящего хостинга для DokuWiki — это важный шаг для тех, кто планирует развернуть мощную и простую в управлении вики-систему. DokuWiki отличается легкостью в установке и низкими требованиями к серверу, так как работает на PHP без использования баз данных. Однако для стабильной работы рекомендуется выбрать хостинг, предлагающий хорошую производительность PHP, поддержку регулярных резервных копий.
В этом руководстве по установке DokuWiki на веб-сервер Nginx (php-fpm), подразумевается, что Nginx уже установлен, если нет изучите статью Простая установка LEMP (LNMP) сервера (Linux Nginx PHP MySQL). В этом примере я не использую панель управления хостингом, все делаем руками.
Системной окружение, в котором будем устанавливать DokuWiki:
# nginx -v nginx version: nginx/1.20.2
# php -v PHP 7.4.29 (cli) (built: Apr 12 2022 10:55:38) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.29, Copyright (c), by Zend Technologies
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
tar xzf dokuwiki-stable.tgz -C /var/www/dokuwiki cp -Ra dokuwiki-2020-07-29/* /var/www/dokuwiki
chown -R nginx:nginx /var/www/dokuwiki
Приступим к настройки виртуального хоста в Nginx. Придумывать велосипед не надо, а скачиваем уже готовый конфигурационный файл (раздел Full working config) с официального сайта Nginx для нашего вики-движка DokuWiki.
Мой виртуальный хост будет описан в файле /etc/nginx/sites-enabled/wiki.darkfire.cf.conf, вставляем в него скопированный конфиг. Я изменял такие параметры:
Сохраняем, проверяем синтаксис и перегружаем nginx.
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # systemctl reload nginx && systemctl status php-fpm
certbot -d wiki.darkfire.cf
Ниже рабочий конфиг, с настройкой редиректа и SSL сертификатами. Вы можете его просто скопировать, поменяв значения выше, и после этого выпустите или замените пути к SSL сертификату. Также в этом файле включена поддержка http2.
server { server_name wiki.darkfire.cf; root /var/www/dokuwiki; autoindex off; client_max_body_size 15M; client_body_buffer_size 128k; index index.html index.htm index.php doku.php; access_log /var/log/nginx/wiki.access.log; error_log /var/log/nginx/wiki.error.log; add_header X-Frame-Options "DENY" always; add_header X-Content-Type-Options "nosniff" always; location / { try_files $uri $uri/ @dokuwiki; } location ~ ^/lib.*\.(gif|png|ico|jpg)$ { expires 30d; } location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location ~ /\. { access_log off; log_not_found off; deny all; } location ~ ~$ { access_log off; log_not_found off; deny all; } # Sitemap rewrite ^/sitemap\.xml\.gz$ /doku.php?do=sitemap permanent; 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:9003; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } location ~ /(data|conf|bin|inc)/ { deny all; } location ~ /\.ht { deny all; } listen 443 ssl http2; # managed by Certbot ssl_certificate /etc/letsencrypt/live/wiki.darkfire.cf/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/wiki.darkfire.cf/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = wiki.darkfire.cf) { return 301 https://$host$request_uri; } # managed by Certbot server_name wiki.darkfire.cf; listen 80; return 404; # managed by Certbot }
Жмем Save. Установка DokuWiki закончена. Не забудьте удалить install.php!
Используете веб-сервер, который не использует .htaccess-файлы, вы должны вручную защитить свою установку. Следующие папки не должны быть доступны из сети: bin, conf, data, inc. Чтобы проверить, должны ли вы настроить права доступа попытайтесь получить доступ к http://yourserver.com/dokuwiki/data/pages/wiki/dokuwiki.txt. Вы не должны получить доступ к файлу по этому пути. Если вы видите исходный код - у вас проблема с безопасностью сервера.
Эти настройки должны присутствовать в конфигурационном файле вашего виртуального хоста в Nginx:
location ~ /(data|conf|bin|inc)/ { deny all; } location ~ /\.ht { deny all; }
Я посчитал излишним описывать эту процедуру, так как она подробно расписана на официальном сайте. В установке DokuWiki под Apache (mod_php) нет никаких подводных камней, в отличии от установки в Nginx. Тем более если вы используете какую-либо панель управления хостингом, просто скопируйте архив с DokuWiki, распакуйте в директорию сайта и запустите инсталлятор.
Все файлы конфигурации хранятся в директории ./conf или в /etc/dokuwiki при установке из Debian-пакета.
«Основные» файлы обычно поставляются вместе с «ДокуВики», в то время как «локальные» файлы обычно создаются администратором вики.
Если какие-то настройки позволено сделать в локальном файле, то лучше сделать именно там, а не в основном файле. Это позволит избежать проблем при обновлении, т. к. основные файлы при нём меняются, а локальные — нет.
«Основной» файл | «Локальный» файл | Тип настроек | Краткое описание |
---|---|---|---|
dokuwiki.php | local.php local.protected.php | см. ниже | основные настройки вики |
acronyms.conf | acronyms.local.conf | abbreviations | автоматические подсказки аббревиатур |
entities.conf | entities.local.conf | entities | автоматические подстановки текста |
interwiki.conf | interwiki.local.conf | interwiki | сокращения ссылок интервики |
mime.conf | mime.local.conf | MIME | настройки mime-типов для загрузки на сервер |
smileys.conf | smileys.local.conf | smileys | подстановки графических смайлов |
acl.auth.php | см. acl | настройки листов доступа | |
users.auth.php | см. acl | имена пользователей и пароли | |
license.php | license.local.php | license | перечень доступных лицензий |
scheme.conf | scheme.local.conf | urlschemes | ключевые слова URL-ссылок |
mediameta.php | exif | возможные метаданные для изображений | |
wordblock.conf | wordblock.local.conf | blacklist | спамерские чёрные списки |
userscript.js | javascript | Пользовательские JavaScript-улучшения | |
userstyle.css | css | Пользовательские CSS-улучшения |
Согласно мануалу, для безопасного добавления дополнительного HTML или PHP к шаблону и чтобы при обновлении движка DokuWiki ваш код не затирался, создайте ваш файл в любом каталоге шаблонов (lib/tpl/dokuwiki/) или ваш conf/ каталоге. Файлы которые подключаются автоматически:
Название файла | Позиция вашего HTML |
---|---|
meta.html | Внутри HTML <head>, для добавления дополнительных CSS стилей или мета-заголовков |
sidebarheader.html | В верху сайдбара, перед текстом (если существует) |
sidebarfooter.html | В низу сайдбара, после текста (если существует) |
pageheader.html | На странице статьи, выше текстового контента |
pagefooter.html | На странице статьи, ниже текстового контента |
header.html | Шапка сайта, выше logo и wiki title |
footer.html | Подвал сайта, после любого контента на странице |
social.html | Ниже header.html используйте его, чтобы добавить кнопки социальных сетей (например, Facebook, Twitter, LinkedIn и т.д.). |
topheader.html | В самом верху страницы сразу после тега <body> |
Карта сайта (sitemaps) создаётся, если включена опция «sitemap» в панели управления DokuWiki. По умолчанию, значении 0, чтобы включить sitemap поставить значение, например 5 (то есть данные в sitemap.xml будут обновляться один раз в 5 дней).
Файл карты находится во вложенном каталоге «cache» вашей установки «ДокуВики». Он будет доступен по ссылке: http://your_domain/dokuwiki/?do=sitemap. В зависимости от наличия поддержки gzip в вашем PHP, файл будет именоваться «sitemap.xml.gz» (если gzip доступен) или «sitemap.xml» (если gzip недоступен). Почти во всех современных установках PHP поддержка gzip включена, поэтому файл будет называться скорее всего «sitemap.xml.gz».
Dokuwiki sitemap.xml и настройка Яндекс. Мой настройки для Яндекс Вебмастера, чтобы он корректно увидел sitemap.xml. Добавляем директивы Host и Sitemap в файл robotx.txt.
User-agent: * Disallow: /bin/ Disallow: /conf/ Disallow: /inc/ Disallow: /lib/ Disallow: /vendor/ Host: wiki.dieg.info Sitemap: https://wiki.dieg.info/sitemap.xml.gz
Для Apache в файл .htaccess добавляем строку
RewriteRule ^sitemap\.xml\.gz$ doku.php?do=sitemap [L]
Для Nginx, в раздел server добавляем строку редиректа:
rewrite ^/sitemap\.xml\.gz$ /doku.php?do=sitemap permanent;
Чтобы не вставлять напрямую на сайт коды Яндекс Метрики и Google Analytics правильно всего использовать GTM. Регистрируем наш сайт в Google Tag Manager (https://tagmanager.google.com)
1 способ:
После установки Google Tag Manager прекрасно работает, но на сайте появляются 2 критические ошибки Валидатор Nu Html Checker W3. Подобных ошибок, да и всех остальных, рекомендую избегать, особенно для информационных сайтов!
2 способ: Ручками добавляем код в файлы шаблона
</head> <body> <!-- Google Tag Manager (noscript) -->
Здесь будьте осторожны, код может быть затерт при обновлении Dokuwiki. Наслаждайтесь работой без ошибок!!
Все найденные плагин для подключения Google AdSense показались мне старыми: adsense-plugin. Потому принял решение код вставить ручками в шаблон DokuWiki.
Включение рекламы AdSense на правом сайдбаре:
Наслаждаемся рекламой на своем сайте!:))
Для добавления кода Adsense после первого H1, нужно отредактировать функцию header в файле <dokuwiki installation directory>/inc/parser/xhtml.php.
Находим строку
$this->doc .= "</h$level>".DOKU_LF;
и заменяем ее на код
$this->doc .= "</h$level>"; if ($level == 1) { $this->doc .= ' <!--noindex--> КОД из AdSense <!--/noindex--> <br />'; } $this->doc .= DOKU_LF;
Insert Code
{{youtube>LWM8YxwqEU}}
В следующем примера расположить видео по центру, большого размера.
{{ youtube>LWM8YxwqEU?large }}
Необычное применение движка DokuWiki как landing page для товарных офферов. Устанавливаем дополнения через админку dokuwiki:
{{ youtube>8zqrLLIwte0?large }}
{{gallery>https://wow2.top/wp-content/uploads/2022/04/windows-klavishi-win-tab-pereklyuchenie-virtualnyh-rabochih-stolov.jpg}}
Одно изображение
{{gallery>:1200px-sqlite370.svg.png}}
Для подключения Bootstrap возможностей к DokuWiki используют плагин Bootstrap Wrapper Plugin. Установите плагин, используя диспетчер плагинов (Plugin Manager).
Чтобы плагин работал у вас должна быть установлен шаблон с поддержкой Bootstrap, например Bootstrap3 Template.
Этот плагин добавляет в вашу «ДокуВики» несколько компонентов Bootstrap. Значения иконок для них можно брать например здесь https://getbootstrap.com/docs/3.3/components/, подробнее о поддерживаемых плагином иконках здесь.
Для использования вписываем в страницу в таком виде
{{htmlmetatags>metatag-robots=() metatag-keywords=(apfel,bananne,birne) metatag-description=(Allgemeiner Obstbauer) metatag-media-og:image=(:wiki:image.jpg) metatag-og:description=(anything else) metatag-og:any=(anything else 2) }}
Результат
<meta name="robots" content="noindex,nofollow"/> <meta name="keywords" content="apfel,bananne,birne"/> <meta name="description" content="Allgemeiner Obstbauer"/> <meta property="og:image" content="http://localhost/lib/exe/fetch.php?media=wiki:image.jpg"/> <meta property="og:description" content="anything else"/> <meta property="og:any" content="anything else 2"/>
~~Title: Page Title plugin for DokuWiki ~~
Если возникла надобность при выводе на принтер удалить какие-то объекты или изменить шрифт, можно дополнить/изменит файл lib/tpl/dokuwiki/css/print.css. Это изменит тип media CSS. Например, скроем при печати :
#footer2d, #dokuwiki__header, #dokuwiki__footer { display: none; }
В DokuWiki предусмотрено добавление пользовательских стилей изначально. Для этого требуется создать файл conf/userstyle.css, в который и нужно вписывать CSS правила. Например, для картинок, окруженных div c классом начинающимся на iam_img, задать круглые углы:
div[class^="iam_img"] img { border-radius: 10px; }
Другие варианты добавления CSS смотрите по ссылке: DokuWiki CSS Stylesheets
Подробно: Загрузка JavaScript
function doFollow1(){ jQuery("a[href^='https://example.com']").removeAttr("rel"); } jQuery(function () { jQuery(document).click(doFollow1); });
1 вариант:
ul { list-style: square outside; }
на
ul { list-style-image: url('images/tambourine_16x16.png'); } /* your image */
В оглавлении страницы заменить файл /lib/tpl/dokuwiki/images/toc-bullet.png
2 вариант: В файле lib/tpl/dokuwiki/css/_links.css добавляем css код list-style: lower-greek;:
.dokuwiki .page ul li, .dokuwiki .aside ul li { /*list-style: hangul-consonant;*/ list-style: lower-greek; }
В DokuWiki нельзя настраивать 404 страницы, для этого нужно использовать плагины.
Плагины DokuWiki для настройки 404 страницы:
Каким образом мне в текстовый файл (т.е. страницу wiki) подгрузить или сделать include из php файла?
Ответ: datatables и SQL query plugin
После установки, плагин SQL Query Plugin настраивается через Configuration Manager.