Перейти до змісту

Сервер DokuWiki

Передумови та припущення

  • Екземпляр Rocky Linux, встановлений на сервері, контейнері або віртуальній машині.
  • Зручно змінювати конфігураційні файли з командного рядка за допомогою редактора (наші приклади тут використовуватимуть vi, але ви можете замінити свій улюблений редактор).
  • Деякі знання про веб-програми та налаштування.
  • У нашому прикладі для налаштування буде використано Apache Sites Enabled. Перегляньте це, якщо необхідно.
  • У цьому прикладі ми будемо використовувати «example.com» як доменне ім’я.
  • Щоб підвищити привілеї, ви повинні бути адміністратором або вміти sudo
  • Однак, припускаючи нову інсталяцію операційної системи, це не є обов’язковою умовою

Вступ

Документація в організації може приймати різні форми. Наявність репозиторію, на який можна посилатися на цю документацію, є неоціненною. Вікі (що на гавайській мові означає швидкий) — це спосіб централізованого зберігання документації, нотаток процесів, корпоративних баз знань і навіть прикладів коду. ІТ-фахівці, які підтримують wiki, навіть таємно, мають вбудований поліс страхування від забуття незрозумілої процедури.

DokuWiki — це зріла, швидка вікі, яка працює без бази даних, має вбудовані функції безпеки та відносно проста в розгортанні. Щоб дізнатися більше про можливості DokuWiki, перегляньте їх веб-сторінку.

DokuWiki — це лише одна з багатьох доступних вікі, хоча вона досить хороша. Одним із великих плюсів є те, що DokuWiki відносно легка і може працювати на сервері, на якому вже запущено інші служби, за умови, що у вас є простір і пам’ять.

Встановлення залежностей

Мінімальна версія PHP для DokuWiki тепер становить 7.2, і це саме те, що поставляється з Rocky Linux 8. Завдяки модулям Rocky Linux 8 можна встановити до версії 8.2. Rocky Linux 9.0 за замовчуванням має PHP версії 8.0 і модулі, які підтримують до 8.2. Зауважте, що деякі з перелічених тут пакетів можуть уже існувати:

dnf install tar wget httpd php php-gd php-xml php-json php-mbstring

Прийміть і встановіть будь-які додаткові перераховані залежності, які постачаються з цими пакетами.

Створення каталогів і зміна конфігурації

Конфігурація Apache

Якщо ви прочитали процедуру Apache Sites Enabled, ви знаєте, що вам потрібно створити кілька каталогів. Почніть із додавання каталогу конфігурації httpd:

mkdir -p /etc/httpd/{sites-available,sites-enabled}

Вам потрібно відредагувати файл httpd.conf:

vi /etc/httpd/conf/httpd.conf

Додайте це в самий низ файлу:

Include /etc/httpd/sites-enabled

Створіть файл конфігурації сайту в sites-available:

vi /etc/httpd/sites-available/com.example

Цей файл конфігурації буде схожий на цей:

<VirtualHost *>
  ServerName    example.com
  DocumentRoot  /var/www/sub-domains/com.example/html

  <Directory ~ "/var/www/sub-domains/com.example/html/(bin/|conf/|data/|inc/)">
      <IfModule mod_authz_core.c>
                AllowOverride All
          Require all denied
      </IfModule>
      <IfModule !mod_authz_core.c>
          Order allow,deny
          Deny from all
      </IfModule>
  </Directory>

  ErrorLog   /var/log/httpd/example.com_error.log
  CustomLog  /var/log/httpd/example.com_access.log combined
</VirtualHost>

Зауважте, що параметр «AllowOverride All» вище дозволяє працювати файлу .htaccess (безпека для певного каталогу).

Зв’яжіть файл конфігурації з підтримкою сайтів, але поки що не запускайте веб-служби:

ln -s /etc/httpd/sites-available/com.example /etc/httpd/sites-enabled/

Apache DocumentRoot

Вам потрібно створити свій DocumentRoot. Зробіть це за допомогою:

mkdir -p /var/www/sub-domains/com.example/html

Встановлення DokuWiki

На вашому сервері перейдіть до кореневого каталогу.

cd /root

Оскільки ваше середовище готове до роботи, отримайте останню стабільну версію DokuWiki. Ви можете знайти це, перейшовши на сторінку завантаження, і ліворуч на сторінці в розділі «Версія» ви побачите «Stable (Recommended) (direct link)».

Клацніть правою кнопкою миші на частині "(direct link)" та скопіюйте посилання. У консолі вашого сервера DokuWiki введіть wget і пробіл, а потім вставте скопійоване посилання в термінал. Ви повинні отримати щось подібне до цього:

wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz

Перш ніж розпакувати архів, перевірте його вміст за допомогою tar ztf:

tar ztvf dokuwiki-stable.tgz

Зверніть увагу на названий датований каталог перед усіма іншими файлами, які виглядають подібно до цього:

... (more above)
dokuwiki-2020-07-29/inc/lang/fr/resetpwd.txt
dokuwiki-2020-07-29/inc/lang/fr/draft.txt
dokuwiki-2020-07-29/inc/lang/fr/recent.txt
... (more below)

Вам не потрібен цей початковий іменований каталог під час розпакування архіву, тому ви скористаєтеся деякими параметрами з tar, щоб виключити його. Першим варіантом є "--strip-components=1", який видаляє початковий каталог. Друга опція — це опція «-C», яка вказує tar, куди потрібно розпакувати архів. Декомпресія буде схожою на цю:

