Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Node.js
Εγκαταστήστε και διαμορφώστε το MongoDB
Εγκαταστήστε και ρυθμίστε το Nginx
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό Let's Encrypt (προαιρετικό)
Εγκαταστήστε το NodeBB
Εκτελέστε το NodeBB με PM2
Το NodeBB είναι ένα λογισμικό φόρουμ που βασίζεται στο Node.js. Χρησιμοποιεί υποδοχές Ιστού για άμεσες αλληλεπιδράσεις και ειδοποιήσεις σε πραγματικό χρόνο. Ο πηγαίος κώδικας NodeBB φιλοξενείται δημόσια στο Github . Αυτός ο οδηγός θα σας καθοδηγήσει στη διαδικασία εγκατάστασης του NodeBB σε μια νέα παρουσία του FreeBSD 12 Vultr, χρησιμοποιώντας Node.js, MongoDB ως βάση δεδομένων, Nginx ως αντίστροφο διακομιστή μεσολάβησης και Acme.sh για πιστοποιητικά SSL.
Απαιτήσεις
Το NodeBB απαιτεί την εγκατάσταση του παρακάτω λογισμικού:
- Node.js έκδοση 6.9.0 ή νεότερη
- MongoDB έκδοση 2.6 ή μεταγενέστερη
- Nginx
- Git
- Ελάχιστη μνήμη RAM 1024MB
- Όνομα τομέα με ρύθμιση
A
/ AAAA
εγγραφές
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του FreeBSD.
uname -ro
# FreeBSD 12.0-RELEASE
Βεβαιωθείτε ότι το σύστημά σας FreeBSD είναι ενημερωμένο.
freebsd-update fetch install
pkg update && pkg upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα εάν δεν υπάρχουν στο σύστημά σας.
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Δημιουργήστε έναν νέο λογαριασμό χρήστη με το όνομα χρήστη που προτιμάτε (θα χρησιμοποιήσουμε 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!
Εκτελέστε την visudo
εντολή και αποσχολιάστε τη %wheel ALL=(ALL) ALL
γραμμή, για να επιτρέψετε στα μέλη της wheel
ομάδας να εκτελέσουν οποιαδήποτε εντολή.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Τώρα, μεταβείτε στον νέο χρήστη που δημιουργήσατε με su
.
su - johndoe
ΣΗΜΕΙΩΣΗ: Αντικαταστήστε το johndoe
με το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας.
sudo tzsetup
Εγκαταστήστε το Node.js
Το NodeBB οδηγείται από το Node.js και επομένως πρέπει να εγκατασταθεί. Συνιστάται η εγκατάσταση της τρέχουσας έκδοσης LTS του Node.js.
Εγκαταστήστε τα Node.js και npm.
sudo pkg install -y node10 npm-node10
Ελέγξτε τις εκδόσεις.
node -v && npm -v
# v10.15.3
# 6.9.0
Το MongoDB είναι η προεπιλεγμένη βάση δεδομένων για το NodeBB.
Εγκαταστήστε το MongoDB.
sudo pkg install -y mongodb40
Ελέγξτε την έκδοση.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
Ενεργοποιήστε και ξεκινήστε το MongoDB.
sudo sysrc mongod_enable=yes
sudo service mongod start
Δημιουργήστε μια βάση δεδομένων και έναν χρήστη για το 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 service mongod restart
mongo -u admin -p your_password --authenticationDatabase=admin
Εγκαταστήστε το Nginx.
sudo pkg install -y nginx
Ελέγξτε την έκδοση.
nginx -v
# nginx version: nginx/1.14.2
Ενεργοποιήστε και ξεκινήστε το Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
Το NodeBB εκτελείται από προεπιλογή στη θύρα 4567
. Για να αποφύγουμε την πληκτρολόγηση http://example.com:4567
, θα διαμορφώσουμε το Nginx ως αντίστροφο διακομιστή μεσολάβησης για την εφαρμογή NodeBB. Κάθε αίτημα για θύρα 80
ή 443
, εάν χρησιμοποιείται SSL, θα προωθείται στη θύρα 4567
.
Εκτελέστε sudo vim /usr/local/etc/nginx/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
οδηγία με τον τομέα/όνομα κεντρικού υπολογιστή σας.
Αποθηκεύστε το αρχείο και βγείτε με :+ W+ Q.
Τώρα πρέπει να συμπεριλάβουμε nodebb.conf
στο κύριο nginx.conf
αρχείο.
Εκτελέστε sudo vim /usr/local/etc/nginx/nginx.conf
και προσθέστε την ακόλουθη γραμμή στο http {}
μπλοκ.
include nodebb.conf;
Ελέγξτε τη διαμόρφωση.
sudo nginx -t
Επαναφόρτωση Nginx.
sudo service nginx reload
Εγκαταστήστε το πρόγραμμα-πελάτη 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 ~
Ελέγξτε την έκδοση.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Λάβετε πιστοποιητικά 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 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
Αφού εκτελέσετε τις παραπάνω εντολές, τα πιστοποιητικά και τα κλειδιά σας θα βρίσκονται σε:
- RSA:
/etc/letsencrypt/forum.example.com
.
- ECC/ECDSA:
/etc/letsencrypt/forum.example.com_ecc
.
Αφού λάβουμε πιστοποιητικά από το Let's Encrypt, πρέπει να ρυθμίσουμε το Nginx για να τα χρησιμοποιήσουμε.
Εκτελέστε sudo vim /usr/local/etc/nginx/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 service nginx reload
Εγκαταστήστε το NodeBB
Δημιουργήστε έναν ριζικό κατάλογο εγγράφων.
sudo mkdir -p /usr/local/www/nodebb
Αλλάξτε την ιδιοκτησία του /usr/local/www/nodebb
καταλόγου σε johndoe
.
sudo chown -R johndoe:johndoe /usr/local/www/nodebb
Μεταβείτε στον ριζικό φάκελο του εγγράφου.
cd /usr/local/www/nodebb
Κλωνοποιήστε το πιο πρόσφατο NodeBB στον ριζικό φάκελο του εγγράφου.
git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .
Εκτελέστε την εντολή ρύθμισης NodeBB και απαντήστε σε κάθε ερώτηση όταν σας ζητηθεί.
./nodebb setup
Αφού ολοκληρωθεί η ρύθμιση του NodeBB, εκτελέστε ./nodebb start
τη μη αυτόματη εκκίνηση του διακομιστή NodeBB.
./nodebb start
Μετά από αυτήν την εντολή, θα μπορείτε να αποκτήσετε πρόσβαση στην παρουσία του φόρουμ NodeBB σε ένα πρόγραμμα περιήγησης ιστού.
Εκτελέστε το NodeBB με PM2
Κατά την εκκίνηση μέσω ./nodebb start
, το NodeBB δεν θα επανεκκινηθεί ξανά αυτόματα κατά την επανεκκίνηση του συστήματος. Για να αποφευχθεί αυτό, θα χρειαστεί να ρυθμίσουμε το NodeBB ως υπηρεσία συστήματος.
Εάν εκτελείται, σταματήστε το NodeBB.
./nodebb stop
Εγκαταστήστε το PM2 παγκοσμίως.
sudo npm install pm2 -g
Ελέγξτε την έκδοση.
pm2 -v
# 3.5.0
Μεταβείτε στη ρίζα του εγγράφου NodeBB.
cd /usr/local/www/nodebb
Εκκινήστε το NodeBB μέσω PM2.
pm2 start app.js
Καταχωρίστε τη διαδικασία NodeBB.
pm2 ls
Εντοπίστε το διαθέσιμο αρχικό σύστημα.
pm2 startup
Αντιγράψτε και επικολλήστε την έξοδο αυτής της εντολής στο CLI για να ρυθμίσετε το άγκιστρο εκκίνησης.
Αποθηκεύστε τη λίστα διαδικασιών σας.
pm2 save
Αυτό είναι. Η παρουσία σας NodeBB είναι τώρα σε λειτουργία.