Установка DokuWiki + Nginx в Rocky Linux / Centos 8
DokuWiki — простой, но достаточно мощный вики-движок, который может быть использован для создания любой документации. Автор проекта — Андреас Гор. В отличие от многих других движков, DokuWiki использует для хранения страниц текстовые файлы, таким образом единственным требованием является поддержка хостингом PHP.
Подготовка
Устанавливаем утилиты
1
$ sudo dnf -y install curl wget vim nano git unzip socat bash-completion
Подключаем репозиторий EPEL
1
$ sudo dnf -y install epel-release
Установка Nginx
Добавляем репозиторий
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ sudo nano /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Устанавливаем Nginx
1
2
$ sudo dnf -y update
$ sudo dnf -y install nginx
Запускаем Nginx и добавляем его в автозагрузку
1
$ sudo systemctl enable --now nginx
Отключаем дефолтный конфиг
1
$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disable
Настройка Firewall
Открываем порты 80
и 443
1
2
3
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload
Настройка SELinux
Устанавливаем утилиту для управления правилами SELinux
1
$ sudo dnf -y install policycoreutils-python-utils
Добавляем правило
1
$ sudo semanage permissive -a httpd_t
Установка PHP
Устанавливаем необходимые компоненты
1
$ sudo dnf -y install php php-cli php-fpm php-gd php-xml php-zip php-json
Настраиваем PHP-FPM
1
2
3
4
5
6
$ sudo nano /etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
...
Меняем владельца каталога
1
$ sudo chown -R root:nginx /var/lib/php/session
Добавляем сервис в автозагрузку и запускаем его
1
2
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
Настройка Nginx
Создадим директорию для SSL-сертификата
1
$ sudo mkdir /etc/nginx/ssl/
Сгенерируем самоподписанный сертификат и ключ
1
$ sudo openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout /etc/nginx/ssl/private.key -out /etc/nginx/ssl/server.crt
Можно так же использовать покупной сертификат, либо бесплатный lets encrypt, но т.к. я разворачиваю DokuWiki в тестовой среде, использую самоподписанный
Создаем конфиг для DokuWiki
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ sudo nano /etc/nginx/conf.d/dokuwiki.conf
server {
listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
server_name _;
root /var/www/dokuwiki;
index index.html index.htm index.php doku.php;
client_max_body_size 15M;
client_body_buffer_size 128K;
location / {
try_files $uri $uri/ @dokuwiki;
}
location ^~ /conf/ { return 403; }
location ^~ /data/ { return 403; }
location ~ /.ht { deny all; }
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 unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Перезапускаем службы
1
$ sudo systemctl restart php-fpm nginx
Установка DokuWiki
Скачиваем дистрибутив
1
2
$ cd /tmp
$ wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
Создаем каталог, где будет лежать дистрибутив
1
$ sudo mkdir -p /var/www/dokuwiki
Распаковываем DokuWiki и переносим файлы в созданный каталог
1
2
3
$ tar xvf dokuwiki-stable.tgz
$ cd dokuwiki-2020-07-29
$ sudo mv * /var/www/dokuwiki
Меняем владельца каталога и файлов
1
$ sudo chown -R nginx:nginx /var/www/dokuwiki
Далее переходим в Web-интерфейс по IP-адресу нашего сервера и завершаем установку DokuWiki