Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Node.js
Εγκαταστήστε και διαμορφώστε το MongoDB
Εγκαταστήστε και ρυθμίστε το Nginx
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό Let's Encrypt (προαιρετικό)
Εγκαταστήστε το NodeBB
Εκτελέστε το NodeBB ως υπηρεσία συστήματος
Το NodeBB είναι ένα φόρουμ που βασίζεται στο Node.js. Χρησιμοποιεί υποδοχές Ιστού για άμεσες αλληλεπιδράσεις και ειδοποιήσεις σε πραγματικό χρόνο. Ο πηγαίος κώδικας NodeBB φιλοξενείται δημόσια στο Github . Αυτός ο οδηγός θα σας καθοδηγήσει στη διαδικασία εγκατάστασης του NodeBB σε μια νέα παρουσία του Ubuntu 18.04 LTS Vultr χρησιμοποιώντας Node.js, MongoDB ως βάση δεδομένων, Nginx ως αντίστροφο διακομιστή μεσολάβησης και Acme.sh για πιστοποιητικά SSL.
Απαιτήσεις
Το NodeBB απαιτεί την εγκατάσταση του παρακάτω λογισμικού:
- Git
- Node.js έκδοση 6.9.0 ή μεταγενέστερη
- MongoDB έκδοση 2.6 ή μεταγενέστερη
- Nginx
- Ελάχιστη μνήμη RAM 1024MB
- Όνομα τομέα με ρύθμιση
A/ AAAAεγγραφές
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του Ubuntu.
lsb_release -ds
# Ubuntu 18.04 LTS
Δημιουργήστε έναν νέο non-rootλογαριασμό χρήστη με sudoπρόσβαση και μεταβείτε σε αυτόν.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
ΣΗΜΕΙΩΣΗ : Αντικαταστήστε το johndoeμε το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας.
sudo dpkg-reconfigure tzdata
Βεβαιωθείτε ότι το σύστημά σας είναι ενημερωμένο.
sudo apt update && sudo apt upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα.
sudo apt install -y git build-essential apt-transport-https
Εγκαταστήστε το 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.
sudo apt install -y mongodb
Ελέγξτε την έκδοση.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Δημιουργήστε μια βάση δεδομένων 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 mongodb.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/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
Ελέγξτε την έκδοση.
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 your_email@example.com
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 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
Αφού εκτελέσετε τις παραπάνω εντολές, τα πιστοποιητικά και τα κλειδιά σας θα βρίσκονται στους παρακάτω καταλόγους:
- 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αρχείο διαμόρφωσης μονάδας systemd. Αυτό το αρχείο μονάδας θα χειριστεί την εκκίνηση του δαίμονα NodeBB. Εκτελέστε 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 είναι τώρα σε λειτουργία.