GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Drupal 8.1 mit Nginx, PHP-FPM und SSL auf Ubuntu 16.04

Drupal ist ein bekanntes Open-Source-Content-Management-System auf Basis von PHP. Es ist kostenlos erhältlich und unter der GNU General Public License veröffentlicht. Drupal kann für Websites aller Größen verwendet werden, von riesigen internationalen Websites bis hin zu persönlichen Blogs und Unternehmens- oder Regierungsseiten. Der Kernteil von Drupal heißt "Drupal Core", er enthält das grundlegende Content-Management-System, Benutzerverwaltung, Menüverwaltung, Layout-Anpassung und Systemverwaltung. Drupal Core kann durch Plugins erweitert werden, bisher wurden der Drupal-Community mehr als 31.000 Module für Drupal zur Verfügung gestellt.

In diesem Tutorial installieren wir Drupal 8.1.10 mit dem Nginx-Webserver, MariaDB 10 als Datenbankserver und PHP-FPM (PHP 7.0) zur Verarbeitung von PHP-Anfragen. Ich werde Ihnen auch zeigen, wie Sie ein SSL-Zertifikat installieren, um die Drupal-Website zu sichern.

Voraussetzungen

  • Ubuntu 16.04 - 64-Bit-Version.
  • Root-Rechte.

Schritt 1 - Ubuntu-System aktualisieren

Melden Sie sich mit ssh beim Ubuntu-Server an, werden Sie dann Root-Benutzer und aktualisieren Sie das Ubuntu-Repository:

sudo su
sudo apt-get update

Schritt 2 – Nginx und PHP-FPM installieren

Nginx oder „engine-x“ ist ein schneller HTTP-Server, der auf hohe Leistung bei geringer Speicher-/RAM-Nutzung ausgerichtet ist. Wir können Nginx auch als Reverse-Proxy für HTTP-, HTTPS-, POP3- und IMAP-Protokolle verwenden. In diesem Tutorial verwenden wir Nginx als SSL-fähigen HTTP-Server.

Installieren Sie Nginx mit dem folgenden apt-Befehl als sudo/root-Benutzer:

sudo apt-get install nginx -y

Installieren Sie als Nächstes php7.0-fpm mit der php-gd-Erweiterung, die für den Drupal-Kern erforderlich ist:

sudo apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -y

Im nächsten Schritt konfigurieren wir Nginx.

Schritt 3 – Nginx und PHP-FPM konfigurieren

In diesem Schritt konfigurieren wir Nginx so, dass es php-fpm verwendet, um HTTP-Anforderungen für PHP-Seiten zu bedienen. Gehen Sie in das php-fpm-Verzeichnis "/etc/php/7.0/fpm" und bearbeiten Sie die Datei "php.ini":

cd /etc/php/7.0/fpm/
vim php.ini

Auf Linie 761 , kommentieren Sie die Zeile cgi.fix_pathinfo aus und ändern Sie den Wert in „0 ".

cgi.fix_pathinfo=0

Speichern Sie die Datei und verlassen Sie den Editor.

Jetzt ändern wir die Standardkonfiguration des virtuellen Nginx-Hosts. Bearbeiten Sie die „default“-Datei und aktivieren Sie die php-fpm-Direktive.

cd /etc/nginx/sites-available/
vim default

Kommentieren Sie Zeile 51 – 58 aus um php-fpm mit nginx zu verwenden.

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Speichern Sie die Datei und beenden Sie sie.

Testen Sie dann die Nginx-Konfiguration mit dem Befehl „nginx -t " um sicherzustellen, dass es gültig ist:

nginx -t

Wenn kein Fehler auftritt, starten Sie nginx und den php-fpm-Dienst neu:

systemctl restart nginx
systemctl restart php7.0-fpm

Testen Sie als Nächstes, ob php-fpm ordnungsgemäß mit nginx funktioniert, indem Sie eine neue php-Infodatei im Webverzeichnis „/var/www/html“ erstellen.

cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php

