Site icon IT Draft

Установка DocuWiki + Nginx в Rocky Linux / Centos 8

Установка DocuWiki + Nginx в Rocky Linux / Centos 8

DocuWiki + Nginx

DokuWiki — простой, но достаточно мощный вики-движок, который может быть использован для создания любой документации. Автор проекта — Андреас Гор. В отличие от многих других движков, DokuWiki использует для хранения страниц текстовые файлы, таким образом единственным требованием является поддержка хостингом PHP.

Подготовка

Устанавливаем утилиты

$ sudo dnf -y install curl wget vim nano git unzip socat bash-completion

Подключаем репозиторий EPEL

$ sudo dnf -y install epel-release

Установка Nginx

Добавляем репозиторий

$ 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

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


$ sudo dnf -y update
$ sudo dnf -y install nginx

Запускаем nginx и добавляем его в автозагрузку

$ sudo systemctl enable --now nginx

Отключаем дефолтный конфиг

$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disable

Настройка Firewall

Открываем порты 80 и 443

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

Настройка SELinux

Устанавливаем утилиту для управления правилами SELinux

$ sudo dnf -y install policycoreutils-python-utils

Добавляем правило

$ sudo semanage permissive -a httpd_t

Установка PHP

Устанавливаем необходимые компоненты

$ sudo dnf -y install php php-cli php-fpm php-gd php-xml php-zip php-json

Настраиваем php-fpm

$ sudo nano /etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
...

Меняем владельца каталога

$ sudo chown -R root:nginx /var/lib/php/session

Добавляем сервис в автозагрузку и запускаем его

$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm

Настройка Nginx

Создадим директорию для ssl-сетификата

$ sudo mkdir /etc/nginx/ssl/

Сгенерируем самоподписанный сертификат и ключ

$ 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, но т.к. я разворачиваю DocuWiki в тестовой среде, использую самоподписанный

Создаем конфиг для DocuWiki

$ 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;
    }
}

Перезапускаем службы

$ sudo systemctl restart php-fpm nginx

Установка DocuWiki

Скачиваем дистрибутив

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

Создаем каталог, где будет лежать дистрибутив

$ sudo mkdir -p /var/www/dokuwiki

Распаковываем DocuWiki и переносим файлы в созданный каталог

$ tar xvf dokuwiki-stable.tgz
$ cd dokuwiki-2020-07-29
$ sudo mv * /var/www/docuwiki

Меняем владельца каталога и файлов

$ sudo chown -R nginx:nginx /var/www/docuwiki

Далее переходим в web-интерфейс по ip-адресу нашего сервера и завершаем установку DocuWiki

Exit mobile version