Сервер 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