Корпоративная Википедия на DokuWiki
DokuWiki «Докувики» — это простая в использовании вики совместимая со стандартами и лёгкая в использовании, предназначена в первую очередь для создания разного рода документации. Докувики ориентирована на команды разработчиков, рабочие группы и небольшие компании. Все данные хранятся в простых текстовых файлах, поэтому для работы не требуется система база данных (СУБД). Простой, но мощный синтаксис облегчает создание структурированных текстов и позволяет при необходимости читать файлы данных даже за пределами Wiki. Автор проекта — Андреас Гор (Andreas Gohr).
На основе DokuWiki, немецкой компанией, создана ICKEwiki (существует Free версия) - корпоративная вики для малого и среднего бизнеса. Если вы только выбираете себе движок Вики под свой проект, обратите внимание на ресурс WikiMatrix, где в удобной форме можно сравнить возможности всех популярных WIKI.
Хостинг для DokuWiki
Выбор подходящего хостинга для DokuWiki — это важный шаг для тех, кто планирует развернуть мощную и простую в управлении вики-систему. DokuWiki отличается легкостью в установке и низкими требованиями к серверу, так как работает на PHP без использования баз данных. Однако для стабильной работы рекомендуется выбрать хостинг, предлагающий хорошую производительность PHP, поддержку регулярных резервных копий.
Как установить DokuWiki на веб-сервер Nginx и php-fpm
В этом руководстве по установке 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
- Распаковка скачанного архива и создание корневого каталога (/var/www/dokuwiki) для файлов сайта:
tar xzf dokuwiki-stable.tgz -C /var/www/dokuwiki cp -Ra dokuwiki-2020-07-29/* /var/www/dokuwiki
- Изменить владельца, в моем случае все процессы веб-сервера запущены от пользователя с именем nginx
chown -R nginx:nginx /var/www/dokuwiki
Приступим к настройки виртуального хоста в Nginx. Придумывать велосипед не надо, а скачиваем уже готовый конфигурационный файл (раздел Full working config) с официального сайта Nginx для нашего вики-движка DokuWiki.
Мой виртуальный хост будет описан в файле /etc/nginx/sites-enabled/wiki.darkfire.cf.conf, вставляем в него скопированный конфиг. Я изменял такие параметры:
- server_name на название нашего сайта, в моем случае буду использовать домен wiki.darkfire.cf;
- путь к логам access_log error_log (можете эти директивы удалить или закоментировать);
- root указываем путь к файлам сайта
- fastcgi_pass меняем на настройки вашей системы
Сохраняем, проверяем синтаксис и перегружаем nginx.
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # systemctl reload nginx && systemctl status php-fpm
- Установим бесплатный SLL Let’s Encrypt, также certbot настроит автоматический 301 редирект с http на https.
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 }
- И только теперь переходим к инсталлятору DokuWiki по адресу https://[ваш_домен]/install.php. Заполняем поля инсталлятора:
- Wiki Name. Задаёт опцию title вики. Это имя будет выводиться в верхнем правом углу шаблона по умолчанию (default).
- Enable ACL. Остальные опции будут доступны, только если используется список контроля доступа (ACL). «ДокуВики» не требует ACL, но его использование рекомендовано, потому что без него доступ к интерфейсу администрирования будет закрыт.
- Superuser. В этом поле указывается имя будущей учётной записи администратора. В имени требуется использовать только ASCII-символы в нижнем регистре. Использование пробелов не разрешается.
- Full Name. Реальное имя администратора.
- E-Mail. Электронный почтовый адрес администратора. Расширенная проверка введённого адреса не проводится (проверяется только наличие сивола «@»), тем не менее здесь требуется указать действительный адрес.
- Password и Once Again. Дважды вводим пароль администратора.
- Initial ACL policy. Установщик позволяет вам настроить начальный набор правил ACL. Выбор конкретного варианта зависит прежде всего от того, как вы собираетесь использовать Wiki. Это только начальный этап установки, в дальнейшем вы сможете изменить правила ACL.
- Allow users to register themselves. Если флажок не установлен, пользователи не могут зарегистрироваться. Но если вести Вики будет один человек, а не команда, то флажок устанавливать не надо.
- Please choose the license you want to put your content under (Выберите лицензию, под которой вы хотите поместить свой контент). Информация о лицензии будет видна в футере вашей Вики.
- Once a month, send anonymous usage data to the DokuWiki developers (Раз в месяц отправлять анонимные данные об использовании разработчикам «ДокуВики»). По умолчанию включена, можете выключить.
Жмем Save. Установка DokuWiki закончена. Не забудьте удалить install.php!
Безопасность DokuWiki в Nginx
Используете веб-сервер, который не использует .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)
Я посчитал излишним описывать эту процедуру, так как она подробно расписана на официальном сайте. В установке DokuWiki под Apache (mod_php) нет никаких подводных камней, в отличии от установки в Nginx. Тем более если вы используете какую-либо панель управления хостингом, просто скопируйте архив с DokuWiki, распакуйте в директорию сайта и запустите инсталлятор.
Настройки DokuWiki после установки
- Транслитерация в именах страниц: полная транслитерация
- Удобочитаемые адреса (URL): .htaccess
- Задержку индексирования, измененной страницы, устанавливаем в 1 день, вместо 5 по умолчанию (Значение по умолчанию: 60*60*24*5 (60 сек. × 60 мин. × 24 ч. × 5 дн. — т. е. пять дней)). indexdelay:60*60*24*1 Для выключения отложенного индексирования установить её в «0».
- sitemap:5 - тем самым мы включаем создание файла sitemap.xml (подробнее смотрите ниже)
Файлы конфигурации 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> |
Карта сайта DokuWiki sitemap.xml
Карта сайта (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.
- 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;
2 способа добавит Google Tag Manager в Dokuwiki
Чтобы не вставлять напрямую на сайт коды Яндекс Метрики и Google Analytics правильно всего использовать GTM. Регистрируем наш сайт в Google Tag Manager (https://tagmanager.google.com)
1 способ:
- Устанавливаем компонент https://www.dokuwiki.org/plugin:googletagmanager
- В меню "Настройки вики"⇒"Googletagmanager" задаем ID нашего сайта из кода выданного GTM.
После установки Google Tag Manager прекрасно работает, но на сайте появляются 2 критические ошибки Валидатор Nu Html Checker W3. Подобных ошибок, да и всех остальных, рекомендую избегать, особенно для информационных сайтов!
2 способ: Ручками добавляем код в файлы шаблона
- Создаем файл lib/tpl/dokuwiki/meta.html и в него добавляем основной код. Это безопасное добавление, после обновления движка, это код не затрется.
- lib/tpl/dokuwiki/main.php добавляем вторую часть код, после body
</head> <body> <!-- Google Tag Manager (noscript) -->
Здесь будьте осторожны, код может быть затерт при обновлении Dokuwiki. Наслаждайтесь работой без ошибок!!
Добавление кода Adsense в DokuWiki шаблон и sidebar
Все найденные плагин для подключения Google AdSense показались мне старыми: adsense-plugin. Потому принял решение код вставить ручками в шаблон DokuWiki.
Включение рекламы AdSense на правом сайдбаре:
- Шаблон должен поддерживать сайдбар, DokuWiki шаблон по умолчанию его поддерживает.
- Включить в настройках: "Параметры «Докувики»"→Основные параметры→sidebar Значение по умолчанию:sidebar
- Перейдите по адресу http://your-wiki.com/doku.php?id=sidebar, нажмите кнопку «Создать страницу», отредактируйте эту страницу, сохраните, и боковая панель готова. Это всё, сохраненные изменения будут отображаться на боковой панели. Страница не должна быть пустой, я поставил только знак точки.
- В lib/tpl/dokuwiki создадим sidebarheader.html в который добавим код AdSense
Наслаждаемся рекламой на своем сайте!:))
Как добавить кода Adsense в DokuWiki после H1?
Для добавления кода 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;
Плагины и шаблоны DokuWiki
- Плагин note - данные плагин позволяет выделить текст в виде заметки. http://dokuwiki.ru/plaginy?do=show
- СacheRevisionsEraser - очищает кэш и удаляет старые версии документов.
- codebutton - добавляет кнопку позволяющую вставлять код, например
Insert Code
- Navigation Issues - шаблон
- plugin:boxes- позволяет оформлять «боксы» в самых различных цветовых комбинациях.
- Для вставки видео с youtube я использую плагин Video Share Plugin, синтаксис:
{{youtube>LWM8YxwqEU}}
В следующем примера расположить видео по центру, большого размера.
{{ youtube>LWM8YxwqEU?large }}
Необычное применение движка DokuWiki как landing page для товарных офферов. Устанавливаем дополнения через админку dokuwiki:
- Bureaucracy Plugin HTML-формы для сбора данных
- Включение/выключение sidebar: перейдите по адресу http://your-wiki.com/doku.php?id=sidebar, нажмите кнопку «Создать страницу», отредактируйте эту страницу, сохраните, и боковая панель готова.
- Как вставлять видео на лендинг: Video Share Plugin. Пример вставки большого видео по центру страницы
{{ youtube>8zqrLLIwte0?large }}
- Как вставить галереи изображений: Gallery Plugin. Пример загрузки изображений со стороннего сайта:
{{gallery>https://wow2.top/wp-content/uploads/2022/04/windows-klavishi-win-tab-pereklyuchenie-virtualnyh-rabochih-stolov.jpg}}
Одно изображение
{{gallery>:1200px-sqlite370.svg.png}}
Шаблон Bootstrap3 и плагин подключение Bootstrap Wrapper Plugin
Для подключения Bootstrap возможностей к DokuWiki используют плагин Bootstrap Wrapper Plugin. Установите плагин, используя диспетчер плагинов (Plugin Manager).
Чтобы плагин работал у вас должна быть установлен шаблон с поддержкой Bootstrap, например Bootstrap3 Template.
Этот плагин добавляет в вашу «ДокуВики» несколько компонентов Bootstrap. Значения иконок для них можно брать например здесь https://getbootstrap.com/docs/3.3/components/, подробнее о поддерживаемых плагином иконках здесь.
- Jumbotron
- Text
- Tooltips
- Thumbnails
- Wells
- Labels
- Nav & Tabs (with dropdown)
- Page heading
- Lead
- List Group
- Progress Bars
- Affix
- Carousel
- Accordion
Пример Callouts
Так выглядит Callouts danger- Modal (with remote attribute)
- Popover
4 SEO плагина для DokuWiki
- HtmlMetaTags Plugin SEO плагин, позволяет задавать open graph, description и т.д.
Для использования вписываем в страницу в таком виде
{{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"/>
- PageTitle Plugin - задать тег title для страницы
~~Title: Page Title plugin for DokuWiki ~~
DokuWiki print.css вывод на печать
Если возникла надобность при выводе на принтер удалить какие-то объекты или изменить шрифт, можно дополнить/изменит файл lib/tpl/dokuwiki/css/print.css. Это изменит тип media CSS. Например, скроем при печати :
- print.css
#footer2d, #dokuwiki__header, #dokuwiki__footer { display: none; }
DokuWiki добавить CSS файл
В DokuWiki предусмотрено добавление пользовательских стилей изначально. Для этого требуется создать файл conf/userstyle.css, в который и нужно вписывать CSS правила. Например, для картинок, окруженных div c классом начинающимся на iam_img, задать круглые углы:
div[class^="iam_img"] img { border-radius: 10px; }
Другие варианты добавления CSS смотрите по ссылке: DokuWiki CSS Stylesheets
DokuWiki загрузка своего javascript кода
Подробно: Загрузка JavaScript
- Для внешней ссылки удалить атрибут rel="nofollow", чтобы разрешить поисковым системам следовать по ней (передача веса). Создадим файл conf/userscript.js Он автоматически загрузится
function doFollow1(){ jQuery("a[href^='https://example.com']").removeAttr("rel"); } jQuery(function () { jQuery(document).click(doFollow1); });
DokuWiki заменить значок неупорядоченного списка ul
1 вариант:
- Подготавливаем картинку 16х16 пикселей.
- Заливаем её lib/tpl/dokuwiki/images/tambourine_16x16.png
- В файле lib/tpl/dokuwiki/css/basic.less исправить определение
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 страницы, для этого нужно использовать плагины.
Плагины DokuWiki для настройки 404 страницы:
- Redirect Plugin Andreas Gohr Перенаправляет запросы к страницам на другие страницы или внешние сайты с помощью центрального файла конфигурации.
- notfound Plugin Andreas Gohr - отображать настраиваемую страницу, когда страница не существует
- Page Redirect Plugin Elan Ruusamäe, David Lorentsen 301 редирект страницы вики на другую страницу вики
DokuWiki вывод данных из MySQL
Каким образом мне в текстовый файл (т.е. страницу wiki) подгрузить или сделать include из php файла?
Ответ: datatables и SQL query plugin
- Плагин DataBase2 не поддерживается 2014-11-25
- Плагин SQL Query Plugin и используется в связке с DataTables Plugin для сортировки и поиска
После установки, плагин SQL Query Plugin настраивается через Configuration Manager.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах