Πώς να εγκαταστήσετε το Apache με Virtual Host στο CentOS 8


Ο διακομιστής ιστού Apache είναι ένας ανοιχτός κώδικας και δημοφιλής διακομιστής ιστού HTTP που συνεχίζει να απολαμβάνει τεράστιο μερίδιο αγοράς στη βιομηχανία φιλοξενίας. Αποστέλλεται με πολλά χαρακτηριστικά, όπως βελτιώσεις μονάδων, υποστήριξη πολλαπλών πρωτοκόλλων, απλοποιημένη διαμόρφωση και υποστήριξη πολλών γλωσσών για να αναφέρουμε μόνο μερικές.

Σε αυτόν τον οδηγό, θα σας καθοδηγήσουμε στην εγκατάσταση του διακομιστή ιστού Apache σε CentOS 8 και RHEL 8 με περιβάλλον εικονικού κεντρικού υπολογιστή. Τη στιγμή της συγγραφής αυτού του σεμιναρίου, η πιο πρόσφατη έκδοση του Apache είναι το Apache 2.2.43.

Εγκατάσταση διακομιστή Web Apache

Για να ξεκινήσετε, ενημερώστε πρώτα τη λίστα πακέτων συστήματος CentOS 8 ή RHEL 8 χρησιμοποιώντας την ακόλουθη εντολή dnf.

$ sudo dnf update

Μόλις ολοκληρωθεί η ενημέρωση, εγκαταστήστε τον διακομιστή ιστού Apache εκτελώντας την ακόλουθη εντολή.

$ sudo dnf install httpd

Μόλις εγκατασταθεί, μπορείτε να επαληθεύσετε την έκδοση του Apache εκτελώντας την εντολή rpm.

$ rpm -qi httpd

Η εντολή εκτυπώνει μια σειρά πληροφοριών όπως η έκδοση, η ημερομηνία κυκλοφορίας, η κατασκευή και η αρχιτεκτονική του πακέτου.

Για να ξεκινήσετε την υπηρεσία web Apache HTTP, εκτελέστε την εντολή systemctl.

$ sudo systemctl start httpd

Για να επιβεβαιώσετε εάν η υπηρεσία εκτελείται, εκτελέστε.

$ sudo systemctl status httpd

Από την έξοδο, η κατάσταση «ενεργός» με πράσινο χρώμα υποδεικνύει ότι ο διακομιστής ιστού Apache είναι σε λειτουργία και λειτουργεί.

Για να διαγράψετε τυχόν αμφιβολίες ότι εκτελείται ο διακομιστής ιστού, ζητήστε μια δοκιμαστική σελίδα από τον Apache περιηγώντας τη διεύθυνση IP ή το όνομα τομέα του διακομιστή σας όπως φαίνεται.

http://server-ip  

Μπορείτε να αποκτήσετε την IP του διακομιστή σας εκτελώντας την εντολή curl.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com

Όταν περιηγείστε στη διεύθυνση IP του διακομιστή, θα πρέπει να εμφανίζεται η παρακάτω ιστοσελίδα.

Αυτή είναι μια σίγουρη επιβεβαίωση ότι ο διακομιστής web εκτελείται.

Διαχείριση διακομιστή Web Apache

Με το Apache εγκατεστημένο και σε λειτουργία, μπορείτε να χρησιμοποιήσετε το εργαλείο επιθεώρησης systemctl για να διαχειριστείτε τον Apache.

Για παράδειγμα, για να σταματήσετε το Apache, εκτελέστε την εντολή:

$ sudo systemctl stop httpd

Για να ξεκινήσετε ξανά την υπηρεσία, εκτελέστε:

$ sudo systemctl start httpd

Εάν έχετε κάνει αλλαγές σε οποιοδήποτε από τα αρχεία διαμόρφωσής του και πρέπει να κάνετε επανεκκίνηση για να εφαρμόσετε τις αλλαγές, εκτελέστε την εντολή:

$ sudo systemctl restart httpd

