Как установить форум NodeBB на Debian 9
На этой странице
- Требования
- Предпосылки
- Шаг 1. Установите Node.js и npm
- Шаг 2. Установите и настройте MongoDB
- Шаг 3. Установите клиент acme.sh и получите сертификат Lets Encrypt.
- Шаг 4. Установите и настройте Nginx
- Шаг 5. Установите и настройте NodeBB
- Шаг 6. Запустите NodeBB как системную службу
- Ссылки
NodeBB – это программное обеспечение для форумов на основе Node.js, созданное для современного Интернета. Он построен на основе базы данных MongoDB или Redis. Он использует веб-сокеты для мгновенного взаимодействия и уведомлений в реальном времени. NodeBB имеет множество современных функций, таких как интеграция с социальными сетями и потоковое обсуждение. Дополнительный функционал включается за счет использования сторонних плагинов. NodeBB — это проект с открытым исходным кодом, который можно найти на Github. В этом руководстве мы шаг за шагом проведем вас через процесс установки NodeBBB в операционной системе Debian 9, используя 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.
Предпосылки
- Работающая система Debian 9 с оперативной памятью не менее 1 ГБ.
- Доменное имя с настроенными записями
A
/AAAA
. - Пользователь без полномочий root с привилегиями sudo.
Начальные шаги
Проверьте свою версию Debian:
lsb_release -ds
Настройте часовой пояс:
sudo dpkg-reconfigure tzdata
Обновите пакеты операционной системы (программное обеспечение). Это важный первый шаг, поскольку он гарантирует наличие последних обновлений и исправлений безопасности для пакетов программного обеспечения вашей операционной системы по умолчанию:
sudo apt update && sudo apt upgrade -y
Установите несколько основных пакетов, необходимых для базового администрирования операционной системы Debian:
sudo apt install -y curl wget vim git unzip sudo socat bash-completion apt-transport-https
Шаг 1. Установите Node.js и npm
NodeBB построен на Node.js. Мы собираемся установить рекомендуемую версию для NodeBB, которая на момент написания этой статьи была версией 8 . В Linux у вас есть несколько вариантов установки Node.js: двоичные файлы Linux (x86/x64), исходный код или через диспетчеры пакетов. Мы будем использовать опцию «Управление пакетами», которая упрощает установку и обновление Node.js.
Загрузите и установите последнюю версию Node.js с долгосрочной поддержкой (LTS) из репозитория NodeSource:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Для компиляции и установки нативных надстроек из npm вам также может понадобиться установить инструменты сборки:
sudo apt install -y build-essential
ПРИМЕЧАНИЕ. npm распространяется вместе с Node.js. Это означает, что при загрузке Node.js вы автоматически устанавливаете npm в своей системе.
Проверьте версии Node.js и npm:
node -v && npm -v
# v10.15.1
# 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 из официального репозитория MongoDB, введите следующую команду:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org
Проверьте версию MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 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 mongodb.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 apt install -y nginx
После установки вы можете проверить версию Nginx, выполнив:
nginx -v
Запустите и включите (настройте запуск при перезагрузке) службы 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 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
. Этот модульный файл будет обрабатывать запуск демона 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 в системе Debian 9. Вы должны иметь доступ к своему форуму в своем домене и взаимодействовать с ним.
Ссылки
- https://nodebb.org/
- https://github.com/NodeBB/NodeBB