Εγκατάσταση κόμβου
Εγκατάσταση του Nginx
Ξεκινώντας το έργο μας Keystone
Αρχικοποίηση της βάσης δεδομένων μας
Εγκατάσταση PM2
Εκτέλεση/Διαχείριση εφαρμογής σε PM2
Ρύθμιση του αντίστροφου διακομιστή μεσολάβησης
Σε αυτό το σεμινάριο, θα ρυθμίσουμε έναν διακομιστή ιστού με αντίστροφο διακομιστή μεσολάβησης. Το CMS που θα χρησιμοποιήσουμε είναι το Keystone.js, ένα πολύ γνωστό πλαίσιο εφαρμογών ιστού που βασίζεται στο Express.js. Ο αντίστροφος διακομιστής μεσολάβησης που θα χρησιμοποιήσουμε είναι ο Nginx, ο οποίος είναι ένας δωρεάν και ανοιχτού κώδικα αντίστροφος διακομιστής μεσολάβησης, καθώς και ένας διακομιστής HTTP. Η βάση δεδομένων που θα χρησιμοποιήσουμε είναι η MongoDB, μια βάση δεδομένων εγγράφων NoSQL. Αυτό θα απαιτήσει να έχετε έναν τομέα με ρυθμισμένες εγγραφές. Εάν δεν έχετε αυτό το σετ, τότε προχωρήστε και φροντίστε το και επιστρέψτε σε αυτό το σεμινάριο.
Εγκατάσταση κόμβου
Αρχικά, θα εγκαταστήσουμε το Node.js, το οποίο είναι ένας διερμηνέας Javascript που βασίζεται στη μηχανή Javascript του Chrome V8.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
Εγκατάσταση του Nginx
Στη συνέχεια, θα εγκαταστήσουμε το Nginx, τον αντίστροφο διακομιστή μεσολάβησής μας.
sudo apt update
sudo apt install nginx
Αυτό θα ενημερώσει τις λίστες πακέτων και θα εγκαταστήσει το Nginx. Μόλις ολοκληρωθεί η εγκατάσταση, θα ρυθμίσουμε το έργο του κόμβου μας.
Ξεκινώντας το έργο μας Keystone
Δημιουργήστε το έργο κόμβου μας. Για να το κάνετε αυτό, απλώς δημιουργήστε έναν νέο φάκελο.
mkdir website
Στη συνέχεια, θα δημιουργήσουμε το package.json
αρχείο μας . Για να το κάνετε αυτό, απλώς εκτελέστε npm init
το στο τερματικό σας, συμπληρώστε τα πεδία και απαντήστε " yes
" για επιβεβαίωση. Αφού δημιουργήσετε το package.json
αρχείο, τότε θα εγκαταστήσουμε τις παρακάτω λειτουργικές μονάδες κόμβου.
sudo npm install -g generator-keystone
sudo npm install -g yo
Μόλις ολοκληρωθεί η λήψη τους, εκτελέστε τα παρακάτω.
yo keystone
Συμπληρώστε τα απαιτούμενα πεδία. Θα σας ζητήσει το project name
, το template engine
, email
για τον πίνακα ελέγχου και ούτω καθεξής. Εάν δεν ξέρετε τι να επιλέξετε, τότε οι προεπιλογές θα είναι καλές. Αφού ρυθμίσετε τις παραμέτρους της ρύθμισης του keystone, μπορούμε να ελέγξουμε εάν ο διακομιστής μας εκτελείται πληκτρολογώντας node keystone
για να ξεκινήσει η εφαρμογή σας. Από προεπιλογή, η εφαρμογή σας θα εκτελείται στο localhost
, στη θύρα 3000
. Σημειώστε ότι εάν δεν έχετε εγκαταστήσει το MongoDB, μια βάση δεδομένων δεν θα είναι διαθέσιμη αμέσως για εσάς. Μπορείτε να μάθετε πώς να το εγκαταστήσετε αργότερα στο σεμινάριο.
Ακολουθεί η βασική διάταξη καταλόγου για το Keystone.js:
/lib
- Εδώ θα αποθηκεύσετε τις προσαρμοσμένες βιβλιοθήκες σας και άλλον κώδικα.
/models
- Εδώ θα αποθηκεύσετε τα μοντέλα βάσης δεδομένων της εφαρμογής σας. Το KeystoneJS χρησιμοποιεί το MongoDB ως πάροχο βάσης δεδομένων.
/public
- Εδώ θα αποθηκεύονται τα στατικά σας αρχεία (CSS, JS, εικόνες κ.λπ.).
/routes/api
- Εδώ θα αποθηκεύονται οι ελεγκτές API της εφαρμογής σας.
/routes.views
- Οι ελεγκτές προβολής εφαρμογών θα αποθηκευτούν εδώ.
/templates
- Εδώ θα αποθηκευτούν όλα τα αρχεία προτύπων της εφαρμογής σας.
/updates
- Εδώ θα αποθηκευτούν τα σενάρια μετεγκατάστασής σας.
package.json
- Αυτό είναι το αρχείο διαμόρφωσης npm που δημιούργησε για εμάς η γεννήτρια.
keystone.js
- Το βασικό μας αρχείο εκκίνησης, το εκτελούμε κατά την εκκίνηση του ιστότοπου.
Αρχικοποίηση της βάσης δεδομένων μας
Όπως αναφέρθηκε προηγουμένως, η βάση δεδομένων μας που θα χρησιμοποιήσουμε είναι η MongoDB, η οποία είναι μια αξιόπιστη βάση δεδομένων NoSQL, προσανατολισμένη στα έγγραφα. Εάν έχετε ήδη εγκαταστήσει το MongoDB, μπορείτε να παραλείψετε αυτήν την ενότητα. Αν όχι, τότε δείτε πώς να το εγκαταστήσετε στο Ubuntu 16.04.
Εισαγάγετε το δημόσιο κλειδί που χρησιμοποιείται για το πακέτο mongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Δημιουργήστε το αρχείο λίστας που χρησιμοποιήθηκε για την εγκατάσταση του πακέτου.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Ενημερώστε τις λίστες πακέτων χρησιμοποιώντας το apt
.
sudo apt update
Τέλος, εγκαταστήστε το MongoDB.
sudo apt install mongodb-org -y
Όταν ολοκληρωθεί αυτή η εγκατάσταση, ξεκινήστε το MongoDB.
sudo service mongod start
Αυτό θα ξεκινήσει τη διαδικασία MongoDB στη θύρα 27017
.
Το MongoDB θα χρησιμοποιηθεί σε όλη την εφαρμογή και θα χρησιμοποιηθεί για την αποθήκευση πληροφοριών που χρησιμοποιούμε για τα μοντέλα μας, για παράδειγμα ένα User
μοντέλο. Το Keystone το χρησιμοποιεί ως βάση δεδομένων της επιλογής του και αυτή τη στιγμή δεν μπορείτε να χρησιμοποιήσετε άλλους προμηθευτές βάσεων δεδομένων.
Εγκατάσταση PM2
Τώρα ήρθε η ώρα να εγκαταστήσετε το PM2 (Process Manager 2.) Το PM2 είναι ένας διαχειριστής διεργασιών για εφαρμογές Node.js, με τη μορφή μιας λειτουργικής μονάδας npm. Παρέχει έναν εύκολο τρόπο για να διαχειρίζεστε τις εφαρμογές σας και να τις εκτελείτε στο παρασκήνιο. Επειδή είναι σε NPM, το μόνο που πρέπει να κάνουμε για να το εγκαταστήσουμε είναι να εκτελέσουμε τα εξής.
sudo npm install pm2 -g
Αυτό λέει στο npm να το εγκαταστήσει καθολικά, ώστε να μπορούμε να το χρησιμοποιήσουμε οπουδήποτε στο σύστημά μας.
Εκτέλεση/Διαχείριση εφαρμογής σε PM2
Νωρίτερα, εκτελέσαμε την εφαρμογή web μας με node keystone
. Με τα PM2, είναι λίγο διαφορετικά. Τώρα εκτελούμε την εφαρμογή κόμβου μας με τα εξής.
pm2 start keystone.js
Αυτό θα προσθέσει την εφαρμογή μας PM2 στη λίστα διαδικασιών μας και θα εμφανιστεί ένα μικρό πλαίσιο ώστε να μπορείτε να δείτε ότι είναι όντως online. Παρατηρήστε το πλαίσιο με την ετικέτα id
για τη διαδικασία σας. Κρατήστε αυτό κοντά, καθώς θα κάνουμε πολλές αναφορές σε αυτό αργότερα.
Για να δείτε τα αρχεία καταγραφής για την αίτησή σας.
pm2 logs [id]
Για παράδειγμα, pm2 logs 0
εάν αυτή είναι η πρώτη σας εφαρμογή PM2.
Για να διακόψετε την εφαρμογή Ιστού σας ανά πάσα στιγμή.
pm2 stop [id]
Για να διαγράψετε πλήρως την αίτησή σας.
pm2 delete [id]
Το PM2 έχει ακόμη και πίνακα ελέγχου παρακολούθησης, εάν θέλετε να δείτε μερικά βασικά στατιστικά στοιχεία για την εφαρμογή σας και μπορείτε να έχετε πρόσβαση σε αυτό με αυτό.
pm2 monit
Αυτό θα εμφανίσει ορισμένες βασικές πληροφορίες, όπως τη χρήση της μνήμης RAM, τη χρήση της CPU και το χρόνο λειτουργίας.
Ένα εξαιρετικό χαρακτηριστικό που προσφέρει το PM2 είναι το watching
. Ουσιαστικά, η παρακολούθηση είναι όταν το PM2 εντοπίζει αυτόματα τις αλλαγές σε οποιοδήποτε από τα αρχεία στον ίδιο κατάλογο με το αρχικό αρχείο σας και θα επανεκκινήσει αυτόματα την εφαρμογή σας. Για να το ενεργοποιήσετε, απλώς επανεκκινήστε την εφαρμογή σας, αλλά περάστε της μια σημαία ρολογιού.
pm2 restart [id] --watch
Για να απενεργοποιήσετε την παρακολούθηση αφού έχει ενεργοποιηθεί, απλώς εκτελέστε ξανά την ίδια εντολή και η παρακολούθηση θα απενεργοποιηθεί.
Σε αυτό το σεμινάριο, θα αφήσουμε την παρακολούθηση.
Ρύθμιση του αντίστροφου διακομιστή μεσολάβησης
Βεβαιωθείτε ότι έχετε εγκαταστήσει το Nginx. Εάν για κάποιο λόγο δεν είναι, ανατρέξτε στα παραπάνω βήματα.
Προσαρμόστε τις ρυθμίσεις του τείχους προστασίας σας. Στο Ubuntu, ufw
είναι το επίσημο τείχος προστασίας. Από προεπιλογή, οι συνδέσεις είναι αποκλεισμένες στη θύρα 80
. Πρέπει να προσθέσουμε μια εξαίρεση για το Nginx στη θύρα 80
, στην οποία θα εκτελείται η διαδικτυακή μας εφαρμογή.
sudo ufw allow 'Nginx HTTP'
Βεβαιωθείτε ότι ο διακομιστής σας Nginx εκτελείται.
systemctl status nginx
Κάτω από την Active
ενότητα, αν δείτε active (running)
, τότε είστε έτοιμοι. Εάν όχι, μπορείτε να δοκιμάσετε να επανεκκινήσετε την υπηρεσία.
systemctl restart nginx
Διαγράψτε το προεπιλεγμένο αρχείο διαμόρφωσης Nginx.
sudo rm /etc/nginx/sites-available/default
Δημιουργήστε ένα νέο και απλώς καλέστε το node
.
sudo nano /etc/nginx/sites-available/node
Επικολλήστε τα παρακάτω στο αρχείο και αντικαταστήστε τα example.com
με τον τομέα του ιστότοπού σας.
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:3000";
}
}
Σημειώστε ότι αυτό proxy_pass
υποδηλώνει την IP στην οποία εκτελείται η εφαρμογή Keystone τοπικά, η οποία βρίσκεται localhost
στη θύρα 3000
.
listen 80
είναι η θύρα στην οποία θέλουμε να κατευθυνθεί η εφαρμογή, η οποία σε αυτήν την περίπτωση είναι η θύρα 80
.
Στη συνέχεια, πρέπει να δημιουργήσουμε έναν συμβολικό σύνδεσμο ή έναν συμβολικό σύνδεσμο σε έναν φάκελο που ονομάζεται sites-enabled
. Η διαφορά μεταξύ sites-enabled
και sites-available
είναι ότι sites-enabled
στην πραγματικότητα φορτώνεται από το Nginx.
sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node
Τώρα το αρχείο διαμόρφωσής σας sites-available
θα είναι έτοιμο για χρήση και θα φορτωθεί από sites-enabled
. Για να εφαρμόσετε τη διαμόρφωση ώστε να τεθεί σε ισχύ, απλώς επανεκκινήστε το Nginx.
sudo systemctl restart nginx
Τέλος, επανεκκινήστε την εφαρμογή PM2
pm2 restart [id]
Τώρα μπορείτε να πλοηγηθείτε στον τομέα σας σε ένα πρόγραμμα περιήγησης και θα δείτε μια Welcome to Keystone
οθόνη, με έναν πίνακα για να συνδεθείτε.
Εάν το δείτε, τότε έχετε ρυθμίσει με επιτυχία έναν διακομιστή web παραγωγής Node.js. Εάν όχι, τότε μπορεί να έχετε κάνει λάθος ένα βήμα και μπορεί να θέλετε να επιστρέψετε και να ακολουθήσετε κάθε βήμα προσεκτικά.
Μπορείτε να μάθετε περισσότερα για το Nginx επισκεπτόμενοι τον ιστότοπό τους .
Ελπίζω να σας άρεσε αυτό το σεμινάριο και ελπίζω ότι αυτό σας βοήθησε να δημιουργήσετε τον δικό σας διακομιστή ιστού για παραγωγή στο Vultr VPS σας.