Захтеви
Пре него што почнете
Инсталирајте Ноде.јс
Инсталирајте и конфигуришите МонгоДБ
Инсталирајте и конфигуришите Нгинк
Инсталирајте Ацме.сх клијент и набавите Лет'с Енцрипт сертификат (опционо)
Инсталирајте НодеББ
Покрените НодеББ са ПМ2
НодеББ је софтвер за форум заснован на Ноде.јс. Користи веб утичнице за тренутне интеракције и обавештења у реалном времену. НодеББ изворни код је јавно хостован на Гитхуб-у . Овај водич ће вас провести кроз процес инсталације НодеББ-а на новој инстанци ФрееБСД 12 Вултр, користећи Ноде.јс, МонгоДБ као базу података, Нгинк као обрнути прокси и Ацме.сх за ССЛ сертификате.
Захтеви
НодеББ захтева да се инсталира следећи софтвер:
- Ноде.јс верзија 6.9.0 или новија
- МонгоДБ верзија 2.6 или новија
- Нгинк
- Гит
- Најмање 1024 МБ РАМ-а
- Име домена са
A/ AAAAпостављеним записима
Пре него што почнете
Проверите верзију ФрееБСД-а.
uname -ro
# FreeBSD 12.0-RELEASE
Уверите се да је ваш ФрееБСД систем ажуриран.
freebsd-update fetch install
pkg update && pkg upgrade -y
Инсталирајте потребне пакете ако нису присутни на вашем систему.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Креирајте нови кориснички налог са жељеним корисничким именом (користићемо johndoe).
adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!
Покрените visudoкоманду и скините коментар са %wheel ALL=(ALL) ALLлиније да бисте омогућили члановима wheelгрупе да изврше било коју команду.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Сада се пребаците на свог новокреираног корисника помоћу su.
su - johndoe
НАПОМЕНА: Замените johndoeсвојим корисничким именом.
Подесите временску зону.
sudo tzsetup
Инсталирајте Ноде.јс
НодеББ покреће Ноде.јс и зато га треба инсталирати. Препоручује се инсталација тренутне ЛТС верзије Ноде.јс.
Инсталирајте Ноде.јс и нпм.
sudo pkg install -y node10 npm-node10
Проверите верзије.
node -v && npm -v
# v10.15.3
# 6.9.0
МонгоДБ је подразумевана база података за НодеББ.
Инсталирајте МонгоДБ.
sudo pkg install -y mongodb40
Проверите верзију.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Омогућите и покрените МонгоДБ.
sudo sysrc mongod_enable=yes
sudo service mongod start
Креирајте базу података и корисника за НодеББ.
Прво се повежите на МонгоДБ.
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 service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Инсталирајте Нгинк.
sudo pkg install -y nginx
Проверите верзију.
nginx -v
# nginx version: nginx/1.14.2
Омогућите и покрените Нгинк.
sudo sysrc nginx_enable=yes
sudo service nginx start
НодеББ подразумевано ради на порту 4567. Да бисмо избегли куцање http://example.com:4567, конфигурисаћемо Нгинк као обрнути прокси за НодеББ апликацију. Сваки захтев на порту 80или 443, ако се користи ССЛ, биће прослеђен на порт 4567.
Покрените sudo vim /usr/local/etc/nginx/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директиву са својим именом/именом домена.
Сачувајте датотеку и изађите са :+ W+ Q.
Сада морамо да укључимо nodebb.confу главну nginx.confдатотеку.
Покрените sudo vim /usr/local/etc/nginx/nginx.confи додајте следећу линију у http {}блок.
include nodebb.conf;
Проверите конфигурацију.
sudo nginx -t
Поново учитај Нгинк.
sudo service nginx reload
Инсталирајте Ацме.сх клијент и набавите Лет'с Енцрипт сертификат (опционо)
Обезбеђивање вашег форума помоћу ХТТПС-а није неопходно, али ће обезбедити саобраћај на вашој веб локацији. Ацме.сх је чиста уникс схелл софтвер за добијање ССЛ сертификата од Лет'с Енцрипт са нула зависности.
Преузмите и инсталирајте Ацме.сх.
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 ~
Проверите верзију.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Набавите РСА и ЕЦДСА сертификате за 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 service nginx reload" --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 service nginx reload" --keylength ec-256
Након покретања горњих команди, ваши сертификати и кључеви ће бити у:
- РСА:
/etc/letsencrypt/forum.example.com.
- ЕЦЦ/ЕЦДСА:
/etc/letsencrypt/forum.example.com_ecc.
Након добијања сертификата од Лет'с Енцрипт, морамо да конфигуришемо Нгинк да их користи.
Покрените sudo vim /usr/local/etc/nginx/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 service nginx reload
Инсталирајте НодеББ
Направите основни директоријум документа.
sudo mkdir -p /usr/local/www/nodebb
Промените власништво над /usr/local/www/nodebbдиректоријумом у johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Идите до коренске фасцикле документа.
cd /usr/local/www/nodebb
Клонирајте најновији НодеББ у основну фасциклу документа.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Покрените наредбу за подешавање НодеББ-а и одговорите на свако питање када се то од вас затражи.
./nodebb setup
Након што је подешавање НодеББ-а завршено, покрените ./nodebb startда бисте ручно покренули свој НодеББ сервер.
./nodebb start
Након ове команде, моћи ћете да приступите својој инстанци НодеББ форума у веб претраживачу.
Покрените НодеББ са ПМ2
Када се покрене преко ./nodebb start, НодеББ се неће аутоматски поново покренути када се систем поново покрене. Да бисмо то избегли, мораћемо да поставимо НодеББ као системску услугу.
Ако ради, заустави НодеББ.
./nodebb stop
Инсталирајте ПМ2 глобално.
sudo npm install pm2 -g
Проверите верзију.
pm2 -v
# 3.5.0
Идите до корена документа НодеББ.
cd /usr/local/www/nodebb
Покрените НодеББ преко ПМ2.
pm2 start app.js
Наведите НодеББ процес.
pm2 ls
Откријте расположиви инит систем.
pm2 startup
Копирајте и налепите излаз ове команде у ЦЛИ да бисте подесили закачицу за покретање.
Сачувајте листу процеса.
pm2 save
То је то. Ваша НодеББ инстанца је сада покренута и ради.