Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Node.js
Εγκαταστήστε και διαμορφώστε το MongoDB
Εγκαταστήστε και ρυθμίστε το Nginx
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό Let's Encrypt (προαιρετικό)
Εγκαταστήστε το NodeBB
Εκτελέστε το NodeBB ως υπηρεσία συστήματος
Το NodeBB είναι ένα φόρουμ που βασίζεται στο Node.js. Χρησιμοποιεί υποδοχές Ιστού για άμεσες αλληλεπιδράσεις και ειδοποιήσεις σε πραγματικό χρόνο. Ο πηγαίος κώδικας NodeBB φιλοξενείται δημόσια στο Github . Αυτός ο οδηγός θα σας καθοδηγήσει στη διαδικασία εγκατάστασης του NodeBB σε μια νέα παρουσία του Fedora 28 Vultr χρησιμοποιώντας Node.js, MongoDB ως βάση δεδομένων, Nginx ως αντίστροφο διακομιστή μεσολάβησης και Acme.sh για πιστοποιητικά SSL.
Απαιτήσεις
Το NodeBB απαιτεί την εγκατάσταση του παρακάτω λογισμικού:
- Git
- Node.js έκδοση 6.9.0 ή μεταγενέστερη
- MongoDB έκδοση 2.6 ή μεταγενέστερη
- Nginx
- Ελάχιστη μνήμη RAM 1024MB
- Όνομα τομέα με ρύθμιση
A/ AAAAεγγραφές
Πριν ξεκινήσεις
Ελέγξτε την έκδοση Fedora.
cat /etc/fedora-release
# Fedora release 28 (Twenty Eight)
Δημιουργήστε ένα νέο μη-root λογαριασμό χρήστη με sudoπρόσβαση και να μεταβείτε σε αυτό.
useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe
ΣΗΜΕΙΩΣΗ : Αντικαταστήστε το johndoeμε το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας.
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Βεβαιωθείτε ότι το σύστημά σας είναι ενημερωμένο.
sudo dnf check-upgrade || sudo dnf upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα.
sudo dnf install -y git wget vim gcc-c++ make
Για απλότητα, απενεργοποιήστε το SELinux και το Firewall.
sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Εγκαταστήστε το Node.js
Το NodeBB οδηγείται από το Node.js και επομένως πρέπει να εγκατασταθεί. Συνιστάται η εγκατάσταση της τρέχουσας έκδοσης LTS του Node.js.
Εγκαταστήστε το Node.js.
sudo dnf install -y nodejs
Επαληθεύστε την εγκατάσταση των Node.js και npm.
node -v && npm -v
# v8.11.3
# 5.6.0
Το MongoDB είναι η προεπιλεγμένη βάση δεδομένων για το NodeBB.
Εγκαταστήστε το MongoDB.
sudo dnf install -y mongodb mongodb-server
Ελέγξτε την έκδοση.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Ενεργοποιήστε και ξεκινήστε την υπηρεσία MongoDB.
sudo systemctl enable mongod.service
sudo systemctl start 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.
sudo dnf install -y nginx
Ελέγξτε την έκδοση.
sudo nginx -v
# nginx version: nginx/1.12.1
Ενεργοποιήστε και ξεκινήστε το 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
Ελέγξτε την έκδοση.
/etc/letsencrypt/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 useradd 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 είναι τώρα σε λειτουργία.