NodeBB è un software per forum basato su Node.js creato per il Web moderno. È costruito su un database MongoDB o Redis. Utilizza prese web per interazioni istantanee e notifiche in tempo reale. NodeBB ha molte funzionalità moderne pronte all'uso, come l'integrazione con i social network e le discussioni in streaming. Ulteriori funzionalità sono abilitate tramite l'uso di plug-in di terze parti. NodeBB è un progetto open source che può essere trovato su Github. In questa guida, ti illustreremo passo dopo passo il processo di installazione di NodeBB sul sistema operativo CentOS 7.
Requisiti
NodeBB richiede l'installazione del seguente software:
- Versione di Node.js 6 o superiore
- Versione MongoDB 2.6 o successiva o versione Redis 2.8.9 o superiore
- Versione Nginx 1.3.13 o superiore
- Git
Prerequisiti
- Un server che esegue CentOS 7 x86_64 (64 bit) con almeno 1 GB o RAM
- Nome di dominio con
A
/AAAA
record impostati - Un utente non root con privilegi sudo.
Passaggi iniziali
Controlla la versione di CentOS:
cat /etc/centos-release
# CentOS Linux release 7.5.1804 (Core)
Imposta il fuso orario:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Aggiorna i pacchetti del tuo sistema operativo (software):
sudo yum update -y
Installa i pacchetti necessari per completare questo tutorial:
sudo yum install -y curl wget vim bash-completion git socat epel-release
Per semplicità, disabilita SELinux e Firewall:
sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service
Passaggio 1:installa Node.js e npm
NodeBB è basato su Node.js. Stiamo per installare consigliato versione per NodeBB che è versione 8 nel momento in cui scrivo. Su Linux hai alcune opzioni di installazione di Node.js:Linux Binaries (x86/x64), Source Code o tramite Package Manager. Useremo l'opzione Package Management che rende l'installazione e l'aggiornamento di Node.js un gioco da ragazzi.
Scarica e installa l'ultima versione di supporto a lungo termine (LTS) di Node.js dal repository Nodesource:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
Per compilare e installare componenti aggiuntivi nativi da npm potresti anche aver bisogno di installare strumenti di compilazione:
sudo yum install -y gcc-c++ make
# or
# sudo yum groupinstall -y 'Development Tools'
NOTA :npm è distribuito con Node.js, il che significa che quando scarichi Node.js, ottieni automaticamente npm installato sul tuo sistema.
Controlla le versioni di Node.js e npm :
node -v && npm -v
# v8.12.0
# 6.4.1
Npm è un progetto separato da Node.js e tende ad aggiornarsi più frequentemente. Di conseguenza, anche se hai appena scaricato Node.js (e quindi npm), probabilmente dovrai aggiornare il tuo npm. Fortunatamente, npm sa come aggiornarsi! Per aggiornare il tuo npm, digita questo nel tuo terminale:
sudo npm install -g [email protected]
Questo comando aggiornerà npm all'ultima versione stabile.
Fase 2:installa e configura MongoDB
NodeBB ha bisogno del database per archiviare i suoi dati e supporta MongoDB e Redis. In questo tutorial, abbiamo scelto MongoDB come motore dell'archivio dati. Quindi, nei prossimi passaggi, scaricheremo e installeremo il database MongoDB dal repository rpm MongoDB ufficiale:
Crea un /etc/yum.repos.d/mongodb-org-4.0.repo
file, in modo da poter installare MongoDB direttamente utilizzando yum
:
sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo
Compila il file con il seguente contenuto:
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
Per installare l'ultima versione stabile del pacchetto MongoDB, immetti il seguente comando:
sudo yum install -y mongodb-org
Controlla la versione di MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.2
# db version v4.0.2
Avvia e abilita (impostalo per l'avvio al riavvio ) Servizio MongoDB:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Controlla lo stato del server di database MongoDB eseguendo:
sudo systemctl status mongod.service
# active (running)
Quindi, crea il database e l'utente MongoDB per NodeBB.
Connettiti prima al server MongoDB.
mongo
Passa all'admin
integrato banca dati.
> use admin
Crea un utente amministrativo.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
NOTA: Sostituisci il segnaposto <Enter a secure password>
con la tua password selezionata.
Aggiungi un nuovo database chiamato nodebb
.
> use nodebb
Il database verrà creato e il contesto passerà a nodebb
. Quindi crea il nodebb
utente con i privilegi appropriati.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
NOTA: Ancora una volta, sostituisci il segnaposto <Enter a secure password>
con la tua password selezionata.
Esci dalla shell Mongo.
> quit()
Riavvia MongoDB e verifica che l'utente amministrativo creato in precedenza possa connettersi.
sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin
Se tutto è andato bene, il tuo MongoDB dovrebbe essere installato e preparato per NodeBB. Nel passaggio successivo, ci occuperemo dell'installazione e della configurazione del server web.
Fase 3:installa il client Acme.sh e ottieni un certificato Let's Encrypt (opzionale )
Proteggere il tuo forum NodeBB con HTTPS non è necessario, ma è una buona pratica per proteggere il traffico del tuo sito. Per ottenere il certificato SSL da Let's Encrypt utilizzeremo il client Acme.sh. Acme.sh è un puro software shell unix per ottenere certificati SSL da Let's Encrypt con zero dipendenze.
Scarica e installa 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 [email protected]
cd ~
Controlla la versione di Acme.sh:
/etc/letsencrypt/acme.sh --version
# v2.8.0
Ottieni RSA e ECC/ECDSA certificati per il tuo dominio/nome host:
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength ec-256
Dopo aver eseguito i comandi precedenti, i tuoi certificati e chiavi sarà in:
- Per RSA :
/etc/letsencrypt/forum.example.com
directory. - Per ECC/ECDSA :
/etc/letsencrypt/forum.example.com_ecc
directory.
Fase 4:installa e configura Nginx
NodeBB può funzionare correttamente con molti server web. In questo tutorial, abbiamo selezionato Nginx.
Scarica e importa prima la chiave PGP del repository Nginx:
wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key
Dopo aver importato la chiave, puoi rimuoverla in sicurezza dal disco:
rm nginx_signing.key
Crea un /etc/yum.repos.d/nginx_mainline.repo
file, in modo da poter installare Nginx direttamente utilizzando yum
:
sudo vim /etc/yum.repos.d/nginx_mainline.repo
Compila il file con il seguente contenuto:
[nginx] name=nginx repo baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=1 enabled=1
Infine, per installare l'ultima versione principale del pacchetto Nginx, emetti il seguente comando:
sudo yum install -y nginx
Dopo l'installazione, puoi verificare la versione di Nginx eseguendo:
nginx -v
# 1.15.3
Avvia e abilita (impostalo per l'avvio al riavvio ) Servizio Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Controlla lo stato del server web Nginx eseguendo:
sudo systemctl status nginx.service
# active (running)
NodeBB per impostazione predefinita viene eseguito sulla porta 4567
. Per evitare di digitare http://example.com:4567
, configureremo Nginx come proxy inverso per l'applicazione NodeBB. Ogni richiesta in porto 80
o 443
(se viene utilizzato SSL ) verrà inoltrato alla porta 4567
.
Esegui sudo vim /etc/nginx/conf.d/nodebb.conf
e configura Nginx come proxy inverso HTTPS.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name forum.example.com;
client_max_body_size 50M;
# 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";
}
}
Controlla la configurazione di Nginx:
sudo nginx -t
Infine, affinché le modifiche abbiano effetto, dobbiamo ricaricare Nginx:
sudo systemctl reload nginx.service
Fase 5:installa e configura NodeBB
Crea una directory principale del documento in cui dovrebbe risiedere NodeBB:
sudo mkdir -p /var/www/nodebb
Vai alla directory principale del documento:
cd /var/www/nodebb
Modifica la proprietà del /var/www/nodebb
directory a tuo_utente.
sudo chown -R [your_user]:[your_user] /var/www/nodebb
NOTA: Sostituisci your_user nel comando precedente con il tuo utente non root che avresti dovuto creare come prerequisito per questo tutorial .
Clona l'ultimo repository NodeBB nella cartella principale del documento:
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Avvia lo script di configurazione eseguendo l'app con setup
bandiera:
./nodebb setup
Al termine della configurazione di NodeBB, esegui ./nodebb start
per avviare manualmente il tuo server NodeBB:
./nodebb start
Dopo aver eseguito questo comando, dovresti essere in grado di accedere al tuo nuovissimo forum nel tuo browser web:
Passaggio 6:esegui NodeBB come servizio di sistema
All'avvio tramite ./nodebb start
, NodeBB non si riavvierà automaticamente al riavvio del sistema. Per evitarlo, dovremo configurare NodeBB come servizio di sistema.
Se in esecuzione, arresta NodeBB:
./nodebb stop
Crea un nuovo nodebb
utente:
sudo useradd nodebb
Modifica la proprietà del /var/www/nodebb
directory in nodebb
utente:
sudo chown -R nodebb:nodebb /var/www/nodebb
Crea nodebb.service
file di configurazione dell'unità systemd. Questo file di unità gestirà l'avvio di NodeBB demone. Esegui sudo vim /etc/systemd/system/nodebb.service
e aggiungi i seguenti contenuti:
[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
NOTA: Imposta il nome utente e i percorsi della directory in base ai nomi scelti.
Abilita nodebb.service
al riavvio e avvia immediatamente nodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Controlla il nodebb.service
stato:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Congratulazioni! Hai installato e distribuito correttamente la piattaforma di discussione NodeBB sul server CentOS 7.
Link
- https://nodebb.org/
- https://docs.nodebb.org/