Η επανεκκίνηση της υπηρεσίας συνήθως προκαλεί διακοπή της υπηρεσίας. Μια καλύτερη εναλλακτική είναι απλώς να φορτώσετε ξανά χωρίς καμία διακοπή με τη σύνδεση.

$ sudo systemctl reload httpd

Για να ξεκινήσετε αυτόματα τον διακομιστή ιστού Apache κατά την εκκίνηση ή την επανεκκίνηση, εκτελέστε την παρακάτω εντολή. Αυτό θα διασφαλίσει ότι το Apache ξεκινά αυτόματα χωρίς την παρέμβασή σας.

$ sudo systemctl enable httpd

Εάν επιλέξετε να μην ξεκινήσει αυτόματα η υπηρεσία κατά την εκκίνηση, εκτελέστε:

$ sudo systemctl disable httpd

Ρύθμιση εικονικών κεντρικών υπολογιστών Apache

Από προεπιλογή, ο διακομιστής ιστού Apache έχει ρυθμιστεί να εξυπηρετεί ή να φιλοξενεί μόνο έναν ιστότοπο. Εάν θέλετε να φιλοξενήσετε μόνο έναν ιστότοπο, τότε αυτό το βήμα δεν απαιτείται. Αλλά σε περίπτωση που σκοπεύετε να φιλοξενήσετε πολλούς τομείς στον διακομιστή σας, τότε θα πρέπει να ρυθμίσετε τους εικονικούς κεντρικούς υπολογιστές Apache.

Ένας εικονικός κεντρικός υπολογιστής είναι ένα ξεχωριστό αρχείο που περιέχει διαμορφώσεις που σας επιτρέπουν να ρυθμίσετε έναν ξεχωριστό τομέα από τον προεπιλεγμένο. Για αυτόν τον οδηγό, θα δημιουργήσουμε έναν εικονικό κεντρικό υπολογιστή για τον τομέα crazytechgeek.info.

Ο προεπιλεγμένος εικονικός κεντρικός υπολογιστής βρίσκεται στον κατάλογο /var/www/html. Αυτό λειτουργεί μόνο για έναν ιστότοπο. Για να δημιουργήσουμε έναν ξεχωριστό εικονικό κεντρικό υπολογιστή για τον τομέα μας, θα δημιουργήσουμε μια άλλη δομή καταλόγου στον κατάλογο /var/www όπως φαίνεται.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

Επιπλέον, μπορείτε επίσης να δημιουργήσετε έναν κατάλογο για την αποθήκευση αρχείων καταγραφής.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

Στη συνέχεια, επεξεργαστείτε τα δικαιώματα του αρχείου χρησιμοποιώντας τη μεταβλητή περιβάλλοντος $USER όπως φαίνεται.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Επίσης, προσαρμόστε τα δικαιώματα του καταλόγου webroot όπως φαίνεται.

$ sudo chmod -R 755 /var/www

Στη συνέχεια, δημιουργήστε ένα δείγμα αρχείου index.html όπως φαίνεται.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

Πατήστε το γράμμα i στο πληκτρολόγιο και επικολλήστε ένα δείγμα περιεχομένου όπως φαίνεται, το οποίο θα εμφανίζεται στο πρόγραμμα περιήγησης ιστού κατά τη δοκιμή του εικονικού κεντρικού υπολογιστή.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Αποθηκεύστε και βγείτε από το αρχείο διαμόρφωσης.

Με το δείγμα αρχείου ευρετηρίου και καταλόγου τοποθεσίας που δημιουργήθηκε, μπορείτε τώρα να προχωρήσετε και να δημιουργήσετε το αρχείο εικονικού κεντρικού υπολογιστή. Το αρχείο εικονικού κεντρικού υπολογιστή θα περιέχει τη διαμόρφωση του ιστότοπού του τομέα σας και θα καθοδηγεί τον Apache πώς θα ανταποκρίνεται στα αιτήματα των πελατών.