Besuchen Sie die Datei info.php unter der Server-IP (in meinem Fall http://192.168.1.4/info.php)  in einem Webbrowser. Das Ergebnis sollte dem Screenshot unten ähneln.

Schritt 4 – MariaDB installieren und konfigurieren

MariaDB ist ein Datenbankserver-Fork des relationalen Datenbankverwaltungssystems MYSQL und bietet eine Drop-in-Ersatzfunktion für MySQL.

Installieren Sie die neueste Version von MariaDB mit dem Befehl apt-get:

sudo apt-get install mariadb-client mariadb-server -y

Wenn die Installation abgeschlossen ist, starten Sie MariaDB:

systemctl start mysql

Der Name des MariaDB-Dienstes ist "mysql", deshalb verwendet der systemctl-Befehl hier das Wort mysql.

Jetzt konfigurieren wir den MariaDB-Benutzernamen und das Passwort mit dem folgenden Befehl:

mysql_secure_installation
mysql_secure_installation

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... Success!

Remove test database and access to it? [Y/n] Y
 ... Success!

Reload privilege tables now? [Y/n] Y
 ... Success!

Melden Sie sich mit Ihrem Passwort bei der MariaDB-Shell an und erstellen Sie eine neue Datenbank für Drupal mit dem Namen "drupaldb". " und erstellen Sie einen neuen MariaDB/MySQL-Benutzer "drupaluser " mit dem Passwort "[email protected] " und erteilen Sie abschließend dem Benutzer Berechtigungen für die Datenbank. Bitte wählen Sie für Ihre Installation ein sicheres Passwort anstelle von "[email protected]"!

mysql -u root -p


create database drupaldb;
create user [email protected] identified by '[email protected]';
grant all privileges on drupaldb.* to [email protected] identified by '[email protected]';
flush privileges;
\q

Die Datenbank "drupaldb " mit dem Benutzer "drupaluser " wurden erstellt.

Schritt 5 – Generieren Sie ein selbstsigniertes SSL-Zertifikat

Gehen Sie zu /etc/nginx Verzeichnis und erstellen Sie ein neues Verzeichnis mit dem Namen "ssl" für die SSL-Konfigurationsdatei.

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

Generieren Sie dann mit dem folgenden openssl-Befehl ein neues selbstsigniertes SSL-Zertifikat:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt

Geben Sie die angeforderten Informationen ein. Die SSL-Zertifikatsdatei wurde generiert, ändern Sie nun die Berechtigungen der privaten Schlüsseldatei „drupal.key“ auf 600:

chmod 600 drupal.key

Schritt 6 – Konfigurieren Sie den VirtualHost für Drupal

Wir werden Drupal 8 im Verzeichnis „/var/www/drupal8“ mit dem Domainnamen „drupal8.me“ installieren. Bitte ersetzen Sie den Domainnamen in Ihrer Installation durch den Domainnamen der Website, für die Sie diese Drupal-Installation verwenden möchten. Lassen Sie uns also das Verzeichnis erstellen:

mkdir -p /var/www/drupal8

Gehen Sie dann in das Nginx-Virtualhost-Verzeichnis „/etc/nginx/sites-available/“ und erstellen Sie mit dem vim-Editor eine neue Datei „drupal8“:

cd /etc/nginx/sites-available/
vim drupal8

Fügen Sie die Nginx-Konfiguration für drupal unten in die Datei drupal8:

ein
server {
    server_name drupal8.me;
    root /var/www/drupal8; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

    ssl_certificate      /etc/nginx/ssl/drupal.crt;
    ssl_certificate_key  /etc/nginx/ssl/drupal.key;

    # Redirect HTTP to HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

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

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

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

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

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

    # 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 @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

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

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

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

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

Speichern Sie die Datei und verlassen Sie den Editor.

Die virtuelle Drupal-Host-Datei wurde erstellt, jetzt müssen wir sie aktivieren, indem wir einen Symlink zu der Datei im Verzeichnis „sites-enabled“ erstellen:

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

Testen Sie die Nginx-Konfiguration und starten Sie Nginx neu:

nginx -t
systemctl restart nginx

Schritt 7 - Drupal installieren und konfigurieren

Wir müssen git und drush installieren, bevor wir mit der Drupal-Installation beginnen. Drush ist eine Befehlszeilen-Shell und eine Unix-Skriptschnittstelle für Drupal. Installieren Sie es mit folgendem Befehl:

sudo apt-get install git drush -y

Geben Sie dann das zuvor erstellte drupal8-Verzeichnis ein und laden Sie Drupal mit wget oder drush herunter. Ich werde wget hier verwenden:

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

Wenn Sie drush verwenden möchten, führen Sie stattdessen den folgenden Befehl aus:

drush dl drupal-8

Warten Sie, bis der Download abgeschlossen ist, und verschieben Sie dann alle Drupal-Dateien in das Hauptverzeichnis:

tar -xzvf drupal-8.1.10.tar.gz
mv drupal-8.1.10/* .
rm -rf drupal-8.1.10

Im nächsten Schritt konfigurieren wir die Drupal-Einstellungsdatei. Wechseln Sie vom Drupal-Hauptverzeichnis in das Verzeichnis „sites/default“ und kopieren Sie die beiden Konfigurationsdateien „settings.php " und "services.yml ":

cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml

Dann müssen wir ein neues Verzeichnis mit dem Namen "files " im Verzeichnis "sites/default". Der Befehl "chmod" stellt sicher, dass die Konfigurationsdatei und das Verzeichnis "files" für die Drupal-Installation beschreibbar sind:

mkdir files/
chmod a+w *

Besuchen Sie nun Ihre Drupal-Website (in meinem Fall http://drupal8.me) Mit dem Webbrowser werden Sie automatisch auf die https-Verbindung umgeleitet und die Drupal-Installationsseite wird angezeigt.

Bitte beachten Sie, dass diese Anleitung gerade von Drupal 8.1.8 auf 8.1.10 in den Befehlen aktualisiert wurde, um die neuesten heute veröffentlichten Sicherheitspatches für Drupal einzuschließen. Die Screenshots zeigen immer noch die Versionsnummer 8.1.8, da sich die Benutzeroberfläche nicht geändert hat . Sie sollten immer die neueste stabile Drupal-Version für Ihre Installation verwenden und die Versionsnummer in den obigen Installationsbefehlen ersetzen.

Wählen Sie Ihre Sprache, ich verwende "Englisch" hier.

Klicken Sie auf "Speichern und fortfahren" .

Wählen Sie nun die Installationsart aus. Sie können Standard- oder Minimaltyp verwenden. Ich werde "Standard verwenden ".

Jetzt wird Ihnen die Datenbankkonfigurationsseite angezeigt. Geben Sie die Datenbankdetails für die Datenbank ein, die wir für Drupal erstellt haben.

Warten Sie, bis die Installation abgeschlossen ist.

Jetzt müssen wir die Site-Profileinstellungen wie Site-Name, Benutzer und Passwort für den Administrator, E-Mail-Adresse konfigurieren usw.

Jetzt ist Drupal installiert. Sie werden auf die Drupal-Homepage weitergeleitet.

Möglicherweise wird eine Fehlermeldung über die Berechtigungen der Drupal-Konfigurationsdateien "settings.php" und "services.yml" angezeigt. Ändern Sie einfach die Berechtigung von ihnen mit den folgenden Befehlen:

cd sites/default/
chmod 644 settings.php services.yml

Jetzt ist Drupal 8.1 mit Nginx und SSL auf Ubuntu 16.04 installiert.

Schlussfolgerung

Drupal ist ein kostenloses Open-Source-Content-Management-Framework, das auf PHP basiert. Es kann für einen persönlichen Blog, eine private Homepage oder eine Unternehmenswebsite verwendet werden. Drupal wird unter der GNU-GPL-Lizenz vertrieben. Die Hauptkomponente von Drupal wird "Drupal Core" genannt und bis jetzt hat die Drupal-Community mehr als 31.000 Module entwickelt, um sie zu erweitern. Die aktuelle stabile Version ist 8.1.10. Drupal ist einfach zu installieren und zu konfigurieren, wir können Nginx oder Apache als Webserver und PHP-FPM verwenden, um die PHP-Anfragen auf einem Drupal-Server zu verarbeiten.


Ubuntu
  1. So installieren Sie PHP 7.4 und 8.0 auf Ubuntu 18.04 oder 20.04

  2. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  3. So installieren und konfigurieren Sie PHP und Nginx (LEMP) unter Ubuntu 20.04

  4. Installieren Sie OwnCloud 7 mit Nginx und PHP-FPM auf einem Ubuntu VPS

  5. So installieren Sie PHP 7.4 mit Nginx unter Ubuntu 20.04

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 20.04 LTS

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

So installieren Sie Moodle mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04

So installieren Sie Grav CMS mit Nginx unter Ubuntu 20.04

So installieren Sie WonderCMS unter Ubuntu 20.04 (mit Nginx)

So installieren Sie Lighttpd mit PHP und MariaDB unter Ubuntu 15.04