GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Drupal mit Nginx und Let’s Encrypt SSL unter Debian 11

Drupal ist ein Open-Source-Content-Management-System, mit dem Sie den Inhalt Ihrer Website erstellen, verwalten und pflegen können, ohne dass Programmierkenntnisse erforderlich sind.

Es stehen viele verschiedene Content-Management-Lösungen zur Auswahl, aber nicht alle sind für jedes Projekt geeignet. Wenn Sie Ihre Website mit etwas Flexiblem und Leistungsstarkem erstellen oder neu erstellen möchten, suchen Sie nicht weiter als Drupal.

Wenn Sie noch kein Webhosting haben, um eine Drupal-Website zu entwickeln, empfehlen wir die Installation auf Ihrem lokalen Debian-Rechner oder VPS.

Hier werden wir Drupal mit Nginx und Let’s Encrypt SSL auf Debian 11 installieren.

Voraussetzungen

LEMP-Stack installieren

Folgen Sie den Links unten, um den LEMP-Stack auf Ihrem Debian-System für die Drupal-Installation zu installieren.

Installieren Sie EMP (Nginx, MariaDB und PHP) auf Debian 11

Installieren Sie PHP-Erweiterungen für Drupal

Verwenden Sie das apt Befehl zum Installieren von PHP-Erweiterungen für die Drupal-Installation.

sudo apt update

sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu

sudo apt install --no-install-recommends -y php-uploadprogress

Richten Sie den virtuellen Nginx-Host für Drupal ein

Wir beginnen mit der Erstellung eines virtuellen Hosts für eine Drupal-Installation. Sie finden alle Konfigurationsdateien für virtuelle Hosts von Nginx unter /etc/nginx/conf.d Verzeichnis.

Typischerweise enthält eine virtuelle Hostdatei einen Domänennamen, eine Portnummer, einen Dokumentenstamm, einen Protokollspeicherort, schnelles CGI usw.

Ich gehe von folgendem aus,

Domainname:itzgeek.net, www.itzgeek.net
Portnummer:80
Dokumentenstamm:/usr/share/nginx/www.itzgeek.net/html
Protokolle:/usr/share/nginx/www.itzgeek.net/logs

Erstellen Sie zunächst eine Konfigurationsdatei für virtuelle Hosts.

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Fügen Sie dann den folgenden Inhalt in die obige Konfigurationsdatei ein. Sie müssen server_name ändern wie pro Ihre Anforderung.

server {
	server_name itzgeek.net www.itzgeek.net;
	root /usr/share/nginx/www.itzgeek.net/html;
	
	index index.php index.html;
	
	access_log /usr/share/nginx/www.itzgeek.net/logs/access.log;
	error_log /usr/share/nginx/www.itzgeek.net/logs/error.log;
	

	
	location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~* \.(txt|log)$ {
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^ /index.php; # For Drupal >= 7
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    # Protect files and directories from prying eyes.
    location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ {
        deny all;
        return 404;
    }

    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }

    # Fighting with Styles? This little gem is amazing.
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    # Enforce clean URLs
    # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page
    # Could be done with 301 for permanent or other redirect codes.
    if ($request_uri ~* "^(.*/)index\.php/(.*)") {
        return 307 $1$2;
    }
}

Erstellen Sie Verzeichnisse zum Platzieren von Drupal-Dateien und Nginx-Protokollen.

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/

Überprüfen Sie die Nginx-Konfigurationsdatei mit dem folgenden Befehl.

sudo nginx -t

Wenn Sie Folgendes erhalten, bedeutet dies, dass die Konfiguration des virtuellen Hosts korrekt ist.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie die Nginx- und PHP-FPM-Dienste neu.

sudo systemctl reload nginx php7.4-fpm

Installieren Sie das SSL-Zertifikat von Let’s Encrypt

DNS-Eintrag erstellen

Gehen Sie zu Ihrem Domain-Registrar und erstellen Sie einen A- und CNAME-Eintrag (optional, wenn Sie keine www-Subdomain verwenden möchten) für Ihre Domain.

  1. Nicht-www-Domänenname (z. B. itzgeek.net)>> A Datensatzpunkt auf Ihre Server-IP
  2. www-Domänenname (z. B. www.itzgeek.net)>> CNAME Rekordpunkt auf itzgeek.net

Für diese Demo werde ich zwei Einträge erstellen, damit meine Drupal-Website unter www.itzgeek.net zugänglich ist.

Certbot-Client installieren

Der Certbot-Client, der uns hilft, das SSL-Zertifikat von Let’s Encrypt in Nginx zu generieren und zu installieren, ist jetzt als Snap-Paket für Debian verfügbar. Installieren Sie also zuerst den Snapd-Daemon auf Ihrem System.

sudo apt update

sudo apt install -y snapd

Aktualisieren Sie dann snapd auf die neueste Version.

sudo snap install core && sudo snap refresh core

Installieren Sie abschließend den Certbot-Client mit dem folgenden Befehl.

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

SSL-Zertifikat installieren

Verwenden Sie den folgenden Befehl, um das SSL-Zertifikat von Let’s Encrypt auf dem Nginx-Webserver zu generieren und zu installieren.

