Сервер DokuWiki
Передумови та припущення¶
- Екземпляр Rocky Linux, встановлений на сервері, контейнері або віртуальній машині.
 - Зручно змінювати конфігураційні файли з командного рядка за допомогою редактора (наші приклади тут використовуватимуть 
vi, але ви можете замінити свій улюблений редактор) - Деякі знання про веб-програми та налаштування.
 - Для налаштування використовується Apache Sites Enabled. Перегляньте це, якщо необхідно.
 - У цьому прикладі ми будемо використовувати «example.com» як доменне ім’я.
 - Щоб підвищити привілеї, ви повинні бути адміністратором або вміти 
sudo - Однак, припускаючи нову інсталяцію операційної системи, це не є обов’язковою умовою
 
Вступ¶
Документація в організації може приймати різні форми. Наявність репозиторію, на який можна посилатися на цю документацію, є неоціненною. Вікі (що на гавайській мові означає швидкий) — це спосіб централізованого зберігання документації, нотаток процесів, корпоративних баз знань і навіть прикладів коду. ІТ-фахівці, які підтримують wiki, навіть таємно, мають вбудований поліс страхування від забуття незрозумілої процедури.
DokuWiki — це зріла, швидка вікі, яка працює без бази даних, має вбудовані функції безпеки та відносно проста в розгортанні. Щоб дізнатися більше про можливості DokuWiki, перегляньте їх веб-сторінку.
DokuWiki — це лише одна з багатьох доступних вікі, хоча вона досить хороша. Одним із великих плюсів є те, що DokuWiki відносно легка і може працювати на сервері, на якому вже запущено інші служби, за умови, що у вас є простір і пам’ять.
Встановлення залежностей¶
Мінімальна версія PHP для DokuWiki тепер становить 8. Rocky Linux 10 за замовчуванням має PHP 8.3. Зауважте, що деякі з перелічених тут пакетів можуть уже існувати:
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. Ви можете знайти це, перейшовши на сторінку завантаження. У лівій частині сторінки, у розділі «Version», ви побачите "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/TLS¶
Для найкращої безпеки вам слід розглянути використання SSL/TLS для зашифрованого веб-трафіку. Ви можете придбати сертифікат SSL/TLS у постачальника SSL/TLS або скористатися Let's Encrypt.
Висновок¶
Незалежно від того, чи потрібно вам задокументувати процеси, політику компанії, програмний код чи щось інше, вікі — чудовий спосіб це зробити. DokuWiki — це безпечний, гнучкий, простий у використанні продукт, який також відносно легко встановити та розгорнути. Це також стабільний проект, який існує вже багато років.
Author: Steven Spencer
Contributors: Ezequiel Bruni, Ganna Zhyrnova