One place for hosting & domains

      Apache

      Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur Ubuntu 20.04 [Démarrage rapide]


      Introduction

      Dans ce guide de démarrage rapide, nous allons installer une pile LAMP sur un serveur Ubuntu 20.04.

      Pour une version plus détaillée de ce tutoriel, avec plus d’explications sur chaque étape, veuillez vous référer à Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur Ubuntu 20.04.

      Conditions préalables

      Pour suivre ce guide, vous devrez avoir accès à un serveur Ubuntu 20.04 en tant qu’utilisateur sudo.

      Étape 1 — Installer Apache

      Mettez à jour le cache de votre gestionnaire de paquets et installez ensuite Apache avec :

      • sudo apt update
      • sudo apt install apache2

      Une fois l’installation terminée, vous devrez ajuster les paramètres de votre pare-feu pour autoriser le trafic HTTP sur votre serveur. Exécutez la commande suivante pour autoriser l’accès externe sur le port 80 (HTTP) :

      • sudo ufw allow in "Apache"

      Avec l’ajout de la nouvelle règle de pare-feu, vous pouvez vérifier si le serveur est opérationnel en accédant à l’adresse IP publique ou au nom de domaine de votre serveur depuis votre navigateur web. Vous verrez une page comme celle-ci :

      Ubuntu 20.04 Apache par défaut 

      Étape 2 – Installer MySQL

      Nous allons maintenant installer MySQL, un système de gestion de base de données très répandu utilisé dans les environnements PHP.

      Là encore, utilisez apt pour acquérir et installer ce logiciel :

      • sudo apt install mysql-server

      Une fois l’installation terminée, il est recommandé d’exécuter un script de sécurité qui vient préinstallé avec MySQL. Lancez le script interactif en exécutant :

      • sudo mysql_secure_installation

      Il vous sera demandé si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN. Répondez Y pour oui, ou tout autre chose pour continuer sans activer. Si vous répondez « oui », il vous sera demandé de choisir un niveau de validation du mot de passe.

      Votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l’utilisateur root de MySQL. Même si la méthode d’authentification par défaut pour l’utilisateur root de MySQL dispense de l’utilisation d’un mot de passe, même si celui-ci est défini, vous devez définir ici un mot de passe fort pour plus de sécurité.

      Pour le reste des questions, appuyez sur Y et appuyez sur la touche ENTRÉE à chaque invite.

      Note : Au moment de la rédaction de ce document, la bibliothèque MySQL PHP native mysqlnd ne prend pas en charge caching_sha2_authentification,la méthode d’authentification par défaut pour MySQL 8. Pour cette raison, lorsque vous créez des utilisateurs de base de données pour des applications PHP sur MySQL 8, vous devez vous assurer qu’ils sont configurés pour utiliser le mot de passe mysql_native_password à la place. Veuillez vous référer à l’étape 6 de notre guide détaillé LAMP sur Ubuntu 20.04 pour apprendre comment le faire.

      Étape 3 – Installer PHP

      Pour installer PHP et ses dépendances, exécutez :

      • sudo apt install php libapache2-mod-php php-mysql

      Une fois l’installation terminée, vous pouvez exécuter la commande suivante pour confirmer votre version de PHP :

      Output

      PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

      Étape 4 – Création d’un hôte virtuel pour votre site web

      Dans ce guide, nous allons mettre en place un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine. 

      Apache sur Ubuntu 20.04 a un bloc serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site your_domain, en laissant/var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site. 

      Créez le répertoire pour your_domain comme suit : 

      • sudo mkdir /var/www/your_domain

      Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER qui fera référence à votre utilisateur actuel du système :

      • sudo chown -R $USER:$USER /var/www/your_domain

      Ensuite, ouvrez un nouveau fichier de configuration dans le répertoire sites-available d’Apache en utilisant votre éditeur de ligne de commande préféré :

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Cela créera un nouveau fichier vierge. Collez dans la configuration suivante :

      /etc/apache2/sites-available/your_domain.conf

      <VirtualHost *:80>
          ServerName your_domain
          ServerAlias www.your_domain
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/your_domain
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Enregistrez et fermez le fichier lorsque vous avez fini de le modifier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL+X, puis sur Y et sur ENTER.

      Vous pouvez désormais utiliser a2ensite pour activer le nouvel hôte virtuel : 

      • sudo a2ensite your_domain

      Pour désactiver le site web par défaut d’Apache, tapez :

      • sudo a2dissite 000-default

      Pour vous assurer que votre fichier de configuration ne contient pas d’erreurs de syntaxe, exécutez :

      • sudo apache2ctl configtest

      Enfin, relancez Apache pour que ces changements prennent effet :

      • sudo systemctl reload apache2

      Votre nouveau site web est maintenant actif, mais le root web /var/www/your_domain est toujours vide. Créez un fichier index.html à cet endroit afin que nous puissions vérifier que l’hôte virtuel fonctionne comme prévu :

      • nano /var/www/your_domain/index.html

      Incluez le contenu suivant dans ce dossier :

      /var/www/your_domain/index.html

      <html>
        <head>
          <title>your_domain website</title>
        </head>
        <body>
          <h1>Hello World!</h1>
      
          <p>This is the landing page of <strong>your_domain</strong>.</p>
        </body>
      </html>
      

      Now open your browser and access the domain name or IP address of your server on port 8000 :

      http://server_domain_or_IP
      

      Vous verrez une page comme celle-ci :

      Test de l'hôte virtuel Apache

      Étape 5 – Tester PHP avec Apache

      Nous allons maintenant créer un script de test PHP pour confirmer qu’Apache est capable de gérer et de traiter les demandes de fichiers PHP.

      Créer un nouveau fichier nommé info.php à l’intérieur de votre dossier root web personnalisé : 

      • nano /var/www/your_domain/info.php

      Cela ouvrira un fichier vierge. Ajoutez le contenu suivant dans le fichier :

      /var/www/your_domain/info.php

      <?php
      phpinfo();
      

      Lorsque vous avez terminé, enregistrez et fermez le fichier.

      Allez dans votre navigateur web et accédez au nom de domaine ou à l’adresse IP de votre serveur, suivi du nom du script, qui est dans ce cas info.php

      http://server_domain_or_IP/info.php
      

      Vous verrez une page similaire à celle-ci :

      Ubuntu 20.04 PHP info 

      Après avoir vérifié les informations pertinentes sur votre serveur PHP par le biais de cette page, il est préférable de supprimer le fichier que vous avez créé car il contient des informations sensibles sur votre environnement PHP — et votre serveur Ubuntu. Pour ce faire, vous pouvez utiliser rm :

      • sudo rm /var/www/your_domain/info.php

      Tutoriels connexes

      Voici des liens vers des guides plus détaillés relatifs à ce tutoriel :



      Source link

      So installieren Sie den Apache Webserver unter CentOS 8


      Einführung

      Der Apache-HTTP-Server ist der am häufigsten verwendete Webserver der Welt. Er bietet viele leistungsstarke Funktionen, darunter dynamisch ladbare Module, robuste Medienunterstützung und eine umfassende Integration mit anderer gängiger Software.

      In diesem Leitfaden installieren Sie einen Apache-Webserver mit virtuellen Hosts auf Ihrem CentOS 8-Server.

      Voraussetzungen

      Zur Absolvierung dieses Leitfadens benötigen Sie Folgendes:

      Schritt 1 — Installieren von Apache

      Apache ist in den Standard-Software-Repositorys von CentOS verfügbar und kann mit dem dnf-Paketmanager installiert werden.

      Installieren Sie das Apache-Paket als der non-root sudo user, der in den Voraussetzungen konfiguriert wurde:

      Nach der Bestätigung der Installation installiert dnf Apache und alle erforderlichen Abhängigkeiten.

      Wenn Sie dem im Abschnitt Voraussetzungen erwähnten Schritt 4 des Leitfadens Ersteinrichtung des Servers unter CentOS 8 gefolgt sind, haben Sie bereits firewalld auf Ihrem Server installiert, um Anforderungen über HTTP zu bedienen.

      Wenn Sie Apache so konfigurieren möchten, dass er auch Inhalte über HTTPS bedient, sollten Sie zudem Port 443 öffnen, indem Sie den https-Dienst aktivieren:

      • sudo firewall-cmd --permanent --add-service=https

      Laden Sie als Nächstes die Firewall neu, um diese neuen Regeln anzuwenden:

      • sudo firewall-cmd --reload

      Nach dem Neuladen der Firewall können Sie den Dienst starten und den Webserver überprüfen.

      Schritt 2 — Prüfen Ihres Webservers

      Apache startet beim Abschluss der Installation nicht automatisch auf CentOS, sodass Sie den Apache-Prozess manuell starten müssen:

      • sudo systemctl start httpd

      Überprüfen Sie mit dem folgenden Befehl, ob der Dienst ausgeführt wird:

      • sudo systemctl status httpd

      Wenn der Dienst ausgeführt wird, erhalten Sie einen active-Status:

      Output

      ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

      Die Ausgabe zeigt an, dass der Dienst erfolgreich gestartet wurde. Der beste Weg, dies zu testen, besteht jedoch darin, eine Seite von Apache anzufordern.

      Sie können auf die Standardstartseite von Apache zugreifen, um zu bestätigen, dass die Software ordnungsgemäß über Ihre IP-Adresse ausgeführt wird. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie von der Befehlszeile auf verschiedene Arten abrufen.

      Geben Sie q ein, um zur Eingabeaufforderung zurückzukehren, und geben Sie dann Folgendes ein:

      Dieser Befehl zeigt alle Netzwerkadressen des Hosts an, wodurch Sie einige IP-Adressen erhalten, die durch Leerzeichen getrennt sind. Sie können jede in Ihrem Webbrowser ausprobieren, um zu sehen, ob sie funktionieren.

      Alternativ können Sie curl verwenden, um Ihre IP von icanhazip.com anzufordern. Dadurch erhalten Sie Ihre öffentliche IPv4-Adresse, wie sie von einem anderen Ort im Internet gelesen wird:

      Wenn Sie über die IP-Adresse Ihres Servers verfügen, geben Sie sie in die Adressleiste Ihres Browsers ein:

      http://your_server_ip
      

      Sie sehen dann die Standardwebsite von CentOS 8 Apache:

      Standardseite Apache für CentOS 8

      Diese Seite zeigt an, dass Apache richtig funktioniert. Sie enthält auch einige grundlegende Informationen zu wichtigen Apache-Dateien und Verzeichnispositionen.

      Schritt 3 — Verwalten des Apache-Prozesses

      Nachdem der Dienst nun installiert ist und ausgeführt wird, können Sie jetzt verschiedene systemctl-Befehle verwenden, um den Dienst zu verwalten.

      Um Ihren Webserver anzuhalten, geben Sie Folgendes ein:

      • sudo systemctl stop httpd

      Um den Webserver zu starten, wenn er angehalten wurde, geben Sie Folgendes ein:

      • sudo systemctl start httpd

      Um den Dienst anzuhalten und erneut zu starten, geben Sie Folgendes ein:

      • sudo systemctl restart httpd

      Wenn Sie nur Konfigurationsänderungen vornehmen, kann Apache oft neu geladen werden, ohne Verbindungen zu trennen. Dazu verwenden Sie diesen Befehl:

      • sudo systemctl reload httpd

      Standardmäßig ist Apache so konfiguriert, dass er beim Booten des Servers automatisch startet. Wenn Sie dieses Verhalten nicht wünschen, können Sie es durch folgende Eingabe deaktivieren:

      • sudo systemctl disable httpd

      Geben Sie Folgendes ein, um den Dienst beim Booten wieder zu aktivieren:

      • sudo systemctl enable httpd

      Apache wird jetzt automatisch gestartet, wenn der Server erneut gebootet wird.

      Die Standardkonfiguration für Apache ermöglicht Ihrem Server, eine einzelne Website zu hosten. Wenn Sie mehrere Domänen auf Ihrem Server hosten möchten, müssen Sie virtuelle Hosts auf Ihrem Apache-Webserver konfigurieren.

      Schritt 4 — Einrichten eines virtuellen Hosts (Empfohlen)

      Bei Verwendung des Apache-Webservers können Sie virtuelle Hosts verwenden (diese sind ähnlich wie Serverblocks in Nginx), um Konfigurationsdetails einzuschließen und mehr als eine Domäne auf einem einzelnen Server zu hosten. In diesem Schritt richten wir eine Domäne namens example.com ein, aber Sie sollten diesen Namen durch Ihren eigenen Domänennamen ersetzen. Wenn Sie mit DigitalOcean einen Domänennamen einrichten, lesen Sie bitte unsere Netzwerkdokumentation.

      Apache unter CentOS 8 hat einen virtuellen Host, der standardmäßig aktiviert und so konfiguriert ist, dass er Dokumente aus dem /var/www/html-Verzeichnis bereitstellt. Das eignet sich gut für eine Site, kann aber umständlich werden, wenn Sie mehrere Sites hosten. Statt /var/www/html zu ändern, erstellen Sie eine Verzeichnisstruktur innerhalb von /var/www für die Site example.com und lassen dabei /var/www/html als Standardverzeichnis stehen, das bereitgestellt wird, wenn eine Client-Anforderung keine übereinstimmenden Sites hat.

      Erstellen Sie das html-Verzeichnis für example.com wie folgt und verwenden Sie das -p-Flag, um alle notwendigen übergeordneten Verzeichnisse zu erstellen:

      • sudo mkdir -p /var/www/example.com/html

      Erstellen Sie ein zusätzliches Verzeichnis, um Protokolldateien für die Site zu speichern:

      • sudo mkdir -p /var/www/example.com/log

      Weisen Sie als Nächstes das Eigentum am html-Verzeichnis mit der Umgebungsvariablen $USER zu:

      • sudo chown -R $USER:$USER /var/www/example.com/html

      Stellen Sie sicher, dass Ihre Webroot über die Standardberechtigungen verfügt:

      • sudo chmod -R 755 /var/www

      Erstellen Sie als Nächstes eine index.html-Seite durch die Verwendung von vi oder Ihrem bevorzugten Texteditor:

      • sudo vi /var/www/example.com/html/index.html

      Drücken Sie i, um zum INSERT-Modus zu wechseln, und fügen Sie der Datei folgende Beispiel-HTML hinzu:

      /var/www/example.com/html/index.html

      <html>
        <head>
          <title>Welcome to Example.com!</title>
        </head>
        <body>
          <h1>Success! The example.com virtual host is working!</h1>
        </body>
      </html>
      

      Speichern und schließen Sie die Datei, indem Sie ESC drücken, :wq eingeben und ENTER drücken.

      Mit dem fertig erstellten Siteverzeichnis und der Beispiel-Indexdatei sind Sie nun fast bereit, die virtuellen Host-Dateien zu erstellen. Virtuelle Host-Dateien legen die Konfiguration Ihrer einzelnen Sites fest und weisen den Apache-Webserver an, wie er auf verschiedene Domänenanforderungen reagieren soll.

      Vor der Erstellung Ihrer virtuellen Hosts müssen Sie ein sites-available-Verzeichnis erstellen, in der diese gespeichert werden. Sie erstellen auch ein sites-enabled-Verzeichnis, welches Apache anweist, dass ein virtueller Host verfügbar ist, um Besucher zu bedienen. Das sites-enabled-Verzeichnis enthält symbolische Links zu virtuellen Hosts, die wir veröffentlichen möchten. Erstellen Sie beide Verzeichnisse mit dem folgenden Befehl:

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

      Als Nächstes weisen Sie Apache an, im sites-enabled-Verzeichnis nach virtuellen Hosts zu suchen. Bearbeiten Sie dazu die Hauptkonfigurationsdatei von Apache mit vi oder Ihrem bevorzugten Texteditor und fügen Sie eine Zeile hinzu, die ein optionales Verzeichnis für zusätzliche Konfigurationsdateien deklariert:

      • sudo vi /etc/httpd/conf/httpd.conf

      Drücken Sie den Großbuchstaben G, um zum Ende der Datei zu navigieren. Drücken Sie dann i, um zum INSERT-Modus zu wechseln, und fügen Sie die folgende Zeile am Ende der Datei hinzu:

      /etc/httpd/conf/httpd.conf

      ...
      # Supplemental configuration
      #
      # Load config files in the "/etc/httpd/conf.d" directory, if any.
      IncludeOptional conf.d/*.conf
      IncludeOptional sites-enabled/*.conf
      

      Nach dem Hinzufügen der Zeile speichern und schließen Sie die Datei. Nachdem Sie nun die virtuellen Host-Verzeichnisse eingerichtet haben, erstellen Sie die virtuelle Host-Datei.

      Zuerst erstellen Sie eine neue Datei im sites-available-Verzeichnis:

      • sudo vi /etc/httpd/sites-available/example.com.conf

      Fügen Sie folgenden Konfigurationsblock hinzu und ändern Sie example.com auf Ihren Domänennamen:

      /etc/httpd/sites-available/example.com.conf

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

      Hierdurch wird Apache mitgeteilt, wo das Rootverzeichnis mit den öffentlich zugänglichen Webdokumenten zu finden ist. Außerdem wird Apache angewiesen, wo die Fehler- und Anforderungsprotokolle für die jeweilige Site zu speichern sind.

      Wenn Sie fertig sind, speichern und schließen Sie die Datei.

      Die virtuellen Host-Dateien sind nun erstellt und können aktiviert werden, damit Apache sie für Besucher bereitstellen kann. Erstellen Sie hierzu einen symbolischen Link für jeden virtuellen Host im sites-enabled-Verzeichnis:

      • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

      Ihr virtueller Host ist nun konfiguriert und bereit, Inhalte bereitzustellen. Vor dem Neustart des Apache-Dienstes prüfen wir, ob SELinux über die richtigen Richtlinien für Ihre virtuellen Hosts verfügt.

      Schritt 5 — Anpassen von SELinux-Berechtigungen für virtuelle Hosts (empfohlen)

      SELinux ist ein Sicherheitsmodul des Linux-Kernels, das eine höhere Sicherheit für Linux-Systeme bietet. CentOS 8 ist mit SELinux ausgestattet und konfiguriert, um mit der Apache-Konfiguration zu arbeiten. Da Sie durch Einrichten eines benutzerdefinierten Protokollverzeichnisses in der Konfigurationsdatei der virtuellen Hosts die Standardkonfiguration geändert haben, erhalten Sie beim Versuch, den Apache-Dienst zu starten, eine Fehlermeldung. Zur Lösung des Problems müssen Sie die Richtlinien von SELinux aktualisieren, damit Apache in die erforderlichen Dateien schreiben kann.

      Es gibt verschiedene Möglichkeiten, Richtlinien entsprechend den Anforderungen Ihrer Umgebung festzulegen, da SELinux Ihnen die Möglichkeit bietet, Ihre Sicherheitsstufe anzupassen. Dieser Schritt behandelt zwei Methoden zur Anpassung der Richtlinien von Apache: universell und in einem bestimmten Verzeichnis. Da es sicherer ist, Richtlinien von Verzeichnissen anzupassen, wird dieser Ansatz empfohlen.

      Universelles Anpassen der Apache-Richtlinien

      Wenn die Apache-Richtlinien universell festgelegt werden, wird SELinux angewiesen, alle Apache-Prozesse mit dem booleschen Argument httpd_unified identisch zu behandeln. Dieser Ansatz ist zwar bequemer, gibt Ihnen aber nicht das gleiche Maß an Kontrolle wie ein Ansatz, der sich auf eine Datei- oder Verzeichnisrichtlinie konzentriert.

      Führen Sie den folgenden Befehl aus, um universelle Apache-Richtlinien festzulegen:

      • sudo setsebool -P httpd_unified 1

      Der Befehl setsebool ändert boolesche SELinux-Werte. Das -P-Flag aktualisiert den Bootzeitwert, sodass diese Änderung auch bei Neustarts erhalten bleibt. httpd_unified ist das boolesche Argument, das SELinux anweist, alle Apache-Prozesse als den gleichen Typ zu behandeln. Sie haben es mit dem Wert von 1 aktiviert.

      Anpassen von Apache-Richtlinien in einem Verzeichnis

      Das individuelle Einrichten von SELinux-Berechtigungen für das Verzeichnis /var/www/example.com/log gibt Ihnen mehr Kontrolle über die Apache-Richtlinien, kann aber wartungsintensiver sein. Da es sich bei dieser Option nicht um eine universelle Festlegung von Richtlinien handelt, müssen Sie den Kontexttyp für alle neuen Protokollverzeichnisse, die in Ihren virtuellen Host-Konfigurationen angegeben sind, manuell festlegen.

      Überprüfen Sie zunächst den Kontexttyp, den SELinux dem Verzeichnis /var/www/example.com/log gegeben hat:

      • sudo ls -dlZ /var/www/example.com/log/

      Dieser Befehl listet den SELinux-Kontext des Verzeichnisses auf und gibt ihn aus. Sie werden eine Ausgabe sehen, die etwa folgendermaßen aussieht:

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      Der aktuelle Kontext ist httpd_sys_content_t, der SELinux mitteilt, dass der Apache-Prozess nur Dateien lesen kann, die in diesem Verzeichnis erstellt wurden. In diesem Leitfaden ändern Sie den Kontexttyp des Verzeichnisses /var/www/example.com/log zu httpd_log_t. Dieser Typ ermöglicht Apache, Protokolldateien von Web-Anwendungen zu generieren und an diese anzuhängen:

      • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

      Verwenden Sie als Nächstes den Befehl restorecon, um diese Änderungen anzuwenden und sie bei Neustarts beizubehalten:

      • sudo restorecon -R -v /var/www/example.com/log

      Das Flag -R führt diesen Befehl rekursiv aus. Das bedeutet, dass alle vorhandenen Dateien aktualisiert werden, um den neuen Kontext zu verwenden. Das Flag -v gibt die Kontextänderungen aus, die der Befehl vorgenommen hat. Sie erhalten die folgende Ausgabe, die die Änderungen bestätigt:

      Output

      Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

      Sie können die Kontexte erneut auflisten, um die Änderungen zu sehen:

      • sudo ls -dlZ /var/www/example.com/log/

      Die Ausgabe zeigt den aktualisierten Kontexttyp an:

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      Das Verzeichnis /var/www/example.com/log verwendet nun den Typ httpd_log_t​​​​​​ und Sie können jetzt die Konfiguration des virtuellen Hosts testen.

      Schritt 6 — Testen des virtuellen Hosts (empfohlen)

      Sobald der SELinux-Kontext mit einer der beiden Methoden aktualisiert wurde, kann Apache in das Verzeichnis /var/www/example.com/log schreiben.  Sie können jetzt den Apache-Dienst erfolgreich neu starten:

      • sudo systemctl restart httpd

      Listen Sie den Inhalt des Verzeichnisses /var/www/example.com/log auf, um zu sehen, ob Apache die Protokolldateien erstellt hat:

      • ls -lZ /var/www/example.com/log

      Sie erhalten eine Bestätigung, dass Apache die in der Konfiguration des virtuellen Hosts angegebenen Dateien error.log und requests.log erstellen konnte:

      Output

      -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

      Nachdem Sie nun Ihren virtuellen Host eingerichtet und die Berechtigungen von SELinux aktualisiert haben, stellt Apache Ihren Domänennamen bereit. Sie können dies testen, indem Sie zu http://example.com navigieren, wo Sie etwas Ähnliches sehen sollten wie:

      Erfolg!  Der virtuelle Host example.com funktioniert!

      Das bestätigt, dass Ihr virtueller Host erfolgreich konfiguriert ist und Inhalte bereitstellt. Wiederholen Sie die Schritte 4 und 5, um neue virtuelle Hosts mit SELinux-Berechtigungen für zusätzliche Domänen zu erstellen.

      Zusammenfassung

      In diesem Leitfaden haben Sie den Apache-Webserver installiert und verwaltet. Nachdem Sie Ihren Webserver nun installiert haben, haben Sie viele Möglichkeiten für die Art des Inhalts und die Technologien, die Sie verwenden möchten, um eine umfassendere Benutzererfahrung zu erzielen.

      Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, lesen Sie den Artikel Konfigurieren eines LAMP-Stacks unter CentOS 8.



      Source link

      So sichern Sie Apache mit Let’s Encrypt unter Ubuntu 20.04


      Einführung

      Let’s Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), die das Abrufen und Installieren von kostenlosen TLS-/SSL-Zertifikaten erleichtert und so verschlüsseltes HTTPS auf Webservern ermöglicht. Es vereinfacht den Prozess, indem ein Software-Client, Certbot, bereitgestellt wird, der versucht, die meisten (wenn nicht alle) der erforderlichen Schritte zu automatisieren. Derzeit ist der gesamte Prozess zum Abrufen und Installieren eines Zertifikats sowohl auf Apache als auch auf Nginx vollständig automatisiert.

      In diesem Leitfaden verwenden wir Certbot, um ein kostenloses SSL-Zertifikat für Apache unter Ubuntu 20.04 zu erhalten, und stellen sicher, dass dieses Zertifikat so eingerichtet ist, dass es automatisch erneuert wird.

      In diesem Tutorial wird anstelle der Standardkonfigurationsdatei von Apache eine separate virtuelle Hostdatei zum Einrichten der Website verwendet, die von Let’s Encrypt gesichert wird. Wir empfehlen, neue virtuelle Apache-Hostdateien für jede auf einem Server gehostete Domäne zu erstellen, da dies dazu beiträgt, häufige Fehler zu vermeiden und die Standardkonfigurationsdateien als Fallback-Setup beizubehalten.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      • Einen Ubuntu 20.04-Server, der gemäß dem Tutorial Ersteinrichtung des Servers für Ubuntu 20.04 eingerichtet wurde, einschließlich eines sudo non-root users und einer Firewall.

      • Einen vollständig registrierten Domänennamen. In diesem Tutorial wird your_domain durchgehend als Beispiel verwendet. Sie können einen Domänennamen unter Namecheap günstig erwerben oder einen kostenlosen von Freenom herunterladen,. oder einfach die Domänenregistrierngsstelle Ihrer Wahl verwenden.

      • Die beiden folgenden DNS-Einträge wurden für Ihren Server eingerichtet. Sie finden in dieser Einführung in DigitalOcean DNS Details dazu, wie Sie sie hinzufügen können.

        • Einen A-Datensatz mit your-domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
        • Einen A-Datensatz mit your-domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
      • Apache gemäß Installieren von Apache unter Ubuntu 20.04 installiert. Stellen Sie sicher, dass Sie eine virtuelle Hostdatei für Ihre Domäne haben. In diesem Tutorial wird /etc/apache2/sites-available/your_domain.conf als Beispiel verwendet.

      Schritt 1 — Installieren von Certbot

      Um ein SSL-Zertifikat mit Let’s Encrypt zu erhalten, müssen wir zuerst die Certbot-Software auf Ihrem Server installieren. Wir werden dafür die Standard-Ubuntu-Paket-Repositorys verwenden.

      Wir benötigen zwei Pakete: certbot und python3-certbot-apache. Letzteres ist ein Plugin, das Certbot in Apache integriert und ermöglicht, das Abrufen eines Zertifikats und das Konfigurieren von HTTPS auf Ihrem Webserver mit einem einzigen Befehl zu automatisieren.

      • sudo apt install certbot python3-certbot-apache

      Außerdem werden Sie zur Bestätigung der Installation aufgefordert, indem Sie Y und dann ENTER drücken.

      Certbot ist jetzt auf Ihrem Server installiert. Im nächsten Schritt verifizieren wir die Konfiguration von Apache, um sicherzustellen, dass Ihr virtueller Host angemessen festgelegt ist. Dadurch wird sichergestellt, dass das Certbot-Client-Skript Ihre Domänen erkennen und Ihren Webserver so konfigurieren kann, dass Ihr neu generiertes SSL-Zertifikat automatisch verwendet wird.

      Schritt 2 — Überprüfen Ihrer Apache Virtual Host-Konfiguration

      Um SSL für Ihren Webserver automatisch abrufen und konfigurieren zu können, muss Certbot den richtigen virtuellen Host in Ihren Apache-Konfigurationsdateien finden. Ihre Serverdomänennamen werden aus den Anweisungen ServerName und ServerAlias abgerufen, die in Ihrem VirtualHost-Konfigurationsblock definiert sind.

      Wenn Sie den Schritt zum Einrichten des virtuellen Hosts im Tutorial zur Apache-Installation ausgeführt haben, sollten Sie einen VirtualHost-Block für Ihre Domäne unter /etc/apache2/sites-available/your_domain.conf mit dem ServerName und auch den ServerAlias-Anweisungen, die bereits entsprechend festgelegt wurden, einrichten.

      Um dies zu überprüfen, öffnen Sie die virtuelle Hostdatei für Ihre Domäne mit nano oder Ihrem bevorzugten Texteditor:

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Suchen Sie die bestehenden Zeilen ServerName und ServerAlias. Sie sollten wie folgt aussehen:

      /etc/apache2/sites-available/your_domain.conf

      ...
      ServerName your_domain
      ServerAlias www.your_domain
      ...
      

      Wenn Sie Ihren ServerName und Ihre ServerAlias bereits so eingerichtet haben, können Sie Ihren Texteditor beenden und mit dem nächsten Schritt fortfahren. Wenn Sie nano verwenden, können Sie zum Beenden STRG+X drücken, dann Y und ENTER, um zu bestätigen.

      Wenn Ihre aktuelle virtuelle Hostkonfiguration nicht dem Beispiel entspricht, aktualisieren Sie sie entsprechend. Wenn Sie fertig sind, speichern Sie die Datei und beenden Sie den Editor. Führen Sie dann den folgenden Befehl aus, um Ihre Änderungen zu validieren:

      • sudo apache2ctl configtest

      Sie sollten eine Syntax OK als Antwort erhalten. Wenn Sie einen Fehler erhalten, öffnen Sie die virtuelle Hostdatei und überprüfen Sie sie auf Schreibfehler oder fehlende Zeichen. Sobald die Syntax Ihrer Konfigurationsdatei korrekt ist, laden Sie Apache neu, sodass die Änderungen wirksam werden:

      • sudo systemctl reload apache2

      Mit diesen Änderungen kann Certbot den richtigen VirtualHost-Block finden und ihn aktualisieren.

      Als Nächstes aktualisieren wir die Firewall, um den HTTPS-Datenverkehr zu ermöglichen.

      Schritt 3 — Zulassen von HTTPS durch die Firewall

      Wenn Sie die UFW-Firewall aktiviert haben, wie in den erforderlichen Anleitungen empfohlen, müssen Sie die Einstellungen anpassen, um den HTTPS-Datenverkehr zuzulassen. Bei der Installation registriert Apache einige verschiedene UFW-Anwendungsprofile. Wir können das Profil Apache Full nutzen, um sowohl HTTP- als auch HTTPS-Datenverkehr auf Ihrem Server zuzulassen.

      Um zu verifizieren, welche Art von Datenverkehr derzeit auf Ihrem Server erlaubt ist, können Sie Folgendes verwenden:

      Wenn Sie einem unserer Apache-Installationsleitfäden gefolgt sind, sollte Ihre Ausgabe ungefähr so aussehen, was bedeutet, dass derzeit nur HTTP-Datenverkehr auf Port 80 zulässig ist:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

      Um zusätzlich den HTTPS-Datenverkehr einzulassen, lassen Sie das Profil „Apache Full“ zu und löschen Sie das redundante Profil „Apache“:

      • sudo ufw allow 'Apache Full'
      • sudo ufw delete allow 'Apache'

      Ihr Status sieht nun wie folgt aus:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)

      Sie können nun Certbot ausführen und Ihre Zertifikate abrufen.

      Schritt 4 — Abrufen eines SSL-Zertifikats

      Certbot bietet eine Vielzahl von Möglichkeiten, um SSL-Zertifikate über Plugins zu erhalten. Das Apache-Plugin kümmert sich um die Neukonfiguration von Apache und das Neuladen der Konfiguration bei Bedarf. Geben Sie Folgendes ein, um dieses Plugin zu verwenden:

      In diesem Skript müssen Sie eine Reihe von Fragen beantworten, um Ihr SSL-Zertifikat zu konfigurieren. Zunächst werden Sie nach einer gültigen E-Mail-Adresse gefragt. Diese E-Mail wird für Erneuerungsbenachrichtigungen und Sicherheitshinweise verwendet:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): you@your_domain

      Nach dem Bereitstellen einer gültigen E-Mail-Adresse drücken Sie ENTER, um mit dem nächsten Schritt fortzufahren. Sie werden dann aufgefordert, zu bestätigen, ob Sie den Nutzungsbedingungen von Let’s Encrypt zustimmen. Sie können dies bestätigen, indem Sie A drücken und dann ENTER:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Please read the Terms of Service at
      https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
      agree in order to register with the ACME server at
      https://acme-v02.api.letsencrypt.org/directory
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (A)gree/(C)ancel: A
      

      Als Nächstes werden Sie gefragt, ob Sie Ihre E-Mail mit der Electronic Frontier Foundation teilen möchten, um Nachrichten und andere Informationen zu erhalten. Wenn Sie ihren Inhalt nicht abonnieren möchten, geben Sie N ein. Andernfalls geben Sie Y ein. Drücken Sie anschließend ENTER, um mit dem nächsten Schritt fortzufahren.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Would you be willing to share your email address with the Electronic Frontier
      Foundation, a founding partner of the Let's Encrypt project and the non-profit
      organization that develops Certbot? We'd like to send you email about our work
      encrypting the web, EFF news, campaigns, and ways to support digital freedom.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (Y)es/(N)o: N
      

      Im nächsten Schritt werden Sie aufgefordert, Certbot darüber zu informieren, für welche Domänen Sie HTTPS aktivieren möchten. Die aufgelisteten Domänennamen werden automatisch aus Ihrer Konfiguration des virtuellen Apache-Hosts abgerufen. Aus diesem Grund müssen Sie sicherstellen, dass auf Ihrem virtuellen Host die richtigen Einstellungen für ServerName und ServerAlias konfiguriert sind. Wenn Sie HTTPS für alle aufgelisteten Domänennamen aktivieren möchten (empfohlen), können Sie die Eingabeaufforderung leer lassen und ENTER drücken, um fortzufahren. Wählen Sie andernfalls die Domänen aus, für die Sie HTTPS aktivieren möchten, indem Sie die entsprechende Nummer durch Kommas und/oder Leerzeichen getrennt auflisten und dann ENTER drücken.

      Which names would you like to activate HTTPS for?
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: your_domain
      2: www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate numbers separated by commas and/or spaces, or leave input
      blank to select all options shown (Enter 'c' to cancel):
      

      Die Ausgabe sieht dann so aus:

      Obtaining a new certificate
      Performing the following challenges:
      http-01 challenge for your_domain
      http-01 challenge for www.your_domain
      Enabled Apache rewrite module
      Waiting for verification...
      Cleaning up challenges
      Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabled Apache socache_shmcb module
      Enabled Apache ssl module
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      

      Als Nächstes werden Sie aufgefordert, auszuwählen, ob der HTTP-Datenverkehr an HTTPS umgeleitet werden soll. In der Praxis bedeutet dies, dass jemand, der Ihre Website über unverschlüsselte Kanäle (HTTP) besucht, automatisch an die HTTPS-Adresse Ihrer Website umgeleitet wird. Wählen Sie 2, um die Umleitung zu aktivieren, oder 1, wenn Sie sowohl HTTP als auch HTTPS als separate Methoden für den Zugriff auf Ihre Website beibehalten möchten.

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: No redirect - Make no further changes to the webserver configuration.
      2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
      new sites, or if you're confident your site works on HTTPS. You can undo this
      change by editing your web server's configuration.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
      
      

      Nach diesem Schritt ist die Konfiguration von Certbot abgeschlossen, und Sie erhalten die letzten Anmerkungen zu Ihrem neuen Zertifikat, wo sich die generierten Dateien befinden und wie Sie Ihre Konfiguration mit einem externen Tool testen können, das die Authentizität Ihres Zertifikats analysiert:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Congratulations! You have successfully enabled https://your_domain and
      https://www.your_domain
      
      You should test your configuration at:
      https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
      https://www.ssllabs.com/ssltest/analyze.html?d=www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      
      IMPORTANT NOTES:
       - Congratulations! Your certificate and chain have been saved at:
         /etc/letsencrypt/live/your_domain/fullchain.pem
         Your key file has been saved at:
         /etc/letsencrypt/live/your_domain/privkey.pem
         Your cert will expire on 2020-07-27. To obtain a new or tweaked
         version of this certificate in the future, simply run certbot again
         with the "certonly" option. To non-interactively renew *all* of
         your certificates, run "certbot renew"
       - Your account credentials have been saved in your Certbot
         configuration directory at /etc/letsencrypt. You should make a
         secure backup of this folder now. This configuration directory will
         also contain certificates and private keys obtained by Certbot so
         making regular backups of this folder is ideal.
       - If you like Certbot, please consider supporting our work by:
      
         Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
         Donating to EFF:                    https://eff.org/donate-le
      
      

      Ihr Zertifikat ist nun installiert und in die Konfiguration von Apache geladen. Versuchen Sie, Ihre Website mit https:// neu zu laden und beachten Sie den Sicherheitsindikator Ihres Browsers. Er sollte darauf hinweisen, dass Ihre Website ordnungsgemäß gesichert ist, normalerweise durch Einfügen eines Schlosssymbols in die Adressleiste.

      Mit dem SSL Labs Server-Test können Sie die Note Ihres Zertifikats überprüfen und detaillierte Informationen dazu aus der Sicht eines externen Dienstes abrufen.

      Im nächsten und letzten Schritt testen wir die automatische Erneuerungsfunktion von Certbot, die garantiert, dass Ihr Zertifikat vor dem Ablaufdatum automatisch erneuert wird.

      Schritt 5 – Überprüfen der automatischen Erneuerung von Certbot

      Zertifikate von Let’s Encrypt sind nur neunzig Tage gültig. Dies soll Benutzer dazu ermutigen, ihren Prozess zur Erneuerung von Zertifikaten zu automatisieren und sicherzustellen, dass missbrauchte Zertifikate oder gestohlene Schlüssel eher früher als später ablaufen.

      Das von uns installierte certbot-Paket kümmert sich um Erneuerungen, indem es ein Erneuerungsskript in /etc/cron.d einfügt, das von einem systemctl-Dienst namens certbot.timer verwaltet wird. Dieses Skript wird zweimal pro Tag ausgeführt und erneuert automatisch alle Zertifikate, die innerhalb von dreißig Tagen ablaufen.

      Um den Status dieses Dienstes zu überprüfen und sicherzustellen, dass er aktiv ist und ausgeführt wird, können Sie Folgendes verwenden:

      • sudo systemctl status certbot.timer

      Sie sehen eine Ausgabe, die dieser ähnelt:

      Output

      ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

      Um den Erneuerungsprozess zu testen, können Sie mit certbot einen Probelauf durchführen:

      • sudo certbot renew --dry-run

      Wenn Sie keine Fehler sehen, sind Sie fertig. Bei Bedarf erneuert Certbot Ihre Zertifikate und lädt Apache neu, um die Änderungen zu übernehmen. Wenn der automatische Erneuerungsprozess jemals fehlschlägt, sendet Let’s Encrypt eine Nachricht an die von Ihnen angegebene E-Mail und warnt Sie, wenn Ihr Zertifikat bald abläuft.

      Zusammenfassung

      In diesem Lernprogramm haben Sie den Let’s Encrypt-Client Certbot installiert, ein SSL-Zertifikat für Ihre Domäne konfiguriert und installiert und bestätigt, dass der automatische Erneuerungsdienst von Certbot in systemctl aktiv ist. Wenn Sie weitere Fragen zur Verwendung von Certbot haben, ist die Dokumentation ein guter Ausgangspunkt.



      Source link