Követelmények
Mielőtt elkezded
Telepítse a Node.js-t
Telepítse és konfigurálja a MongoDB-t
Telepítse és konfigurálja az Nginx-et
Telepítse az Acme.sh klienst, és szerezzen be egy Let's Encrypt tanúsítványt (opcionális)
Telepítse a NodeBB-t
Futtassa a NodeBB-t a PM2-vel
A NodeBB egy Node.js alapú fórumszoftver. Webes csatlakozókat használ az azonnali interakciókhoz és a valós idejű értesítésekhez. A NodeBB forráskód nyilvánosan a Githubon található . Ez az útmutató végigvezeti a NodeBB telepítési folyamatán egy friss FreeBSD 12 Vultr példányon a Node.js, a MongoDB adatbázisként, az Nginx fordított proxy és az Acme.sh használatával az SSL tanúsítványokhoz.
Követelmények
A NodeBB-nek a következő szoftverek telepítése szükséges:
- Node.js 6.9.0 vagy újabb verzió
- MongoDB 2.6 vagy újabb verzió
- Nginx
- Git
- Minimum 1024 MB RAM
- Domain név a
A/ AAAArekordokkal beállítva
Mielőtt elkezded
Ellenőrizze a FreeBSD verzióját.
uname -ro
# FreeBSD 12.0-RELEASE
Győződjön meg arról, hogy a FreeBSD rendszere naprakész.
freebsd-update fetch install
pkg update && pkg upgrade -y
Telepítse a szükséges csomagokat, ha azok nincsenek jelen a rendszeren.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Hozzon létre egy új felhasználói fiókot a kívánt felhasználónévvel (használjuk 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!
Futtassa a visudoparancsot, és törölje a %wheel ALL=(ALL) ALLsor megjegyzését , hogy a wheelcsoport tagjai bármilyen parancsot végrehajthassanak.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Most váltson az újonnan létrehozott felhasználóra a segítségével su.
su - johndoe
MEGJEGYZÉS: Cserélje johndoeki a felhasználónevét.
Állítsa be az időzónát.
sudo tzsetup
Telepítse a Node.js-t
A NodeBB-t a Node.js vezérli, ezért telepíteni kell. A Node.js aktuális LTS-verziójának telepítése javasolt.
Telepítse a Node.js és az npm fájlt.
sudo pkg install -y node10 npm-node10
Ellenőrizze a verziókat.
node -v && npm -v
# v10.15.3
# 6.9.0
A MongoDB a NodeBB alapértelmezett adatbázisa.
Telepítse a MongoDB-t.
sudo pkg install -y mongodb40
Ellenőrizze a verziót.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Engedélyezze és indítsa el a MongoDB-t.
sudo sysrc mongod_enable=yes
sudo service mongod start
Hozzon létre egy adatbázist és egy felhasználót a NodeBB számára.
Először csatlakozzon a MongoDB-hez.
mongo
Váltson a beépített adminadatbázisra.
> use admin
Hozzon létre egy rendszergazdai felhasználót.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
MEGJEGYZÉS: Cserélje ki a helyőrzőt <Enter a secure password>a saját kiválasztott jelszavával.
Adjon hozzá egy új adatbázist nodebb.
> use nodebb
Az adatbázis létrejön, és a környezet átvált a következőre nodebb. Ezután hozza létre a nodebbmegfelelő jogosultságokkal rendelkező felhasználót.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
MEGJEGYZÉS: Ismét cserélje ki a helyőrzőt <Enter a secure password>a saját kiválasztott jelszavával.
Lépjen ki a Mongo shellből.
> quit()
Indítsa újra a MongoDB-t, és győződjön meg arról, hogy a korábban létrehozott rendszergazdai felhasználó tud csatlakozni.
sudo service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Telepítse az Nginx-et.
sudo pkg install -y nginx
Ellenőrizze a verziót.
nginx -v
# nginx version: nginx/1.14.2
Engedélyezze és indítsa el az Nginxet.
sudo sysrc nginx_enable=yes
sudo service nginx start
A NodeBB alapértelmezés szerint a porton fut 4567. A beírás elkerülése érdekében az http://example.com:4567Nginx-et fordított proxyként konfiguráljuk a NodeBB alkalmazáshoz. A porton 80vagy 443SSL használata esetén minden kérés a portra kerül továbbításra 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
A fenti parancsok futtatása után a tanúsítványok és kulcsok a következőkben lesznek:
- RSA:
/etc/letsencrypt/forum.example.com.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc.
Miután megszereztük a tanúsítványokat a Let's Encrypt-től, be kell állítanunk az Nginxet a használatukhoz.
Futtassa sudo vim /usr/local/etc/nginx/nodebb.confújra, és konfigurálja az Nginx-et HTTPS fordított proxyként.
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";
}
}
Ellenőrizze a konfigurációt.
sudo nginx -t
Töltse újra az Nginxet.
sudo service nginx reload
Telepítse a NodeBB-t
Hozzon létre egy dokumentum gyökérkönyvtárát.
sudo mkdir -p /usr/local/www/nodebb
Módosítsa a /usr/local/www/nodebbcímtár tulajdonjogát erre: johndoe.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Navigáljon a dokumentum gyökérmappájához.
cd /usr/local/www/nodebb
Klónozza a legújabb NodeBB-t a dokumentum gyökérmappájába.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Futtassa a NodeBB setup parancsot, és válaszoljon minden kérdésre, amikor a rendszer kéri.
./nodebb setup
A NodeBB beállításának befejezése után futtassa ./nodebb starta NodeBB-kiszolgáló kézi indításához.
./nodebb start
E parancs után egy webböngészőben érheti el a NodeBB fórumpéldányát.
Futtassa a NodeBB-t a PM2-vel
Ha ./nodebb starta rendszeren keresztül indítja el , a NodeBB nem indul el automatikusan újra, amikor a rendszer újraindul. Ennek elkerülése érdekében a NodeBB-t rendszerszolgáltatásként kell beállítanunk.
Ha fut, állítsa le a NodeBB-t.
./nodebb stop
Telepítse a PM2-t globálisan.
sudo npm install pm2 -g
Ellenőrizze a verziót.
pm2 -v
# 3.5.0
Keresse meg a NodeBB dokumentumgyökeret.
cd /usr/local/www/nodebb
Indítsa el a NodeBB-t a PM2-n keresztül.
pm2 start app.js
Sorolja fel a NodeBB folyamatot.
pm2 ls
Az elérhető init rendszer észlelése.
pm2 startup
Másolja ki és illessze be ennek a parancsnak a kimenetét a CLI-be az indítási hook beállításához.
Mentse el a folyamatlistát.
pm2 save
Ez az. A NodeBB-példány most már működik és fut.