Πλήρης οδηγός βήμα προς βήμα για την εγκατάσταση και τη ρύθμιση ενός διακομιστή web Nginx σε ένα σύστημα Ubuntu 20.04
Το Nginx είναι ένας ανοιχτός κώδικας και δημοφιλής διακομιστής web αντίστροφου διακομιστή μεσολάβησης διαθέσιμος σε πολλές πλατφόρμες. Το λογισμικό αναπτύχθηκε από Ιγκόρ Σίσοεφ ως λύση στο πρόβλημα C10K και κυκλοφόρησε για πρώτη φορά το 2004. Το πρόβλημα C10K είναι το πρόβλημα του χειρισμού δέκα χιλιάδων πελατών ταυτόχρονα, κάτι που δεν ήταν αρκετά εύκολο στις αρχές της δεκαετίας του 2000.
Σε αυτό το σεμινάριο, εξετάζουμε πώς να εγκαταστήσετε και να ρυθμίσετε το Nginx στο Ubuntu 20.04 LTS.
Προαπαιτούμενα
Ένα σύστημα με εγκατεστημένο το Ubuntu 20.04 και α sudo
χρήστης. Επιπλέον, δεν χρειάζεται να έχετε άλλο διακομιστή ιστού όπως ο Apache που να εκτελείται στη θύρα 80 ή 443.
Εγκατάσταση του Nginx
Το Nginx είναι διαθέσιμο στο αποθετήριο Ubuntu 20.04 και κατάλληλος
Ο διαχειριστής πακέτων μπορεί να χρησιμοποιηθεί για την εγκατάστασή του. Έτσι, για να εγκαταστήσετε το Nginx ανοίξτε το τερματικό χρησιμοποιώντας ctrl+alt+t
και τρέξε:
sudo apt update && sudo apt install nginx
Η εγκατάσταση θα ολοκληρωθεί σύντομα και ο δαίμονας Nginx θα ξεκινήσει αυτόματα στο παρασκήνιο. Έτσι, για να ελέγξετε την κατάσταση του Nginx, εκτελέστε:
sudo systemctl status nginx
Αφού εκτελέσετε την παραπάνω εντολή, θα πρέπει να λάβετε την κατάσταση Nginx ως ενεργό (τρέξιμο)
σε πράσινο όπως φαίνεται παρακάτω.
Διαμόρφωση τείχους προστασίας Ubuntu (UFW)
Από προεπιλογή, οι θύρες εξόδου HTTP (80) και HTTPS (443) είναι κλειστές στο Ubuntu 20.04. Επιπλέον, ο προεπιλεγμένος δαίμονας τείχους προστασίας ufw
είναι απενεργοποιημένο καθώς όλες οι θύρες είναι κλειστές.
Έτσι, για να αποκτήσετε πρόσβαση στον διακομιστή Nginx από άλλα συστήματα, θα πρέπει να ενεργοποιήσετε το ufw
και ρυθμίστε το σωστά για να επιτρέπεται η κυκλοφορία στη θύρα 80
και 443
. Πριν ενεργοποιήσετε ufw
, γνωρίζετε ότι εάν ρυθμίζετε το Nginx σε έναν απομακρυσμένο διακομιστή, ενημερώστε πρώτα το ufw
κανόνες που επιτρέπουν ssh
τρέχοντας:
sudo ufw επιτρέπω ssh
Η παραπάνω εντολή επιτρέπει το ssh
πρόσβαση στον απομακρυσμένο διακομιστή, χωρίς να επιτρέπεται ssh
θα κλειδωθείτε έξω από τον απομακρυσμένο διακομιστή.
Μετά την ενεργοποίηση ssh
πρόσβαση, μπορείτε να ενεργοποιήσετε το ufw
δαίμονας τείχους προστασίας εκτελώντας:
ενεργοποίηση sudo ufw
Τώρα, πρέπει να αλλάξετε τους κανόνες του τείχους προστασίας για να επιτρέψετε τις θύρες HTTP και HTTPS, ώστε το Nginx να μπορεί να εξυπηρετεί την κυκλοφορία ιστού. Για να αλλάξετε τους κανόνες, εκτελέστε:
sudo ufw επιτρέπει το "Nginx Full"
Nginx Full
επιτρέπει τόσο τις θύρες HTTP όσο και τις θύρες HTTPS για εισερχόμενη και εξερχόμενη κίνηση από όλες τις διευθύνσεις IP.
Μετά από αυτό, επαληθεύστε εάν οι κανόνες έχουν προστεθεί σωστά ufw
τείχος προστασίας εκτελώντας την εντολή:
κατάσταση sudo ufw
Η παραπάνω εντολή θα παράγει τους κανόνες στους οποίους προσθέσαμε ufw
δαίμονας τείχους προστασίας.
Σύνδεση στον διακομιστή Nginx
Τώρα που εγκαταστήσαμε το Nginx και ρυθμίσαμε ufw
για να επιτρέψετε την εισερχόμενη κίνηση ιστού HTTP και HTTPS, θα πρέπει να έχετε πρόσβαση στον διακομιστή Nginx χρησιμοποιώντας τη διεύθυνση IP του διακομιστή.
Εάν δεν γνωρίζετε τη διεύθυνση IP του διακομιστή, χρησιμοποιήστε την παρακάτω εντολή για να την ανακτήσετε εύκολα.
ip addr εμφάνιση eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Μόλις λάβετε τη διεύθυνση IP, επικολλήστε την στο πρόγραμμα περιήγησής σας και πατήστε enter.
//your-server-ip
Εάν όλα έχουν ρυθμιστεί σωστά, θα πρέπει να μπορείτε να δείτε την ιστοσελίδα «Καλώς ήρθατε στο nginx!».
Αρχεία και κατάλογοι Nginx
Τώρα που έχουμε εγκαταστήσει και τρέχει το Nginx στον διακομιστή σας. Ας ρίξουμε μια ματιά σε μερικά από τα σημαντικά αρχεία και καταλόγους Nginx που θα πρέπει να χρησιμοποιήσετε για να διαμορφώσετε τον ιστότοπο/την εφαρμογή Ιστού σας.
Περιεχόμενο διακομιστή Ιστού
Μπορείτε να διαμορφώσετε οποιαδήποτε τοποθεσία θέλετε να είναι ο ριζικός σας κατάλογος για το μπλοκ διακομιστή σας. Το προεπιλεγμένο HTML του Nginx είναι άμεσα /var/www/html
, εκεί βρίσκεται η σελίδα "καλωσόρισμα" στην οποία μεταβήκαμε νωρίτερα.
Άλλες τοποθεσίες που χρησιμοποιούνται συνήθως ως ριζικός κατάλογος για τομείς περιλαμβάνουν:
/Σπίτι//
/var/www/html/
/επιλέγω/
Αρχεία διαμόρφωσης Nginx
Όλα τα αρχεία διαμόρφωσης Nginx βρίσκονται στο /etc/nginx
Ευρετήριο. Ας δούμε μερικά από τα σημαντικά αρχεία που χρειαζόμαστε για να δημιουργήσουμε έναν βασικό τομέα.
/etc/nginx/nginx.conf
: Αυτό το αρχείο περιέχει όλες τις ρυθμίσεις που απαιτούνται για την εκτέλεση του Nginx./etc/nginx/sites-available/
: Αυτός ο κατάλογος έχει όλες τις ρυθμίσεις του μπλοκ διακομιστή των τομέων, αλλά επί του παρόντος δεν είναι ενεργοποιημένοι/ανεπτυγμένοι και επομένως δεν είναι προσβάσιμοι από τους πελάτες./etc/nginx/sites-enabled/
: Αυτός ο κατάλογος περιέχει ενεργούς/ενεργοποιημένους τομείς που είναι προσβάσιμοι από πελάτες. Για να ενεργοποιήσουμε έναν τομέα, πρέπει να συνδέσουμε το αρχείο διαμόρφωσης τομέα απότοποθεσίες-διαθέσιμες
στοενεργοποιημένοι ιστότοποι
Ευρετήριο./etc/nginx/snippets
/: Σε αυτόν τον κατάλογο, μπορούμε να αποθηκεύσουμε δυνητικά επαναχρησιμοποιήσιμα τμήματα διαμόρφωσης. Εξοικονομεί πολύ χρόνο στο περιβάλλον παραγωγής λόγω του γεγονότος ότι μπορεί να κάνει τα τμήματα/μπλοκ διαμόρφωσης επαναχρησιμοποιήσιμα.
Αρχεία καταγραφής διακομιστή
Το Nginx καταγράφει τα συμβάντα/δραστηριότητες και τα αποθηκεύει σε αρχεία καταγραφής στο /var/log/nginx
Ευρετήριο. Το Nginx καταγράφει τις δραστηριότητες σε αυτά τα αρχεία:
/var/log/nginx/access.log
: Αυτό το αρχείο καταγράφει τους πελάτες που έχουν πρόσβαση στον διακομιστή Nginx. Οι λεπτομέρειες περιλαμβάνουν τη διεύθυνση IP του πελάτη, την ώρα και την ημερομηνία, το πρόγραμμα περιήγησης που χρησιμοποιείται για την πρόσβαση στον διακομιστή και το λειτουργικό σύστημα./var/log/nginx/error.log
: Αυτό το αρχείο καταγράφει τα σφάλματα που αντιμετώπισε ο διακομιστής Nginx κατά την εκτέλεση.
Έτσι, σε αυτήν την ενότητα, εξετάσαμε εν συντομία μερικά σημαντικά αρχεία και καταλόγους Nginx που είναι αρκετά για να ξεκινήσετε.
Ρύθμιση μπλοκ διακομιστή
Τώρα που έχουμε κάποιες βασικές γνώσεις σχετικά με τα αρχεία και τον διακομιστή Nginx, είμαστε έτοιμοι να δημιουργήσουμε το δικό μας μπλοκ διακομιστή. Τα μπλοκ διακομιστή είναι παρόμοια με τους εικονικούς κεντρικούς υπολογιστές Apache.
Θα εξετάσουμε πώς να δημιουργήσουμε ένα μπλοκ διακομιστή και θα δείξουμε ότι θα χρησιμοποιήσουμε example.com
ως τομέας στη διαδικασία δημιουργίας.
💡 Αντικατάσταση example.com
με το όνομα τομέα σας.
Πριν ξεκινήσουμε τη διαμόρφωση των μπλοκ διακομιστών, πρέπει να δημιουργήσουμε έναν κατάλογο που θα χρησιμεύει ως ο ριζικός κατάλογος για το περιεχόμενο του ιστότοπου. Ας δημιουργήσουμε /var/www/example.com/html
κατάλογο για χρήση τομέα mkdir
εντολή.
sudo mkdir -p /var/www/example.com/html
ο -Π
Η επιλογή θα δημιουργήσει όλους τους γονικούς καταλόγους που χρειάζονται. Δηλαδή θα δημιουργήσει example.com
έναν γονικό κατάλογο για να html
αν δεν υπάρχει.
Αλλάξτε την ιδιοκτησία του καταλόγου με το USER $
μεταβλητή περιβάλλοντος:
sudo chown -R $USER:$USER /var/www/example.com/html
Στη συνέχεια, δημιουργήστε ένα απλό index.html
αρχείο στο οποίο θα έχετε πρόσβαση όταν επισκέπτεστε τον τομέα που διαμορφώνεται. Αυτό είναι μόνο για επεξηγηματικό σκοπό.
nano /var/www/example.com/html/index.html
Επικολλήστε το παρακάτω περιεχόμενο στο αρχείο που μόλις δημιουργήσαμε στον διακομιστή.
Καλώς ήρθατε στο example.com! Yo! Το example.com είναι προσβάσιμο!
Τύπος ctrl+o
για να γράψετε και να αποθηκεύσετε το index.html
αρχείο και, στη συνέχεια, πατήστε ctrl+x
για έξοδο νανο
συντάκτης.
Τώρα επιτέλους μπορούμε να προχωρήσουμε στη δημιουργία ενός μπλοκ διακομιστή, έτσι ώστε το Nginx να μπορεί να εξυπηρετήσει το index.html
όταν κάποιος χρήστης πηγαίνει στο example.com
. Έτσι, για να δημιουργήσουμε ένα μπλοκ διακομιστή πρέπει να δημιουργήσουμε ένα αρχείο διαμόρφωσης με το όνομα example.com
σε τοποθεσίες-διαθέσιμες
Ευρετήριο. Για να το κάνουμε αυτό, χρησιμοποιούμε nano και τρέχουμε:
sudo nano /etc/nginx/sites-available/example.com
Στη συνέχεια, είτε πληκτρολογήστε είτε αντιγράψτε/επικολλήστε την παρακάτω διαμόρφωση. Στη συνέχεια πατήστε ctrl+o
και μπείτε για εγγραφή και αποθήκευση. Ομοίως, πατήστε ctrl+x
για να κλείσετε το nano editor.
διακομιστής { ακούω 80; ακούστε [::]:80; server_name example.com www.example.com; root /var/www/example-domain.com/html; ευρετήριο index.html; τοποθεσία / { try_files $uri $uri/ =404; } }
Η παραπάνω διαμόρφωση είναι παρόμοια με την προεπιλεγμένη διαμόρφωση μπλοκ διακομιστή, έχουμε αλλάξει ρίζα
δήλωση για να δείξει στον νέο μας ριζικό κατάλογο και άλλαξε το όνομα διακομιστή
στο όνομα τομέα μας. Ενώ το τοποθεσία{}
Η δήλωση χρησιμεύει ως δήλωση σύλληψης σφάλματος εάν δεν βρεθούν αρχεία και εμφανίζει το σφάλμα 404 στον πελάτη.
Στη συνέχεια, μπορούμε να ενεργοποιήσουμε το μπλοκ διακομιστή μας έτσι ώστε το Nginx να εξυπηρετεί example.com
ιστοσελίδες. Για να ενεργοποιήσουμε το μπλοκ διακομιστή μας, πρέπει να δημιουργήσουμε έναν συμβολικό σύνδεσμο του example.com
αρχείο από τοποθεσίες-διαθέσιμες
προς το ενεργοποιημένοι ιστότοποι
Ευρετήριο. Για να το κάνετε αυτό, εκτελέστε:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
Θα δημιουργηθεί ένας σύνδεσμος στο ενεργοποιημένο από τον ιστότοπο
κατάλογο και τώρα example.com
πρέπει να είναι ενεργοποιημένη. Τώρα έχουμε δύο μπλοκ διακομιστών ενεργοποιημένα στον διακομιστή μας Nginx, τα οποία θα ανταποκρίνονται στο αίτημα με βάση ακούω
και όνομα_διακομιστή
οδηγίες που αποθηκεύτηκαν σε example.com
διαμόρφωση μπλοκ διακομιστή.
Για να ελέγξετε εάν όλα τα αρχεία διαμόρφωσης είναι σωστά και δεν υπάρχει συντακτικό σφάλμα, εκτελέστε:
sudo nginx -τ
Τώρα, επιτέλους, επανεκκινήστε το Nginx για να εφαρμόσετε τις αλλαγές εκτελώντας την ακόλουθη εντολή:
sudo systemctl επανεκκίνηση του nginx
Το Nginx θα αρχίσει να εξυπηρετεί το μπλοκ διακομιστή σας τώρα, μπορείτε να μεταβείτε //το όνομα-τομέα σας
και δείτε ζωντανά την ιστοσελίδα σας.
Σημείωση: Για να λειτουργήσει η παραπάνω ενότητα, θα πρέπει να ρυθμίσετε τον δικό σας τομέα και να τον αντικαταστήσετε example.com
με το δικό σας όνομα τομέα. Επίσης, θα πρέπει να διαμορφώσετε το DNS για τον τομέα σας ώστε να οδηγεί στη διεύθυνση IP του διακομιστή Nginx.
Συμπερασματικά, εξετάσαμε πώς να εγκαταστήσετε το Nginx, να ρυθμίσετε τις παραμέτρους ufw
για να επιτρέψει την απομακρυσμένη πρόσβαση στον διακομιστή Nginx, συνδεδεμένο με το Nginx εξ αποστάσεως, εξοικειώθηκε με ορισμένα βασικά αρχεία και καταλόγους Nginx και έμαθε πώς να ρυθμίσετε ένα μπλοκ διακομιστή.
Για να μάθετε και να μάθετε περισσότερα για το Nginx, ίσως θέλετε να δείτε το wiki Nginx.