Zahtjevi
Prije nego što počneš
Instalirajte Node.js
Instalirajte i konfigurirajte MongoDB
Instalirajte i konfigurirajte Nginx
Instalirajte Acme.sh klijent i pribavite certifikat Let's Encrypt (opcionalno)
Instalirajte NodeBB
Pokrenite NodeBB kao uslugu sustava
NodeBB je forum baziran na Node.js. Koristi web utičnice za trenutne interakcije i obavijesti u stvarnom vremenu. NodeBB izvorni kod javno je hostiran na Githubu . Ovaj vodič će vas provesti kroz proces instalacije NodeBB-a na novoj instanci Ubuntu 18.04 LTS Vultr koristeći Node.js, MongoDB kao bazu podataka, Nginx kao obrnuti proxy i Acme.sh za SSL certifikate.
Zahtjevi
NodeBB zahtijeva instaliranje sljedećeg softvera:
- Git
- Node.js verzija 6.9.0 ili novija
- MongoDB verzija 2.6 ili novija
- Nginx
- Najmanje 1024 MB RAM-a
- Ime domene sa
A/ AAAApostavljenim zapisima
Prije nego što počneš
Provjerite verziju Ubuntua.
lsb_release -ds
# Ubuntu 18.04 LTS
Napravite novi non-rootkorisnički račun s sudopristupom i prebacite se na njega.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NAPOMENA : Zamijenite johndoesvojim korisničkim imenom.
Postavite vremensku zonu.
sudo dpkg-reconfigure tzdata
Provjerite je li vaš sustav ažuriran.
sudo apt update && sudo apt upgrade -y
Instalirajte potrebne pakete.
sudo apt install -y git build-essential apt-transport-https
Instalirajte Node.js
NodeBB pokreće Node.js, pa ga je potrebno instalirati. Preporuča se instalacija trenutne LTS verzije Node.js.
Instalirajte Node.js iz NodeSource spremišta.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Provjerite instalaciju Node.js i npm.
node -v && npm -v
# v10.15.0
# 5.6.0
MongoDB je zadana baza podataka za NodeBB.
Instalirajte MongoDB.
sudo apt install -y mongodb
Provjerite verziju.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Napravite MongoDB bazu podataka i korisnika za NodeBB.
Prvo se povežite s MongoDB poslužiteljem.
mongo
Prijeđite na ugrađenu adminbazu podataka.
> use admin
Stvorite administrativnog korisnika.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
NAPOMENA: Zamijenite rezervirano mjesto <Enter a secure password>s vlastitom odabranom lozinkom.
Dodajte novu bazu podataka pod nazivom nodebb.
> use nodebb
Baza podataka će biti stvorena i kontekst će se prebaciti na nodebb. Zatim stvorite nodebbkorisnika s odgovarajućim privilegijama.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
NAPOMENA: Ponovno zamijenite rezervirano mjesto <Enter a secure password>svojom lozinkom.
Izađite iz ljuske Mongo.
> quit()
Ponovno pokrenite MongoDB i provjerite može li se povezati prethodno kreirani administrativni korisnik.
sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin
Instalirajte najnoviju glavnu verziju Nginxa iz službenog Nginx repozitorija.
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
Provjerite verziju.
sudo nginx -v
# nginx version: nginx/1.15.0
Omogućite i pokrenite Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
NodeBB prema zadanim postavkama radi na portu 4567. Kako bismo izbjegli upisivanje http://example.com:4567, konfigurirat ćemo Nginx kao obrnuti proxy za aplikaciju NodeBB. Svaki zahtjev na portu 80ili 443(ako se koristi SSL) bit će proslijeđen na port 4567.
Pokrenite ga sudo vim /etc/nginx/conf.d/nodebb.confi popunite ga osnovnom konfiguracijom obrnutog proxyja u nastavku.
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";
}
}
Napomena: Ažurirajte server_namedirektivu svojom domenom/imenom hosta.
Provjerite konfiguraciju.
sudo nginx -t
Ponovno učitajte Nginx.
sudo systemctl reload nginx.service
Instalirajte Acme.sh klijent i pribavite certifikat Let's Encrypt (opcionalno)
Osiguravanje vašeg foruma HTTPS-om nije potrebno, ali će osigurati promet vaše stranice. Acme.sh je čista unix shell softver za dobivanje SSL certifikata od Let's Encrypt s nula ovisnosti.
Preuzmite i instalirajte Acme.sh.
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
Provjerite verziju.
acme.sh --version
# v2.7.9
Dobiti RSA i ECDSA certifikate za 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
Nakon izvođenja gornjih naredbi, vaši će certifikati i ključevi biti u sljedećim direktorijima:
- RSA:
/etc/letsencrypt/forum.example.com
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc
Nakon što smo dobili certifikate od Let's Encrypt, moramo konfigurirati Nginx da ih koristi.
Pokrenite sudo vim /etc/nginx/conf.d/nodebb.confponovno i konfigurirajte Nginx kao HTTPS obrnuti proxy.
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";
}
}
Provjerite konfiguraciju.
sudo nginx -t
Ponovno učitajte Nginx.
sudo systemctl reload nginx.service
Instalirajte NodeBB
Napravite korijenski direktorij dokumenta.
sudo mkdir -p /var/www/nodebb
Promijenite vlasništvo nad /var/www/nodebbimenikom u johndoe.
sudo chown -R johndoe:johndoe /var/www/nodebb
Idite do korijenske mape dokumenta.
cd /var/www/nodebb
Klonirajte najnoviju verziju NodeBB-a u korijensku mapu dokumenta.
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Pokrenite naredbu za postavljanje NodeBB i odgovorite na svako pitanje kada se to od vas zatraži.
./nodebb setup
Nakon što je postavljanje NodeBB-a dovršeno, pokrenite ./nodebb startda biste ručno pokrenuli svoj NodeBB poslužitelj.
./nodebb start
Nakon ove naredbe, moći ćete pristupiti svom forumu u svom web pregledniku.
Pokrenite NodeBB kao uslugu sustava
Kada se pokrene putem ./nodebb start, NodeBB se neće automatski ponovno pokrenuti kada se sustav ponovno pokrene. Da bismo to izbjegli, morat ćemo postaviti NodeBB kao sistemsku uslugu.
Ako radi, zaustavi NodeBB.
./nodebb stop
Stvorite novog neprivilegiranog nodebbkorisnika.
sudo adduser nodebb
Promijenite vlasništvo nad /var/www/nodebbimenikom na nodebbkorisnika.
sudo chown -R nodebb:nodebb /var/www/nodebb
Napravite nodebb.servicekonfiguracijsku datoteku systemd jedinice. Ova datoteka jedinice će upravljati pokretanjem NodeBB deamona. Pokrenite sudo vim /etc/systemd/system/nodebb.servicei ispunite datoteku sljedećim sadržajem:
[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
NAPOMENA: Postavite korisničko ime i putove do direktorija prema vašim odabranim imenima.
Omogućite nodebb.servicepri ponovnom pokretanju i odmah pokrenite nodebb.service.
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Provjerite nodebb.servicestatus.
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
To je to. Vaša NodeBB instanca je sada pokrenuta i radi.