Поиск по сайту:

Как установить форум NodeBB на Fedora 29


На этой странице

  1. Требования
  2. Предпосылки
  3. Начальные шаги
  4. Шаг 1. Установите Node.js и npm
  5. Шаг 2. Установите и настройте MongoDB
  6. Шаг 3. Установите клиент acme.sh и получите Let\>)
  7. Шаг 4. Установите и настройте Nginx
  8. Шаг 5. Установите и настройте NodeBB
  9. Шаг 6. Запустите NodeBB как системную службу
  10. Ссылки

NodeBB – это программное обеспечение для форумов на основе Node.js, созданное для современного Интернета. Он построен на основе базы данных MongoDB или Redis. Он использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени. NodeBB имеет множество современных функций, таких как интеграция с социальными сетями и потоковое обсуждение. Дополнительный функционал включается за счет использования сторонних плагинов. NodeBB — это проект с открытым исходным кодом, который можно найти на Github. В этом руководстве мы проведем вас через пошаговый процесс установки NodeBB в операционной системе Fedora 29 с использованием Nginx в качестве обратного прокси-сервера, MongoDB в качестве базы данных и acme.sh и Lets Encrypt для HTTPS.

Требования

NodeBB требует установки следующего программного обеспечения:

  • Node.js 6 или более поздней версии
  • MongoDB версии 2.6 или более поздней или Redis версии 2.8.9 или более поздней.
  • Nginx 1.3.13 или более поздней версии
  • Гит

ПРИМЕЧАНИЕ: Для установки зависимостей NodeBB может потребоваться более 512 мегабайт системной памяти. Рекомендуется включить раздел подкачки, чтобы компенсировать нехватку памяти в вашей системе Linux.

Предпосылки

  • Работающая система Fedora 29 с объемом оперативной памяти не менее 1 ГБ.
  • Доменное имя с настроенными записями A/AAAA.
  • Пользователь без полномочий root с привилегиями sudo.

Начальные шаги

Проверьте свою версию Fedora:

cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)

Настройте часовой пояс:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Обновите пакеты операционной системы (программное обеспечение). Это важный первый шаг, поскольку он гарантирует наличие последних обновлений и исправлений безопасности для пакетов программного обеспечения вашей операционной системы по умолчанию:

sudo dnf check-upgrade || sudo dnf upgrade -y

Установите несколько основных пакетов, необходимых для базового администрирования операционной системы Fedora:

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

Для простоты отключите SELinux и Firewall:

sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service

Шаг 1. Установите Node.js и npm

NodeBB построен на Node.js. Мы собираемся установить рекомендуемую версию для NodeBB, которая на момент написания этой статьи была версией 8 . В Linux у вас есть несколько вариантов установки Node.js: двоичные файлы Linux (x86/x64), исходный код или через диспетчеры пакетов. Мы будем использовать опцию управления пакетами, которая упрощает установку и обновление Node.js.

Загрузите и установите последнюю версию Node.js с долгосрочной поддержкой (LTS) из репозитория Fedora:

sudo dnf -y install nodejs

Для компиляции и установки нативных надстроек из npm вам также может понадобиться установить инструменты сборки:

sudo dnf install -y gcc-c++ make
# or
# sudo dnf groupinstall -y 'Development Tools'

ПРИМЕЧАНИЕ. npm распространяется вместе с Node.js. Это означает, что при загрузке Node.js вы автоматически устанавливаете npm в своей системе.

Проверьте версии Node.js и npm:

node -v && npm -v
# v10.15.0
# 6.4.1

Npm — это отдельный от Node.js проект, который чаще обновляется. В результате, даже если вы только что загрузили Node.js (и, следовательно, npm), вам, вероятно, потребуется обновить файл npm. К счастью, npm умеет обновлять себя! Чтобы обновить npm, введите это в свой терминал:

sudo npm install -g 

Эта команда обновит npm до последней стабильной версии.

Перепроверьте версию npm с помощью:

npm -v
# 6.7.0

И он должен возвращать номера последних версий.

Шаг 2: Установите и настройте MongoDB

NodeBB нуждается в базе данных для хранения своих данных и поддерживает MongoDB и Redis. В этом руководстве мы выбрали MongoDB в качестве механизма хранилища данных. Итак, в следующих нескольких шагах мы загрузим и установим базу данных MongoDB из официального rpm-репозитория MongoDB:

Чтобы установить стабильную версию пакета MongoDB, введите следующую команду:

sudo dnf install -y mongodb mongodb-server

Проверьте версию MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.1
# db version v4.0.1

Запустите и включите (настройте запуск при перезагрузке) службы MongoDB:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Проверьте состояние сервера базы данных MongoDB, выполнив:

sudo systemctl status mongod.service
# active (running)

Затем создайте базу данных MongoDB и пользователя для NodeBB.

Сначала подключитесь к серверу MongoDB.

mongo

Переключитесь на встроенную admin базу данных.

> use admin

Создайте пользователя-администратора.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

ПРИМЕЧАНИЕ. Замените заполнитель <Введите безопасный пароль> на выбранный вами пароль.

Добавьте новую базу данных с именем nodebb.

> use nodebb

База данных будет создана, а контекст переключится на nodebb. Затем создайте пользователя nodebb с соответствующими правами.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

