Установка Wiki.js на Almalinux 9 без Docker
PostgreSQL 15
Установка
- Заходим на сайт postgresql.org
- Заходим в раздел Загрузки
- Выбираем нашу версию Linux (в моём случае это AlmaLinux 9), поэтому я выбрал скрипт для RedHat / Rocky Linux 9
Копируем и выполняем скрипт в терминале.
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
Настройка
Редактируем файл конфигурации pg_hba.conf
nano /var/lib/pgsql/15/data/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 password
Данным действием, мы разрешили локальное подключение к БД по паролю.
Теперь открываем следующий файл конфигурации postgresql.conf
nano /var/lib/pgsql/15/data/postgresql.conf
Редактируем следующие опции / строки и приводим их к виду.
listen_addresses = '*' # what IP address(es) to listen on;
port = 5432 # (change requires restart)
Перезапускаем и проверяем PSQL сервер.
systemctl restart postgresql-15
systemctl status postgresql-15
Меняем пароль на стандартного пользователя с полными правами "postgres".
su postgres
bash-5.1$ psql
psql (15.1)
Type «help» for help.
postgres=# \password postgres
Enter new password for user «postgres»: Ввод_нового_пароля
Enter it again: Повтор_нового_пароля
Для выхода используем \q
postgres=# \q
su postgres
psql
\password postgres
\q
Создание нового пользователя
bash-5.1$ createuser —interactive test
could not change directory to «/root»: Отказано в доступе
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createuser --interactive wiki
Создание базы данных
bash-5.1$ psql
postgres=# CREATE DATABASE wiki;
CREATE DATABASE wiki;
Выдаем полные права нашему созданному пользователю на базу.
postgres=# GRANT ALL PRIVILEGES ON DATABASE wiki (имя_базы) to wiki (имя_пользователя);
GRANT ALL PRIVILEGES ON DATABASE wiki to wiki;
Назначаем нашего пользователя «wiki» владельцем базы данных.
ALTER DATABASE wiki (база данных) OWNER TO wiki (новый владелец);
ALTER DATABASE wiki OWNER TO wiki;
Настройка FireWall
Настраивать Firewall требуется если необходимы внешние подключения к базе данных, в моём случае мне это не нужно, так как pgadmin для управления PostgreSQL, так же установлен локально на сервере.
firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewall-cmd --reload
PGadmin 4
Установка
dnf install yum-utils
yum-config-manager --disable pgdg-common
rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
dnf update
dnf install pgadmin4
/usr/pgadmin4/bin/setup-web.sh
Последней командой происходит запуск скрипта с несложным мастером настройки.
Настройка
Изменим стандартный http порт на нашем web-сервере httpd, чтобы PGadmin 4 не мешал работе нашей будущей «Wiki».
nano /etc/httpd/conf/httpd.conf
Находим блок
#Listen 12.34.56.78:80
Listen 80
Меняем порт на любой, в моём случае это порт 8080
#Listen 12.34.56.78:80
Listen 8080
Сохраняем и перезапускаем web-сервер.
systemctl restart httpd
systemctl enable httpd
systemctl status httpd
Настройка Firewall
Открываем порт на Firewall’е
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
Проверяем работу PGadmin 4 перейдя по ссылке http://IP_сервера:8080/pgadmin4
Wiki.js / Js.wiki
Установка Node.js 16
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs
Установка Wiki.js
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
mkdir wiki
tar xzf wiki-js.tar.gz -C ./wiki
Настройка Wiki.js
Открываем config.yml и редактируем.
cd ./wiki/
mv config.sample.yml config.yml
nano config.yml
Находим блок с указание порта и настройки подключения базы данных к Postgres.
# ---------------------------------------------------------------------
# Port the server should listen to
# ---------------------------------------------------------------------
port: 80
# ---------------------------------------------------------------------
# Database
# ---------------------------------------------------------------------
# Supported Database Engines:
# - postgres = PostgreSQL 9.5 or later
# - mysql = MySQL 8.0 or later (5.7.8 partially supported, refer to docs)
# - mariadb = MariaDB 10.2.7 or later
# - mssql = MS SQL Server 2012 or later
# - sqlite = SQLite 3.9 or later
db:
type: postgres
# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wiki
pass: Ваш_пароль_пользователя_для_подключения_к_базе
db: wiki
ssl: false
Открываем файл конфигурации нашего будущего сервиса и редактируем его:
nano /etc/systemd/system/wiki.service
Важно проверить пользователя от которого запускается сервис, а так же пути до каталогов:
ExecStart=/usr/bin/node server
User=root
WorkingDirectory=/root/wiki
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=root
Environment=NODE_ENV=production
WorkingDirectory=/root/wiki
[Install]
WantedBy=multi-user.target
Сохраняем файл сервиса и перезапускаем daemon.
systemctl daemon-reload
Настройка Firewall
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
Запуск сервиса
Делаем первый запуск, без службы, для установки и настройки сайта.
Первый запуск необходимо выполнить командой находясь в каталоге ./wiki (полный путь скорее всего у Вас будет cd /root/wiki.
node server
Проходим по ссылке http://IP_или_имя_сервера и идём по шагам мастера установки / настройки.
После того как прошли мастера установки и выполнили первый вход, возвращаемся в терминал нашего сервера.
Жмём CTRL+C для остановки node server, запускаем наш сервис и добавляем его в автозагрузку.
systemctl restart wiki
systemctl enable wiki
systemctl status wiki
Настройка доступа через LDAP
Открываем Wiki.js -> входим под учетной записью администратора -> открываем настройки.
Добавляем группу «Пользователи«, назначаем права и если нужно создаем правила доступа к каталогам и страницам.
Назначаем права только для чтения (read:pages и read:assets), если планируете использовать комментарии добавьте так же права (read:comments и write:comments).
Остальные права ставим на свое усмотрение в зависимости от своих задач.
Так же во вкладке «Page Rules» можно разграничить доступ группе для страниц и каталогов.
Добавляем стратегию для авторизации LDAP / Active Directory.
Настраиваем параметры подключения к LDAP.
- Настраиваем сопоставление полей с LDAP
- Включаем самостоятельную регистрацию, чтобы при первом входе через LDAP создавалась учётная запись пользователя
- Указываем ранее созданную группу для присвоения прав по умолчанию, при первом входе (регистрации)
В дальнейшем можно назначить группу Administratos на доменного пользователя, убрать с формы входа локальную авторизацию, а так же настроить 2х факторную аутентификацию.
ElasticSearch
ElasticSearch требуется для полнотекстового поиска в Wiki.js.
Установка Java 1.8.0
Устанавливаем Java 1.8.0 и проверяем.
yum -y install java-1.8.0-openjdk.x86_64
java -version
Установка ElasticSearch
Текущая версия Wiki.js поддерживает ElasticSearch 6 и 7 версии. В нашем случае мы ставим ElasticSearch 7.17.8.
IP адреса РФ на официальном сайте Elasticsearch заблокированы, скачать RPM пакеты для архитектуры x86_64 можно здесь.
Закидываем пакеты elasticsearch-7.17.8-x86_64.rpm и elasticsearch-7.17.8-x86_64.rpm.sha512 на сервер удобным для Вас способом и устанавливаем.
Переходим в каталог в который загрузили пакеты.
cd /path/to/files
Устанавливаем ElasticSearch из пакета.
sudo rpm --install elasticsearch-7.17.8-x86_64.rpm
Открываем файл конфигурации.
nano /etc/elasticsearch/elasticsearch.yml
Редактируем.
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
cluster.name: имя_кластера
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
node.name: имя_сервера_или_ноды
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
http.port: 9200
#
Остальные настройки можно оставить по умолчанию. Перезапускаем daemon, запускаем ElasticSearch и добавляем в автозагрузку.
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
systemctl status elasticsearch
Настройка Firewall
Если от ElasticSearch требуются какие-то внешние обработки откройте порт на Firewall.
firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --reload
Подключение полнотекстового поиска в Wiki.js
Открываем Wiki.js -> входим под учетной записью администратора -> открываем настройки.
Переходим по пути: Поисковая система -> выбираем Elasticsearch -> настраиваем:
- Выбираем версию Elasticsearch 7.x
- Host: http://localhost:9200
- Дальше по желанию
No Comments