Το αρχείο εικονικού κεντρικού υπολογιστή θα περιέχει τη διαμόρφωση του ιστότοπού του τομέα σας και θα καθοδηγεί τον Apache πώς θα ανταποκρίνεται στα αιτήματα των πελατών. Ωστόσο, συνεχίζοντας, πρέπει να δημιουργήσετε 2 καταλόγους: τους καταλόγους sites-available και sites-enabled.

Το αρχείο εικονικού κεντρικού υπολογιστή θα αποθηκευτεί στον κατάλογο sites-available ενώ ο κατάλογος sites-enabled θα περιέχει τον συμβολικό σύνδεσμο προς τον εικονικό κεντρικό υπολογιστή.

Δημιουργήστε και τους δύο καταλόγους όπως φαίνεται.

$ sudo mkdir /etc/httpd/sites-available
$ sudo mkdir /etc/httpd/sites-enabled

Στη συνέχεια, τροποποιήστε το κύριο αρχείο διαμόρφωσης του διακομιστή ιστού Apache και δώστε εντολή στον Apache πού να εντοπίσει τον εικονικό κεντρικό υπολογιστή μέσα στον κατάλογο με ενεργοποιημένο τοποθεσίες.

$ sudo vim /etc/httpd/conf/httpd.conf

Προσθέστε τη γραμμή όπως φαίνεται στο τέλος του αρχείου διαμόρφωσης.