ПРИМЕЧАНИЕ. Снова замените заполнитель <Введите безопасный пароль> на выбранный вами пароль.

Выйдите из оболочки Mongo.

> quit()

Перезапустите MongoDB и убедитесь, что созданный ранее пользователь с правами администратора может подключиться.

sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin

Если все прошло хорошо, ваша MongoDB должна быть установлена и подготовлена для NodeBB. На следующем этапе мы займемся установкой и настройкой веб-сервера.

Шаг 3. Установите клиент acme.sh и получите сертификат Lets Encrypt (необязательно)

Защищать свой форум NodeBB с помощью HTTPS не обязательно, но это хорошая практика для защиты трафика вашего сайта. Чтобы получить сертификат TLS от Lets Encrypt, мы будем использовать клиент acme.sh. Acme.sh — это чистое программное обеспечение оболочки Unix для получения сертификатов TLS от Lets Encrypt без каких-либо зависимостей.

Загрузите и установите acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail 
source ~/.bashrc
cd ~

Проверьте версию acme.sh:

acme.sh --version
# v2.8.0

Получите сертификаты RSA и ECC/ECDSA для своего домена/имени хоста:<br>

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Если вам нужны поддельные сертификаты для тестирования, вы можете добавить флаг --staging к приведенным выше командам.

После выполнения приведенных выше команд ваши сертификаты и ключи будут находиться в:

  • Для RSA: /home/username/example.com каталог.
  • Для ECC/ECDSA: /home/username/example.com_ecc каталог.

Чтобы просмотреть список выданных сертификатов, вы можете запустить:

acme.sh --list

Создайте каталоги для хранения сертификатов. Мы будем использовать каталог /etc/letsencrypt .

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Установите/скопируйте сертификаты в каталог /etc/letsencrypt.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Все сертификаты будут автоматически обновляться каждые 60 дней.

После получения сертификатов выйдите из-под пользователя root и вернитесь к обычному пользователю sudo:

exit

Шаг 4: Установите и настройте Nginx

NodeBB может нормально работать со многими веб-серверами. В этом уроке мы выбрали Nginx.

Установите пакет Nginx, выполнив следующую команду:

sudo dnf install -y nginx

После установки вы можете проверить версию Nginx, выполнив:

nginx -v
# 1.14.1

Запустите и включите (настройте запуск при перезагрузке) службы Nginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Проверьте статус веб-сервера Nginx, выполнив:

sudo systemctl status nginx.service
# active (running)

NodeBB по умолчанию работает на порту 4567. Чтобы не вводить http://example.com:4567, мы настроим Nginx в качестве обратного прокси-сервера для приложения NodeBB. Каждый запрос на порт 80 или 443 (если используется SSL) будет перенаправляться на порт 4567.

Запустите sudo vim /etc/nginx/conf.d/nodebb.conf и настройте Nginx в качестве обратного прокси-сервера HTTPS.

server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;

server_name forum.example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

location / {
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_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

}

Проверьте конфигурацию Nginx:

sudo nginx -t

Наконец, чтобы изменения вступили в силу, нам нужно перезагрузить Nginx:

sudo systemctl reload nginx.service

Шаг 5: Установите и настройте NodeBB

Создайте корневой каталог документа, в котором должен находиться NodeBB:

sudo mkdir -p /var/www/nodebb

Перейдите в корневой каталог документа:

cd /var/www/nodebb

Измените владельца каталога /var/www/nodebb на your_user.

sudo chown -R [your_user]:[your_user] /var/www/nodebb

ПРИМЕЧАНИЕ. Замените your_user в приведенной выше команде пользователем без полномочий root, которого вы должны были создать в качестве предварительного условия для этого руководства.

Клонируйте последний репозиторий NodeBB в корневую папку документа:

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

Запустите сценарий установки, запустив приложение с флагом setup . Ответьте на каждый из вопросов:

./nodebb setup

После завершения установки NodeBB запустите ./nodebb start , чтобы вручную запустить сервер NodeBB:

./nodebb start

После запуска этой команды вы сможете получить доступ к своему новому форуму в своем веб-браузере:

Шаг 6. Запустите NodeBB как системную службу

При запуске с помощью ./nodebb start NodeBB не будет автоматически запускаться снова при перезагрузке системы. Чтобы этого избежать, нам нужно настроить NodeBB как системную службу.

Если работает, остановите NodeBB:

./nodebb stop

Создайте нового пользователя nodebb:

sudo useradd nodebb

Измените владельца каталога /var/www/nodebb на пользователя nodebb:

sudo chown -R nodebb:nodebb /var/www/nodebb

Создайте nodebb.service файл конфигурации модуля systemd. Этот модульный файл будет обрабатывать запуск демона NodeBB. Запустите sudo vim /etc/systemd/system/nodebb.service и добавьте следующее содержимое:

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

ПРИМЕЧАНИЕ. Задайте имя пользователя и пути к каталогам в соответствии с выбранными вами именами.

Включите nodebb.service при перезагрузке и немедленно запустите nodebb.service:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Проверьте статус nodebb.service :

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

Поздравляем! Вы успешно установили и развернули дискуссионную платформу NodeBB в системе Fedora 29. Вы должны иметь доступ к своему форуму в своем домене и взаимодействовать с ним.

Ссылки

  • https://nodebb.org/
  • https://github.com/NodeBB/NodeBB