tar xzf dokuwiki-stable.tgz  --strip-components=1 -C /var/www/sub-domains/com.example/html/

Після виконання цієї команди весь DokuWiki має бути у вашому DocumentRoot.

Вам потрібно зробити копію файлу .htaccess.dist, який надійшов із DokuWiki, і зберегти там старий файл на випадок, якщо вам знадобиться повернутися до оригіналу.

У процесі ви зміните назву цього файлу на .htaccess. Це те, що шукатиме apache. Для цього:

cp /var/www/sub-domains/com.example/html/.htaccess{.dist,}

Вам потрібно змінити право власності на новий каталог і його файли на користувача та групу apache:

chown -Rf apache.apache /var/www/sub-domains/com.example/html

Налаштування DNS або /etc/hosts

Перш ніж отримати доступ до інтерфейсу DokuWiki, ви повинні встановити роздільну здатність імен для цього сайту. Ви можете використовувати файл /etc/hosts для тестування.

У цьому прикладі припустимо, що DokuWiki працюватиме на приватній IPv4-адресі 10.56.233.179. Припустімо, ви змінюєте файл /etc/hosts на робочій станції Linux. Для цього запустіть:

sudo vi /etc/hosts

Потім змініть свій хост-файл, щоб він виглядав приблизно так (зверніть увагу на IP-адресу вище в прикладі):

127.0.0.1 localhost
127.0.1.1 myworkstation-home
10.56.233.179 example.com     example

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Коли ви завершите тестування та будете готові працювати для всіх, ви повинні додати цей хост до DNS-сервера. Ви можете використовувати Приватний DNS-сервер або загальнодоступний DNS-сервер.

Запуск httpd

Перш ніж запускати httpd, перевірте, чи ваша конфігурація правильна:

httpd -t

Ви повинні отримати:

Syntax OK

Якщо так, ви повинні бути готові запустити httpd, а потім завершити налаштування. Почніть із увімкнення httpd для запуску під час завантаження:

systemctl enable httpd

Потім запустіть:

systemctl start httpd

Тестування DokuWiki

Наступним кроком буде відкрити веб-браузер і ввести це в адресному рядку:

http://example.com/install.php

Це приведе вас до екрана налаштування:

  • У полі «Wiki Name» введіть назву нашої вікі. Приклад «Технічна документація»
  • У полі «Superuser» введіть ім’я адміністратора. Наприклад, "admin"
  • У полі «Real name» введіть справжнє ім’я адміністратора.
  • У полі «E-Mail» введіть адресу електронної пошти адміністратора.
  • У полі «Password» введіть безпечний пароль користувача-адміністратора.
  • У полі «once again» введіть той самий пароль ще раз.
  • З випадаючого меню «Initial ACL Policy» виберіть варіант, який найкраще підходить для вашого середовища.
  • Виберіть відповідний прапорець для ліцензії, під якою ви хочете розмістити свій вміст.
  • Залиште позначеним (або зніміть, якщо бажаєте) прапорець «Раз на місяць надсилати анонімні дані про використання розробникам DokuWiki»
  • Натисніть кнопку «Зберегти»

Тепер ваша вікі готова для додавання вмісту.

Захист DokuWiki

Окрім політики ACL, яку ви щойно створили, розгляньте:

Ваш брандмауер firewalld

Примітка

У цьому прикладі брандмауера не передбачається, які інші служби вам може знадобитися дозволити на вашому сервері DokuWiki. Ці правила базуються на вашому середовищі тестування та стосуються ЛИШЕ дозволу доступу до IP-блоку ЛОКАЛЬНОЇ мережі. Вам знадобиться більше послуг, дозволених для робочого сервера.

Перш ніж сказати що все готово, потрібно подумати про безпеку. По-перше, ви повинні запустити брандмауер на сервері.

Припускається, що будь-хто в мережі 10.0.0.0/8 знаходиться у вашій приватній локальній мережі, і це єдині люди, яким потрібен доступ до сайту.

Якщо ви використовуєте firewalld як брандмауер, використовуйте такий синтаксис правила:

firewall-cmd --zone=trusted --add-source=10.0.0.0/8 --permanent
firewall-cmd --zone=trusted --add-service=http --add-service=https --permanent
firewall-cmd --reload

Після додавання наведених вище правил і перезавантаження служби firewalld перерахуйте свою зону, щоб переконатися, що там є все, що вам потрібно:

firewall-cmd --zone=trusted --list-all

Це виглядатиме приблизно так, якщо все працювало правильно:

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 10.0.0.0/8
  services: http https
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

SSL

Для найкращої безпеки вам слід розглянути можливість використання SSL для зашифрованого веб-трафіку. Ви можете придбати SSL у постачальника SSL або скористатися Let's Encrypt.

Висновок

Незалежно від того, чи потрібно вам задокументувати процеси, політику компанії, програмний код чи щось інше, вікі — чудовий спосіб це зробити. DokuWiki — це безпечний, гнучкий, простий у використанні продукт, який також відносно легко встановити та розгорнути. Це також стабільний проект, який існує вже багато років.

Author: Steven Spencer

Contributors: Ezequiel Bruni, Ganna Zhyrnova