Wie installiert man Drupal mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 LTS

Drupal ist ein kostenloses und quelloffenes Content-Management-System, mit dem Sie digitale Inhalte für das Web und Mobiltelefone erstellen und bereitstellen können. Es ist in PHP geschrieben und wird von vielen Organisationen auf der ganzen Welt verwendet. Mit Drupal können Sie verschiedene Arten von Websites erstellen, von kleinen Blogs bis hin zu einer großen Unternehmenswebsite. Es bietet eine benutzerfreundliche Oberfläche und leistungsstarke Bearbeitungstools für die Verwaltung von Inhalten.

In diesem Tutorial zeigen wir Ihnen, wie Sie Drupal mit Nginx installieren und mit Let’s Encrypt SSL auf Ubuntu 20.04 sichern.

Vorraussetzungen

  • Ein Server mit Ubuntu 20.04.
  • Einen gültigen Domain-Namen, der auf Ihren Server zeigt.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

LEMP-Server installieren

Zuerst müssen Sie den Nginx-Webserver, die MariaDB-Datenbank, PHP und andere erforderliche Erweiterungen auf Ihrem Server installieren. Sie können sie alle mit dem folgenden Befehl installieren:

apt-get install nginx mariadb-server php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y

Wenn alle Pakete installiert sind, editieren Sie die Datei php.ini und passen Sie einige Einstellungen an:

nano /etc/php/7.4/fpm/php.ini

Ändern Sie die folgenden Zeilen:

short_open_tag = On 
cgi.fix_pathinfo=0
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 300
date.timezone = America/Chicago

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

MariaDB-Datenbank konfigurieren

Sichern Sie zuerst die MariaDB-Installation und setzen Sie das MariaDB-Root-Passwort mit folgendem Befehl:

mysql_secure_installation

Beantworten Sie alle Fragen wie unten gezeigt:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Sobald die MariaDB gesichert ist, loggen Sie sich mit folgendem Befehl in die MariaDB-Shell ein:

mysql -u root -p

Geben Sie Ihr MariaDB-Root-Passwort an und erstellen Sie dann eine Datenbank und einen Benutzer für Drupal:

MariaDB [(none)]> CREATE DATABASE drupaldb;
MariaDB [(none)]> CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'password';

Als nächstes gewähren Sie alle Privilegien für die Drupal-Datenbank mit dem folgenden Befehl:

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupal'@'localhost' WITH GRANT OPTION;

Als nächstes flushen Sie die Privilegien und verlassen die MariaDB-Shell mit folgendem Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Drupal herunterladen

Zum Zeitpunkt des Schreibens dieses Tutorials ist die neueste Version von Drupal 8.8.5. Sie können sie mit dem folgenden Befehl in das Web-Stammverzeichnis von Nginx herunterladen:

cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-8.8.5.tar.gz

Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:

tar -xvzf drupal-8.8.5.tar.gz

Benennen Sie als nächstes das extrahierte Verzeichnis in drupal um und erteilen Sie die entsprechenden Berechtigungen mit dem folgenden Befehl:

mv drupal-8.8.5 drupal
chown -R www-data:www-data drupal
chmod -R 755 drupal

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Konfigurieren Sie Nginx für Drupal

Als nächstes erstellen Sie eine Nginx-Konfigurationsdatei für virtuelle Hosts für Drupal mit dem folgenden Befehl:

nano /etc/nginx/sites-available/drupal

Fügen Sie die folgenden Zeilen hinzu:

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/drupal;
    index  index.php index.html index.htm;
    server_name  drupal.linuxbuz.com;

    client_max_body_size 100M;
    autoindex off;

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

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

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

    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

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

    location ~ '\.php$|^/update.php' {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }
}

Speichern und schließen Sie die Datei und erstellen Sie dann einen symbolischen Link auf das für Sites aktivierte Verzeichnis:

ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/

Als nächstes setzen Sie hash_bucket_size in der Standardkonfigurationsdatei von Nginx:

nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile unter „http {“ ein

    server_names_hash_bucket_size 64;

Speichern und schließen Sie die Datei und überprüfen Sie Nginx auf Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

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

Starten Sie anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Sicheres Drupal mit Let’s Encrypt SSL

Es wird empfohlen, das Drupal mit Let’s Encrypt SSL zu sichern. Fügen Sie zunächst das Certbot-Repository mit dem folgenden Befehl hinzu:

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

Aktualisieren Sie als Nächstes das Repository und installieren Sie den Certbot-Client mit dem folgenden Befehl:

apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Sobald der Certbot-Client installiert ist, führen Sie den folgenden Befehl aus, um Let’s Encrypt SSL für Ihre Website herunterzuladen und zu installieren:

certbot --nginx -d drupal.linuxbuz.com

Sie werden aufgefordert, Ihre gültige E-Mail einzugeben und die Servicebedingungen wie unten gezeigt zu akzeptieren:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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: Y



Obtaining a new certificate
Performing the following challenges:
http-01 challenge for drupal.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/drupal

Als nächstes wählen Sie, ob HTTP-Verkehr zu HTTPS umgeleitet werden soll oder nicht:

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

Geben Sie 2 ein und drücken Sie Enter, um die Installation abzuschließen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/drupal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://drupal.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=drupal.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-08-12. 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"
 - 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

An diesem Punkt ist Ihre Drupal-Website mit Let’s Encrypt SSL gesichert.

Zugang zum Drupal-Web-Installationsassistenten

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL https://drupal.linuxbuz.com ein. Sie werden auf die Drupal-Sprachauswahlseite weitergeleitet:

Drupal-Installationsprogramm - Sprache wählen

Wählen Sie die gewünschte Sprache aus und klicken Sie auf die Schaltfläche Speichern und weiter. Sie sollten die Seite Installationsprofil sehen:

Installationsprofil auswählen

Wählen Sie Ihr gewünschtes Installationsprofil und klicken Sie auf die Schaltfläche Speichern und weiter. Sie sollten die Seite Datenbank-Konfiguration sehen:

Datenbank-Konfiguration

Klicken Sie auf die Schaltfläche Speichern und weiter. Sie sollten die Seite Site-Konfiguration sehen:

Konfiguration der Drupal-Website

Regionale Einstellungen

Geben Sie Ihren Sitename, Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Speichern und weiter. Sie werden auf das Drupal-Standard-Dashboard auf der folgenden Seite weitergeleitet:

Drupal erfolgreich installiert

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben Drupal mit Let’s Encrypt SSL auf Ubuntu 20.04 erfolgreich installiert und gesichert. Sie können jetzt mit der Anpassung Ihrer Drupal-Website beginnen. Weitere Informationen finden Sie in der offiziellen Drupal-Dokumentation.

Das könnte dich auch interessieren …