Захтеви
Пре него што почнете
Инсталирајте Ноде.јс
Инсталирајте и конфигуришите МонгоДБ
Инсталирајте и конфигуришите Нгинк
Инсталирајте Ацме.сх клијент и набавите Лет'с Енцрипт сертификат (опционо)
Инсталирајте НодеББ
Покрените НодеББ као системску услугу
НодеББ је форум заснован на Ноде.јс. Користи веб утичнице за тренутне интеракције и обавештења у реалном времену. НодеББ изворни код је јавно хостован на Гитхубу . Овај водич ће вас провести кроз процес инсталације НодеББ-а на новој инстанци Убунту 18.04 ЛТС Вултр користећи Ноде.јс, МонгоДБ као базу података, Нгинк као обрнути прокси и Ацме.сх за ССЛ сертификате.
Захтеви
НодеББ захтева да се инсталира следећи софтвер:
- Гит
- Ноде.јс верзија 6.9.0 или новија
- МонгоДБ верзија 2.6 или новија
- Нгинк
- Најмање 1024 МБ РАМ-а
- Име домена са
A/ AAAAпостављеним записима
Пре него што почнете
Проверите верзију Убунтуа.
lsb_release -ds
# Ubuntu 18.04 LTS
Креирајте нови non-rootкориснички налог са sudoприступом и пређите на њега.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
НАПОМЕНА : Замените johndoeсвојим корисничким именом.
Подесите временску зону.
sudo dpkg-reconfigure tzdata
Уверите се да је ваш систем ажуриран.
sudo apt update && sudo apt upgrade -y
Инсталирајте потребне пакете.
sudo apt install -y git build-essential apt-transport-https
Инсталирајте Ноде.јс
НодеББ покреће Ноде.јс и зато га треба инсталирати. Препоручује се инсталација тренутне ЛТС верзије Ноде.јс.
Инсталирајте Ноде.јс из НодеСоурце спремишта.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Проверите инсталацију Ноде.јс и нпм.
node -v && npm -v
# v10.15.0
# 5.6.0
МонгоДБ је подразумевана база података за НодеББ.
Инсталирајте МонгоДБ.
sudo apt install -y mongodb
Проверите верзију.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Креирајте МонгоДБ базу података и корисника за НодеББ.
Прво се повежите са МонгоДБ сервером.
mongo
Пребаците се на уграђену adminбазу података.
> use admin
Креирајте административног корисника.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
НАПОМЕНА: Замените чувар места <Enter a secure password>својом лозинком.
Додајте нову базу података под називом nodebb.
> use nodebb
База података ће бити креирана и контекст ће бити пребачен на nodebb. Затим креирајте nodebbкорисника са одговарајућим привилегијама.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
НАПОМЕНА: Опет, замените чувар места <Enter a secure password>својом лозинком.
Изађите из љуске Монго.
> quit()
Поново покрените МонгоДБ и проверите да ли се претходно креирани административни корисник може повезати.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Инсталирајте најновију главну верзију Нгинк-а из званичног Нгинк спремишта.
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx
Проверите верзију.
sudo nginx -v
# nginx version: nginx/1.15.0
Омогућите и покрените Нгинк.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
НодеББ подразумевано ради на порту 4567. Да не бисмо морали да http://example.com:4567куцамо, конфигурисаћемо Нгинк као обрнути прокси за НодеББ апликацију. Сваки захтев на порту 80или 443(ако се користи ССЛ) биће прослеђен на порт 4567.
Покрените sudo vim /etc/nginx/conf.d/nodebb.confи попуните га основном конфигурацијом обрнутог проксија у наставку.
server {
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
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_hide_header X-Powered-By;
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";
}
}
Напомена: Ажурирајте server_nameдирективу са својим именом домена/хост-а.
Проверите конфигурацију.
sudo nginx -t
Поново учитај Нгинк.
sudo systemctl reload nginx.service
Инсталирајте Ацме.сх клијент и набавите Лет'с Енцрипт сертификат (опционо)
Обезбеђивање вашег форума помоћу ХТТПС-а није неопходно, али ће обезбедити саобраћај на вашој веб локацији. Ацме.сх је чиста уникс схелл софтвер за добијање ССЛ сертификата од Лет'с Енцрипт са нула зависности.
Преузмите и инсталирајте Ацме.сх.
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
cd ~
source ~/.bashrc
Проверите верзију.
acme.sh --version
# v2.7.9
Набавите РСА и ЕЦДСА сертификате за forum.example.com.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail your_email@example.com --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail your_email@example.com --ocsp-must-staple --keylength ec-256
Након покретања горњих команди, ваши сертификати и кључеви ће бити у следећим директоријумима:
- РСА:
/etc/letsencrypt/forum.example.com
- ЕЦЦ/ЕЦДСА:
/etc/letsencrypt/forum.example.com_ecc
Након добијања сертификата од Лет'с Енцрипт, морамо да конфигуришемо Нгинк да их користи.
Покрените sudo vim /etc/nginx/conf.d/nodebb.confпоново и конфигуришите Нгинк као ХТТПС обрнути прокси.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name forum.example.com;
root /usr/share/nginx/html;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
# RSA
ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.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";
}
}
Проверите конфигурацију.
sudo nginx -t
Поново учитај Нгинк.
sudo systemctl reload nginx.service
Инсталирајте НодеББ
Направите основни директоријум документа.
sudo mkdir -p /var/www/nodebb
Промените власништво над /var/www/nodebbдиректоријумом у johndoe.
sudo chown -R johndoe:johndoe /var/www/nodebb
Идите до коренске фасцикле документа.
cd /var/www/nodebb
Клонирајте најновију верзију НодеББ-а у основну фасциклу документа.
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Покрените наредбу за подешавање НодеББ-а и одговорите на свако питање када се то од вас затражи.
./nodebb setup
Након што је подешавање НодеББ-а завршено, покрените ./nodebb startда бисте ручно покренули свој НодеББ сервер.
./nodebb start
Након ове команде, моћи ћете да приступите свом форуму у свом веб претраживачу.
Покрените НодеББ као системску услугу
Када се покрене преко ./nodebb start, НодеББ се неће аутоматски поново покренути када се систем поново покрене. Да бисмо то избегли, мораћемо да поставимо НодеББ као системску услугу.
Ако ради, заустави НодеББ.
./nodebb stop
Креирајте новог непривилегованог nodebbкорисника.
sudo adduser nodebb
Промените власништво над /var/www/nodebbдиректоријумом на nodebbкорисника.
sudo chown -R nodebb:nodebb /var/www/nodebb
Креирајте nodebb.serviceконфигурациону датотеку системд јединице. Ова датотека јединице ће управљати покретањем НодеББ деамон-а. Покрените 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
То је то. Ваша НодеББ инстанца је сада покренута и ради.