Установка и настройка WikiJS nginx на CentOS 8

Обновляем репозиторий и устанавливаем основные утилиты

1
2
dnf update -y
dnf install epel-release git curl unzip -y

Подключаем репо Node и устанавливаем

1
2
3
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
dnf install nodejs -y
dnf install redis -y
1
2
systemctl start redis
systemctl enable redis

Устанавливаем nginx и базу данных MariaDB

1
dnf install nginx @mariadb -y

Запускаем nginx и mariadb

1
2
3
4
systemctl start nginx
systemctl start mariadb
systemctl enable nginx
systemctl enable mariadb

Отвечаем на вопросы скрипта начального конфигурирования DB

Выставляем пароль root, выключаем anon logon выключаем remote root logon, выключаем тестовые базы
mysql_secure_installation

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Создаем таблицы для wikijs

1
2
3
4
5
6
MariaDB [(none)]>
CREATE DATABASE wikidb;
GRANT ALL PRIVILEGES ON wikidb.* TO 'wiki'@'localhost' IDENTIFIED BY 'password';

FLUSH PRIVILEGES;
EXIT;

Создаем пользователей и директории

1
2
groupadd --system wiki
useradd -s /sbin/nologin --system -g wiki wiki
1
curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep browser_download_url  | grep -v windows | cut -d '"' -f 4 | wget -qi -
1
2
mkdir -p /var/www/html/wiki
tar zxf wiki-js.tar.gz -C /var/www/html/wiki
1
2
cd /var/www/html/wiki
cp config.sample.yml config.yml

Редактируем конфиг

1
2
3
4
5
6
7
8
9
10
11
vi config.yml

> db:
type: mariadb
host: localhost
port: 3306
user: wiki
pass: password
db: wikidb
ssl: false

1
chown -R wiki:wiki /var/www/html/wiki

Запускаем сервер для теста

1
node server

Нажимаем Ctrl+C чтобы остановить сервер

1
vi /etc/systemd/system/wiki.service
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=wiki
Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/wiki
[Install]
WantedBy=multi-user.target

Перезагружаем systemctl и запускаем wiki

1
2
3
4
systemctl daemon-reload

systemctl start wiki
systemctl enable wiki

Редактируем конфиг nginx

1
vi /etc/nginx/conf.d/wikijs.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name wiki.example.com;
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;

}
}
1
systemctl restart nginx

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

1
2
3
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload

Устанавливаем nginx ssl

1
dnf install certbot python3-certbot-nginx
1
2
3
4
certbot --nginx -d docs.yourdomain.ru -d docs.yourdomain.ru -m admin@docs.yourdomain.ru
systemctl restart nginx
crontab -e
certbot renew --dry-run

Устанавливаем задание в cron

1
2
crontab -e
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --quiet

Поздравляю!!!

Установка завершена!!!

You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.