Как установить Wiki.js на Rocky Linux 9
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите PostgreSQL и утилиты
- Шаг 3. Настройка PostgreSQL
- Шаг 4. Установите Node.js
- Шаг 5. Загрузите Wiki.js
- Шаг 6. Настройка и запуск Wiki.js
- Шаг 7. Настройка службы Systemd
- Шаг 8. Установите Nginx
- Шаг 9. Установите SSL
- Шаг 10. Настройка SELinux
- Шаг 11. Настройка Nginx
- Шаг 12. Завершите установку
- Заключение
Wiki.js — это легкое вики-программное обеспечение с открытым исходным кодом. Он построен на основе JavaScript-фреймворка Node.js. Его можно использовать для написания документации, вики и веб-контента с помощью редактора Markdown для разработчиков и редактора WYSIWYG для нетехнических специалистов. Он поддерживает несколько типов контента, включая диаграммы UML, математические выражения с использованием синтаксиса Tex или MathML и код. Он включает в себя несколько модулей для различных функций, включая аналитику, аутентификацию, ведение журналов, сторонние поисковые системы и несколько служб хранения для синхронизации вашего контента.
В этом руководстве вы научитесь устанавливать Wiki.js на сервер Rocky Linux 9, используя базу данных PostgreSQL и сервер Nginx для проксирования.
Предпосылки
-
A server running Rocky Linux 9.
-
A non-root user with sudo privileges.
-
A fully qualified domain name (FQDN) pointing to your server. For our purposes, we will use
wiki.example.com
as the domain name. -
Make sure everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state running
Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.
$ sudo firewall-cmd --permanent --list-services
Он должен показать следующий вывод.
cockpit dhcpv6-client ssh
Для работы Wiki.js необходимы порты HTTP и HTTPS. Откройте их.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Перезагрузите брандмауэр, чтобы применить изменения.
$ sudo firewall-cmd --reload
Шаг 2 — Установите PostgreSQL и утилиты
Rocky Linux 9 поставляется с более старой версией PostgreSQL. Мы установим Postgres 14 для нашего руководства.
Установите RPM-репозиторий для PostgreSQL.
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Установите сервер PostgreSQL 14.
$ sudo dnf install -y postgresql14-server postgresql14-contrib
Инициализировать базу данных.
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Включите и запустите службу PostgreSQL.
$ sudo systemctl enable postgresql-14 --now
Проверить статус услуги.
$ sudo systemctl status postgresql-14 ? postgresql-14.service - PostgreSQL 14 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-10-22 09:52:41 UTC; 2s ago Docs: https://www.postgresql.org/docs/14/static/ Process: 103857 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 103862 (postmaster) Tasks: 8 (limit: 5915) Memory: 16.6M CPU: 61ms CGroup: /system.slice/postgresql-14.service ??103862 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/ ??103863 "postgres: logger " ??103865 "postgres: checkpointer " ??103866 "postgres: background writer " ??103867 "postgres: walwriter " ??103868 "postgres: autovacuum launcher " ??103869 "postgres: stats collector " ??103870 "postgres: logical replication launcher " Oct 22 09:52:41 wiki.example.com systemd[1]: Starting PostgreSQL 14 database server...
Шаг 3 — Настройте PostgreSQL
Войдите в оболочку PostgreSQL.
$ sudo -i -u postgres psql
Создайте новую базу данных для Wiki.js.
postgres=# CREATE DATABASE wikidb;
Создайте нового пользователя базы данных с надежным паролем.
postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';
Предоставьте пользователю права на использование базы данных.
postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;
Выйдите из оболочки Postgres.
postgres=# \q
Шаг 4 — Установите Node.js
Wiki.js поддерживает Node v16 на момент написания этого руководства.
Установите репозиторий Node с помощью следующей команды.
$ curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
Установить узел.
$ sudo dnf install nodejs -y
Проверьте установку узла.
$ node --version v16.18.0
Шаг 5 — Загрузите Wiki.js
Создайте папку для установки Wiki.js.
$ sudo mkdir -p /var/www/wikijs
Установите текущего пользователя в качестве владельца папки.
$ sudo chown $USER:$USER /var/www/wikijs
Перейдите в каталог и загрузите архив кода Wiki.js.
$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
Распакуйте скачанный архив.
$ tar xzf wiki-js.tar.gz
Шаг 6. Настройте и запустите Wiki.js
Создайте файл конфигурации из примера.
$ cp config.sample.yml config.yml
Откройте файл конфигурации для редактирования.
$ nano config.yml
Найдите следующие параметры базы данных и обновите их значения на значения, настроенные на шаге 3.
# PostgreSQL / MySQL / MariaDB / MS SQL Server only: host: localhost port: 5432 user: wikiuser pass: wikipassword db: wikidb ssl: false
Найдите строку bindIP: 0.0.0.0
и обновите ее следующим образом.
bindIP: 127.0.0.1
Это заставит WIki.js прослушивать петлевой адрес, потому что мы будем использовать прокси-сервер Nginx для доступа к нему извне.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Запустите Wiki.js с помощью следующей команды.
$ node server
Вы получите аналогичный вывод, подтверждающий успешную установку.
2022-10-22T10:25:48.187Z [MASTER] info: ======================================= 2022-10-22T10:25:48.190Z [MASTER] info: = Wiki.js 2.5.289 ===================== 2022-10-22T10:25:48.191Z [MASTER] info: ======================================= 2022-10-22T10:25:48.191Z [MASTER] info: Initializing... 2022-10-22T10:25:49.079Z [MASTER] info: Using database driver pg for postgres [ OK ] 2022-10-22T10:25:49.086Z [MASTER] info: Connecting to database... 2022-10-22T10:25:49.117Z [MASTER] info: Database Connection Successful [ OK ] 2022-10-22T10:25:49.467Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode... 2022-10-22T10:25:49.468Z [MASTER] info: Starting setup wizard... 2022-10-22T10:25:49.740Z [MASTER] info: Starting HTTP server on port 3000... 2022-10-22T10:25:49.741Z [MASTER] info: HTTP Server on port: [ 3000 ] 2022-10-22T10:25:49.745Z [MASTER] info: HTTP Server: [ RUNNING ] 2022-10-22T10:25:49.745Z [MASTER] info: ....................................... 2022-10-22T10:25:49.745Z [MASTER] info: 2022-10-22T10:25:49.746Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
Нажмите Ctrl + C, чтобы остановить процесс.
Шаг 7 — Настройка службы Systemd
Описанный выше процесс поддержания работоспособности Wiki.js является временным. Чтобы сделать этот процесс постоянным, нам нужно создать службу systemd для Wiki.js, чтобы запускать ее в качестве фоновой службы. Это позволит Wiki.js запускаться при перезагрузке системы.
Создайте служебный файл systemd для Wiki.js и откройте его для редактирования.
$ sudo nano /etc/systemd/system/wikijs.service
Вставьте в него следующий код. Замените значение переменной User
именем пользователя вашей системы.
[Unit] Description=Wiki.js After=network.target [Service] Type=simple ExecStart=/usr/bin/node server Restart=always User=navjot Environment=NODE_ENV=production WorkingDirectory=/var/www/wikijs [Install] WantedBy=multi-user.target
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезагрузите системный демон.
$ sudo systemctl daemon-reload
Включите службу Wiki.js.
$ sudo systemctl enable wikijs
Шаг 8 — Установите Nginx
Rocky Linux поставляется со старой версией Nginx. Вам необходимо скачать официальный репозиторий Nginx, чтобы установить последнюю версию.
Создайте и откройте файл /etc/yum.repos.d/nginx.repo
для создания официального репозитория 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
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Установите сервер Nginx.
$ sudo dnf install nginx -y
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.1
Включите и запустите сервер Nginx.
$ sudo systemctl enable nginx --now
Проверьте состояние сервера.
$ sudo systemctl status nginx ? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-10-22 11:15:39 UTC; 49min ago Docs: http://nginx.org/en/docs/ Process: 116236 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 116237 (nginx) Tasks: 2 (limit: 5915) Memory: 5.0M CPU: 245ms CGroup: /system.slice/nginx.service ??116237 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??116238 "nginx: worker process" Oct 22 11:15:39 wiki.example.com systemd[1]: Starting nginx - high performance web server...
Шаг 9 — Установите SSL
Мы будем использовать инструмент Certbot с помощью инструмента Snapd для выпуска SSL-сертификатов. Для работы требуется репозиторий EPEL.
$ sudo dnf install epel-release
Мы будем использовать Snapd для установки Certbot. Установите Снапд.
$ sudo dnf install snapd
Включите и запустите службу Snap.
$ sudo systemctl enable snapd.socket --now
Создайте необходимые ссылки для работы Snapd.
$ sudo ln -s /var/lib/snapd/snap /snap $ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Установите основной репозиторий Snapd.
$ sudo snap install core $ sudo snap refresh core
Установите Сертбот.
$ sudo snap install --classic certbot $ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Сгенерируйте сертификат. Следующая команда также автоматически настроит Nginx.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d wiki.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/wiki.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Выполните пробный запуск процесса, чтобы проверить, нормально ли работает обновление SSL.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.
Шаг 10 — Настройте SELinux
Выполните следующие команды, чтобы применить правильный контекст SELinux к каталогу Wiki.js.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?" $ sudo restorecon -Rv /var/www/wikijs
Создайте порт для HTTP и назначьте ему 3000, чтобы Wiki.js работал с SELinux.
$ sudo semanage port -a -t http_port_t -p tcp 3000
Разрешите Nginx подключаться к сети.
$ sudo setsebool -P httpd_can_network_connect 1
Шаг 11 — Настройте Nginx
Создайте и откройте файл /etc/nginx/conf.d/wikijs.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/wikijs.conf
Вставьте в него следующий код.
# enforce HTTPS server { listen 80; listen [::]:80; server_name wiki.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name wiki.example.com; root /var/www/wikijs; access_log /var/log/nginx/wiki.access.log; error_log /var/log/nginx/wiki.error.log; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:3000; } } # This block is useful for debugging TLS v1.3. Please feel free to remove this # and use the `$ssl_early_data` variable exposed by NGINX directly should you # wish to do so. map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default ""; }
Замените корневой каталог в указанном выше файле каталогом на вашем сервере.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте конфигурацию Nginx.
$ sudo nginx -t
Если вы не видите ошибок, значит, все в порядке.
Запустите службу Wiki.js.
$ sudo systemctl start wikijs
Перезагрузите сервер Nginx.
$ sudo systemctl reload nginx
Шаг 12 — Завершите установку
Посетите URL-адрес https://wiki.example.com
, чтобы завершить установку.
Заполните данные учетной записи администратора и URL-адрес. Отключите телеметрию, сняв флажок «Разрешить телеметрию». Вы также можете отключить его из панели администратора. Нажмите кнопку Установить, чтобы продолжить.
Вы попадете на страницу входа.
Введите данные своей учетной записи и нажмите кнопку «Войти», чтобы перейти на страницу администрирования.
Теперь вы можете начать использовать Wiki.js.
Заключение
На этом мы завершаем наше руководство, в котором вы узнали, как установить Wiki.js на сервер Rocky Linux 9. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.