Kërkesat
Perpara se te fillosh
Instaloni Node.js
Instaloni dhe konfiguroni MongoDB
Instaloni dhe konfiguroni Nginx
Instaloni klientin Acme.sh dhe merrni një certifikatë Let's Encrypt (opsionale)
Instaloni NodeBB
Drejtoni NodeBB me PM2
NodeBB është një softuer forumi i bazuar në Node.js. Ai përdor prizat në internet për ndërveprime të menjëhershme dhe njoftime në kohë reale. Kodi burimor NodeBB është i pritur publikisht në Github . Ky udhëzues do t'ju përcjellë në procesin e instalimit të NodeBB në një shembull të ri të FreeBSD 12 Vultr, duke përdorur Node.js, MongoDB si bazë të dhënash, Nginx si një përfaqësues të kundërt dhe Acme.sh për certifikatat SSL.
Kërkesat
NodeBB kërkon që të instalohet softueri i mëposhtëm:
- Node.js versioni 6.9.0 ose më i ri
- Versioni MongoDB 2.6 ose më i ri
- Nginx
- Git
- Minimumi 1024 MB RAM
- Emri i domenit me
A/ AAAAkonfigurimin e regjistrimeve
Perpara se te fillosh
Kontrolloni versionin e FreeBSD.
uname -ro
# FreeBSD 12.0-RELEASE
Sigurohuni që sistemi juaj FreeBSD të jetë i përditësuar.
freebsd-update fetch install
pkg update && pkg upgrade -y
Instaloni paketat e nevojshme nëse ato nuk janë të pranishme në sistemin tuaj.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Krijoni një llogari të re përdoruesi me emrin tuaj të preferuar të përdoruesit (ne do të përdorim 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!
Ekzekutoni visudokomandën dhe hiqni komentin e %wheel ALL=(ALL) ALLlinjës, për të lejuar anëtarët e wheelgrupit të ekzekutojnë çdo komandë.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Tani, kaloni te përdoruesi juaj i sapokrijuar me su.
su - johndoe
SHËNIM: Zëvendësojeni johndoeme emrin tuaj të përdoruesit.
Vendosni zonën kohore.
sudo tzsetup
Instaloni Node.js
NodeBB drejtohet nga Node.js dhe kështu duhet të instalohet. Rekomandohet instalimi i versionit aktual LTS të Node.js.
Instaloni Node.js dhe npm.
sudo pkg install -y node10 npm-node10
Kontrolloni versionet.
node -v && npm -v
# v10.15.3
# 6.9.0
MongoDB është baza e të dhënave e paracaktuar për NodeBB.
Instaloni MongoDB.
sudo pkg install -y mongodb40
Kontrolloni versionin.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Aktivizo dhe nis MongoDB.
sudo sysrc mongod_enable=yes
sudo service mongod start
Krijoni një bazë të dhënash dhe përdorues për NodeBB.
Lidhu me MongoDB së pari.
mongo
Kaloni në adminbazën e të dhënave të integruar .
> use admin
Krijo një përdorues administrativ.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
SHËNIM: Zëvendësoni mbajtësin e vendit <Enter a secure password>me fjalëkalimin tuaj të zgjedhur.
Shtoni një bazë të dhënash të re të quajtur nodebb.
> use nodebb
Baza e të dhënave do të krijohet dhe konteksti do të kalojë në nodebb. Më pas krijoni nodebbpërdoruesin me privilegjet e duhura.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
SHËNIM: Përsëri, zëvendësoni mbajtësin e vendit <Enter a secure password>me fjalëkalimin tuaj të zgjedhur.
Dilni nga guaska Mongo.
> quit()
Rinisni MongoDB dhe sigurohuni që përdoruesi administrativ i krijuar më parë mund të lidhet.
sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Instaloni Nginx.
sudo pkg install -y nginx
Kontrolloni versionin.
nginx -v
# nginx version: nginx/1.14.2
Aktivizo dhe nis Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
NodeBB si parazgjedhje funksionon në port 4567. Për të shmangur shtypjen http://example.com:4567, ne do të konfigurojmë Nginx si një përfaqësues të kundërt për aplikacionin NodeBB. Çdo kërkesë për portin 80ose 443, nëse përdoret SSL, do të përcillet në port 4567.
Run sudo vim /usr/local/etc/nginx/nodebb.conf and populate it with the basic reverse proxy configuration below.
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";
}
}
In the above config, update the server_name directive with your domain/hostname.
Save the file and exit with :+W+Q.
Now we need to include nodebb.conf in the main nginx.conf file.
Run sudo vim /usr/local/etc/nginx/nginx.conf and add the following line to the http {} block.
include nodebb.conf;
Check the configuration.
sudo nginx -t
Reload Nginx.
sudo service nginx reload
Install Acme.sh client and obtain a Let's Encrypt certificate (optional)
Securing your forum with HTTPS is not necessary, but it will secure your site's traffic. Acme.sh is a pure unix shell software for obtaining SSL certificates from Let's Encrypt with zero dependencies.
Download and install 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 ~
Check the version.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Obtain RSA and ECDSA certificates for 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
Pas ekzekutimit të komandave të mësipërme, certifikatat dhe çelësat tuaj do të jenë në:
- RSA:
/etc/letsencrypt/forum.example.com.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc.
Pas marrjes së certifikatave nga Let's Encrypt, duhet të konfigurojmë Nginx për t'i përdorur ato.
Ekzekutoni sudo vim /usr/local/etc/nginx/nodebb.confpërsëri dhe konfiguroni Nginx si një përfaqësues të kundërt HTTPS.
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";
}
}
Kontrolloni konfigurimin.
sudo nginx -t
Rifresko Nginx.
sudo service nginx reload
Instaloni NodeBB
Krijoni një direktori rrënjësore të dokumentit.
sudo mkdir -p /usr/local/www/nodebb
Ndrysho pronësinë e /usr/local/www/nodebbdrejtorisë në johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Navigoni te dosja rrënjë e dokumentit.
cd /usr/local/www/nodebb
Klononi NodeBB-në më të fundit në dosjen rrënjë të dokumentit.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Ekzekutoni komandën e konfigurimit NodeBB dhe përgjigjuni çdo pyetjeje kur ju kërkohet.
./nodebb setup
Pasi të përfundojë konfigurimi i NodeBB, vraponi ./nodebb startpër të nisur manualisht serverin tuaj NodeBB.
./nodebb start
Pas kësaj komande, do të keni mundësi të hyni në shembullin tuaj të forumit NodeBB në një shfletues ueb.
Drejtoni NodeBB me PM2
Kur niset përmes ./nodebb start, NodeBB nuk do të ndizet përsëri automatikisht kur sistemi të rindizet. Për ta shmangur këtë, do të na duhet të konfigurojmë NodeBB si një shërbim sistemi.
Nëse funksionon, ndaloni NodeBB.
./nodebb stop
Instaloni PM2 globalisht.
sudo npm install pm2 -g
Kontrolloni versionin.
pm2 -v
# 3.5.0
Navigoni te rrënja e dokumentit NodeBB.
cd /usr/local/www/nodebb
Nisni NodeBB përmes PM2.
pm2 start app.js
Listoni procesin NodeBB.
pm2 ls
Zbuloni sistemin init të disponueshëm.
pm2 startup
Kopjoni dhe ngjisni daljen e kësaj komande në CLI për të konfiguruar fiksimin tuaj të fillimit.
Ruani listën tuaj të proceseve.
pm2 save
Kjo eshte. Shembulli juaj NodeBB tani është në funksionim.