IncludeOptional sites-enabled/*.conf

Αποθήκευση και έξοδος.

Τώρα δημιουργήστε ένα εικονικό αρχείο κεντρικού υπολογιστή όπως φαίνεται:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

Επικολλήστε το περιεχόμενο παρακάτω και αντικαταστήστε το crazytechgeek.info με το δικό σας όνομα τομέα.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Αποθηκεύστε και βγείτε από το αρχείο.

Τώρα ενεργοποιήστε το αρχείο εικονικού κεντρικού υπολογιστή δημιουργώντας έναν συμβολικό σύνδεσμο στον κατάλογο sites-enabled.

$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Προσαρμογή των δικαιωμάτων SELinux για εικονικούς κεντρικούς υπολογιστές

Το CentOS 8 και το RHEL 8 διατίθενται με το SELinux που είναι μια μονάδα ασφαλείας για την ενίσχυση της ασφάλειας του συστήματος Linux. Εφόσον διαμορφώσατε έναν προσαρμοσμένο κατάλογο log στο προηγούμενο βήμα, πρέπει να ενημερώσετε ορισμένες πολιτικές του SELinux για να δώσετε εντολή στον διακομιστή ιστού Apache να εγγράψει στον κατάλογο.

Υπάρχουν 2 προσεγγίσεις για την προσαρμογή των πολιτικών του SELinux Apache: Προσαρμογή των πολιτικών προσαρμογής καθολικά και των πολιτικών σε έναν κατάλογο. Το τελευταίο προτιμάται γιατί προτιμάται περισσότερο.

Προσαρμογή πολιτικών SELinux σε έναν κατάλογο

Η επεξεργασία των δικαιωμάτων SELinux για τον κατάλογο καταγραφής σάς δίνει τον απόλυτο έλεγχο των πολιτικών του διακομιστή ιστού του Apache. Αυτή η μέθοδος είναι αρκετά χρονοβόρα και απαιτεί να διαμορφώσετε με μη αυτόματο τρόπο τον τύπο περιβάλλοντος για πρόσθετους καταλόγους που καθορίζονται στο αρχείο διαμόρφωσης εικονικού κεντρικού υπολογιστή.

Πριν ξεκινήσετε, επιβεβαιώστε πρώτα τον τύπο περιβάλλοντος που έχει εκχωρηθεί στον κατάλογο καταγραφής από το SELinux:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Η έξοδος πρέπει να είναι παρόμοια με αυτή που έχουμε παρακάτω.

Από την έξοδο, το σύνολο περιβάλλοντος είναι httpd_sys_content_t. Αυτό υποδηλώνει ότι ο διακομιστής web μπορεί να διαβάζει μόνο αρχεία στον κατάλογο καταγραφής. Πρέπει να αλλάξετε αυτό το περιβάλλον σε httpd_log_t για να επιτρέψετε στον Apache να δημιουργεί και να προσθέτει καταχωρίσεις καταγραφής στον κατάλογο.

Επομένως, εκτελέστε την εντολή:

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Εάν εμφανιστεί το σφάλμα παρακάτω \semanage: η εντολή δεν βρέθηκε.

Υπονοεί ότι τα πακέτα που παρέχουν την εντολή semanage δεν είναι εγκατεστημένα. Για να διορθώσετε αυτό το σφάλμα, πρέπει να εγκαταστήσετε αυτά τα πακέτα. Αλλά πρώτα, ελέγξτε ποια πακέτα παρέχουν την εντολή semanage εκτελώντας:

$ sudo dnf whatprovides /usr/sbin/semanage

Η έξοδος μας δίνει το πακέτο που προβλέπει τη διαχείριση, το οποίο είναι policycoreutils-python-utils.

Τώρα εγκαταστήστε το πακέτο όπως φαίνεται χρησιμοποιώντας τη διαχείριση πακέτων DNF.

$ sudo dnf install policycoreutils-python-utils

Η εντολή για την αλλαγή του περιβάλλοντος θα πρέπει τώρα να λειτουργεί.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Για να αποθηκεύσετε τις αλλαγές και να τις κάνετε επίμονες, εκδώστε την εντολή restorecon όπως φαίνεται:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

Μπορείτε να επιβεβαιώσετε τις αλλαγές εκτελώντας ξανά την εντολή:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Φροντίστε να σημειώσετε ότι ο τύπος περιβάλλοντος έχει αλλάξει σε httpd_log_t όπως φαίνεται στην έξοδο.

Κάντε επανεκκίνηση του Apache για να εφαρμοστούν οι αλλαγές.

$ sudo systemctl restart httpd

Μπορείτε τώρα να επιβεβαιώσετε εάν ο Apache αποθηκεύει αρχεία καταγραφής στον κατάλογο καταγραφής παραθέτοντας τα περιεχόμενά του όπως φαίνεται:

$ ls -l /var/www/crazytechgeek.info/log/

Θα πρέπει να μπορείτε να δείτε δύο αρχεία καταγραφής όπως φαίνεται: αρχείο καταγραφής σφαλμάτων και αρχεία καταγραφής αιτημάτων.

Δοκιμή εικονικού κεντρικού υπολογιστή Apache

Τέλος, πρέπει να βεβαιωθείτε ότι ο διακομιστής ιστού Apache εξυπηρετεί το αρχείο εικονικού κεντρικού υπολογιστή σας. Για να το κάνετε αυτό, ανοίξτε το πρόγραμμα περιήγησής σας και μεταβείτε στη διεύθυνση IP ή το όνομα τομέα του διακομιστή σας:

http://domain-name

Τέλειος! Αυτό δείχνει ότι όλα πήγαν καλά και ο εικονικός μας οικοδεσπότης εξυπηρετείται όπως αναμενόταν.

συμπέρασμα

Σε αυτόν τον οδηγό, μάθαμε πώς να εγκαταστήσουμε τον διακομιστή ιστού Apache σε CentOS 8 και RHEL 8 και επίσης πώς να ρυθμίσουμε ένα αρχείο εικονικού κεντρικού υπολογιστή για να προβολή περιεχομένου για έναν επιπλέον τομέα. Μη διστάσετε να διαμορφώσετε πολλά εικονικά αρχεία κεντρικού υπολογιστή, όπως κρίνετε κατάλληλο για να φιλοξενήσετε επιπλέον τομείς.

Εάν θέλετε να δημιουργήσετε μια πλήρη στοίβα φιλοξενίας, σας συνιστούσα να εγκαταστήσετε μια στοίβα LAMP στο CentOS 8.