Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Node.js
Εγκαταστήστε και διαμορφώστε το MongoDB
Εγκαταστήστε και ρυθμίστε το Nginx
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό Let's Encrypt (προαιρετικό)
Εγκαταστήστε το NodeBB
Εκτελέστε το NodeBB ως υπηρεσία συστήματος
Το NodeBB είναι ένα φόρουμ που βασίζεται στο Node.js. Χρησιμοποιεί υποδοχές Ιστού για άμεσες αλληλεπιδράσεις και ειδοποιήσεις σε πραγματικό χρόνο. Ο πηγαίος κώδικας NodeBB φιλοξενείται δημόσια στο Github . Αυτός ο οδηγός θα σας καθοδηγήσει στη διαδικασία εγκατάστασης του NodeBB σε μια νέα παρουσία του Debian 9 Vultr χρησιμοποιώντας Node.js, MongoDB ως βάση δεδομένων, Nginx ως αντίστροφο διακομιστή μεσολάβησης και Acme.sh για πιστοποιητικά SSL.
Απαιτήσεις
Το NodeBB απαιτεί την εγκατάσταση του παρακάτω λογισμικού:
- Git
- Node.js έκδοση 6.9.0 ή μεταγενέστερη
- MongoDB έκδοση 2.6 ή μεταγενέστερη
- Nginx
- Ελάχιστη μνήμη RAM 1024MB
- Όνομα τομέα με ρύθμιση
A
/ AAAA
εγγραφές
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του Debian.
lsb_release -ds
# Debian GNU/Linux 9.4 (stretch)
Βεβαιωθείτε ότι το σύστημά σας είναι ενημερωμένο.
apt update && apt upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα.
apt install -y sudo dirmngr git build-essential apt-transport-https
Δημιουργήστε έναν νέο non-root
λογαριασμό χρήστη με sudo
πρόσβαση και μεταβείτε σε αυτόν.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
ΣΗΜΕΙΩΣΗ : Αντικαταστήστε το johndoe
με το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας.
sudo dpkg-reconfigure tzdata
Εγκαταστήστε το Node.js
Το NodeBB οδηγείται από το Node.js και επομένως πρέπει να εγκατασταθεί. Συνιστάται η εγκατάσταση της τρέχουσας έκδοσης LTS του Node.js.
Εγκαταστήστε το Node.js από το αποθετήριο NodeSource.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
Επαληθεύστε την εγκατάσταση των Node.js και npm.
node -v && npm -v
# v10.15.0
# 5.6.0
Το MongoDB είναι η προεπιλεγμένη βάση δεδομένων για το NodeBB.
Εγκαταστήστε το MongoDB από το επίσημο αποθετήριο MongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org
Ελέγξτε την έκδοση.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.00
# db version v4.0.0
Ξεκινήστε και ενεργοποιήστε το MongoDB.
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Δημιουργήστε μια βάση δεδομένων MongoDB και έναν χρήστη για το NodeBB.
Συνδεθείτε στο MongoDB.
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>
με τον δικό σας κωδικό πρόσβασης που έχετε επιλέξει.
Βγείτε από το κέλυφος Mongo.
> quit()
Επανεκκινήστε το MongoDB και βεβαιωθείτε ότι ο διαχειριστής χρήστης που δημιουργήθηκε νωρίτερα μπορεί να συνδεθεί.
sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin
Εγκαταστήστε την πιο πρόσφατη κύρια έκδοση του Nginx από το επίσημο αποθετήριο Nginx.
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/debian/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx
Ελέγξτε την έκδοση.
sudo nginx -v
# nginx version: nginx/1.15.0
Ενεργοποιήστε και ξεκινήστε το Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Το NodeBB, από προεπιλογή, εκτελείται στη θύρα 4567
. Για να αποφύγουμε την πληκτρολόγηση http://example.com:4567
, θα διαμορφώσουμε το Nginx ως αντίστροφο διακομιστή μεσολάβησης για την εφαρμογή NodeBB. Κάθε αίτημα στη θύρα 80
ή 443
(εάν χρησιμοποιείται SSL) θα προωθείται στη θύρα 4567
.
Εκτελέστε sudo vim /etc/nginx/conf.d/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
οδηγία με τον τομέα/όνομα κεντρικού υπολογιστή σας.
Ελέγξτε τη διαμόρφωση.
sudo nginx -t
Επαναφόρτωση Nginx.
sudo systemctl reload nginx.service
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό Let's Encrypt (προαιρετικό)
Η ασφάλεια του φόρουμ σας με HTTPS δεν είναι απαραίτητη, αλλά θα εξασφαλίσει την επισκεψιμότητα του ιστότοπού σας. Το Acme.sh είναι ένα καθαρό λογισμικό κελύφους Unix για τη λήψη πιστοποιητικών SSL από την Let's Encrypt με μηδενικές εξαρτήσεις.
Κατεβάστε και εγκαταστήστε το 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 ~
source ~/.bashrc
Ελέγξτε την έκδοση.
acme.sh --version
# v2.7.9
Λάβετε πιστοποιητικά RSA και ECDSA για 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 [email protected] --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 [email protected] --ocsp-must-staple --keylength ec-256
Αφού εκτελέσετε τις παραπάνω εντολές, τα πιστοποιητικά και τα κλειδιά σας θα βρίσκονται στους παρακάτω καταλόγους:
- RSA:
/etc/letsencrypt/forum.example.com
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc
Αφού λάβουμε πιστοποιητικά από το Let's Encrypt, πρέπει να ρυθμίσουμε το Nginx για να τα χρησιμοποιήσουμε.
Εκτελέστε sudo vim /etc/nginx/conf.d/nodebb.conf
ξανά και διαμορφώστε το Nginx ως αντίστροφο διακομιστή μεσολάβησης 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";
}
}
Ελέγξτε τη διαμόρφωση.
sudo nginx -t
Επαναφόρτωση Nginx.
sudo systemctl reload nginx.service
Εγκαταστήστε το NodeBB
Δημιουργήστε έναν ριζικό κατάλογο εγγράφων.
sudo mkdir -p /var/www/nodebb
Αλλάξτε την ιδιοκτησία του /var/www/nodebb
καταλόγου σε johndoe
.
sudo chown -R johndoe:johndoe /var/www/nodebb
Μεταβείτε στον ριζικό φάκελο του εγγράφου.
cd /var/www/nodebb
Κλωνοποιήστε το πιο πρόσφατο NodeBB στον ριζικό φάκελο εγγράφων.
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Εκτελέστε την εντολή ρύθμισης NodeBB και απαντήστε σε κάθε ερώτηση όταν σας ζητηθεί.
./nodebb setup
Αφού ολοκληρωθεί η ρύθμιση του NodeBB, εκτελέστε ./nodebb start
τη μη αυτόματη εκκίνηση του διακομιστή NodeBB.
./nodebb start
Μετά από αυτήν την εντολή, θα μπορείτε να αποκτήσετε πρόσβαση στο φόρουμ σας στο πρόγραμμα περιήγησής σας.
Εκτελέστε το NodeBB ως υπηρεσία συστήματος
Κατά την εκκίνηση μέσω ./nodebb start
, το NodeBB δεν θα επανεκκινηθεί ξανά αυτόματα κατά την επανεκκίνηση του συστήματος. Για να αποφευχθεί αυτό, θα χρειαστεί να ρυθμίσουμε το NodeBB ως υπηρεσία συστήματος.
Εάν εκτελείται, σταματήστε το NodeBB.
./nodebb stop
Δημιουργία νέου nodebb
χρήστη:
sudo adduser nodebb
Αλλάξτε την ιδιοκτησία του /var/www/nodebb
καταλόγου σε nodebb
.
sudo chown -R nodebb:nodebb /var/www/nodebb
Δημιουργήστε ένα nodebb.service
αρχείο διαμόρφωσης μονάδας συστήματος. Αυτό το αρχείο μονάδας θα χειριστεί την εκκίνηση του NodeBB deamon. Εκτελέστε sudo vim /etc/systemd/system/nodebb.service
και συμπληρώστε το αρχείο με το ακόλουθο περιεχόμενο:
[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
ΣΗΜΕΙΩΣΗ: Ορίστε το όνομα χρήστη και τις διαδρομές καταλόγου σύμφωνα με τα ονόματα που έχετε επιλέξει.
Ενεργοποιήστε nodebb.service
κατά την επανεκκίνηση και ξεκινήστε αμέσως nodebb.service
.
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Ελέγξτε την nodebb.service
κατάσταση.
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
Αυτό είναι. Η παρουσία σας NodeBB είναι τώρα σε λειτουργία.