sudo certbot --nginx
1. E-Mail-Adresse eingeben um Benachrichtigungen über dringende Erneuerungs- und Sicherheitshinweise zu erhalten
2. Geben Sie Y ein und drücken Sie die Eingabetaste sich beim ACME-Server anzumelden
3. Geben Sie J oder N ein um E-Mails über Neuigkeiten, Kampagnen und Newsletter von EFF zu erhalten.
4. Certbot erkennt automatisch die Drupal-Domain und fordert Sie auf, HTTPS zu aktivieren für Ihre Drupal-Website. Geben Sie 1 oder entsprechende Zahlen getrennt durch ein Komma ein falls Sie mehrere Websites haben.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: itzgeek.net
2: www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1,2

Warten Sie, bis die SSL-Installation abgeschlossen ist. Sie können nun mit HTTPS auf die Website zugreifen.

Hinweis: Wenn Sie jetzt auf die Website zugreifen, erhalten Sie einen 403-Fehler, weil Sie noch keine Drupal-Dateien platzieren müssen.

Nicht-www-HTTP-Anfragen mit Nginx an www-HTTPS weiterleiten

Sie müssen den Nginx-Server so konfigurieren, dass er den Datenverkehr von der Nicht-www-HTTP-Site auf die WWW-HTTPS-Site umleitet, d. h. http://itzgeek.net>> https://www.itzgeek.net.

SSL-Zertifikat automatisch erneuern

Der Certbot-Client enthält jetzt die automatische Verlängerung von SSL-Zertifikaten über das systemd. Sie müssen die Zertifikate also nicht manuell erneuern.

Installieren Sie Drupal mit Nginx

Datenbank für Drupal erstellen

Melden Sie sich zuerst beim MariaDB/MySQL-Datenbankserver an.

sudo mysql -u root -p

Erstellen Sie dann die Datenbank für die Drupal-Installation zusammen mit dem Datenbankbenutzer und dem Passwort.

CREATE DATABASE drupaldb;

CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost';

EXIT

Drupal-Paket herunterladen

Laden Sie die neueste Version des Drupal-Installationsprogramms mit dem folgenden Befehl herunter.

wget https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz

Extrahieren Sie dann die heruntergeladene Datei.

tar -zxvf drupal-latest.tar.gz

Verschieben Sie die Dateien dann in das Stammverzeichnis Ihrer Website-Dokumente.

sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/

Aktualisieren Sie den Besitz und eine Gruppe des Drupal-Website-Verzeichnisses.

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

Drupal-CMS installieren

Öffnen Sie Ihren Browser und besuchen Sie Ihre Drupal-Domain, um die Drupal-Installation durchzuführen.

https://Ihre-drupal-Website

1. Sprache auswählen für Ihre Drupal-Installation und Website und klicken Sie dann auf Speichern und fortfahren

2. Wählen Sie ein Installationsprofil aus die für Sie geeignet ist, und klicken Sie dann auf Speichern und fortfahren

3. Geben Sie die Drupal-Datenbankdetails in der Datenbankkonfiguration ein Seite und klicken Sie dann auf Speichern und fortfahren

4. Warten Sie, bis die Drupal-Installation abgeschlossen ist

5. Sie müssen Site konfigurieren durch Eingabe von Site-Informationen, Site-Wartungskonto, Regionseinstellungen und Update-Benachrichtigungen . Klicken Sie abschließend auf Speichern und fortfahren

6. Nach Abschluss leitet Sie das Installationsprogramm zum Drupal-Backend weiter, um die Installation zu verwalten. Alternativ können Sie auf das Drupal-Backend zugreifen, indem Sie zu https://your-drupal-website/user/login gehen

Zugriff auf die Drupal-Website

Jetzt können Sie mit Ihrem Domainnamen auf die Website zugreifen.

https://Ihre-drupal-Website

Screenshot des Drupal-CMS-Backends:

Aktivieren Sie nach der Installation die Trusted Host-Einstellungen, um Ihre Drupal-Website vor HTTP-HOST-Header-Angriffen zu schützen.

Schlussfolgerung

Das ist alles. Ich hoffe, Sie haben gelernt, wie man Drupal mit Nginx und Let’s Encrypt SSL unter Debian 11 installiert.


Debian
  1. So installieren Sie Drupal 8 mit Nginx, PHP-FPM und SSL unter Ubuntu 15.10

  2. Installieren Sie Lets Encrypt und Secure Nginx mit SSL/TLS in Debian 9

  3. So installieren Sie Drupal mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04 LTS

  4. So installieren Sie Drupal 9 mit Nginx und Lets Encrypt SSL unter Debian 10

  5. So installieren Sie Let’s Encrypt SSL auf Ubuntu 18.04 mit Nginx

So installieren Sie Drupal mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie Joomla mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie Let’s Encrypt SSL in Nginx unter Debian 11

So installieren Sie WordPress mit Nginx und Let’s Encrypt SSL unter Debian 11

So installieren Sie Nginx mit Let’s Encrypt TLS/SSL unter Ubuntu 20.04

So installieren Sie Nginx mit Let’s Encrypt SSL auf Fedora 35