Drupal ist eine der beliebtesten Open-Source-CMS-Plattformen weltweit. Es ist in PHP geschrieben und kann verwendet werden, um verschiedene Arten von Websites zu erstellen, von kleinen persönlichen Blogs bis hin zu großen Firmen-, Politik- und Regierungsseiten.
In diesem Tutorial zeigen wir Ihnen, wie Sie Drupal 8.6 auf einem Ubuntu 18.04-Rechner installieren. Es gibt mehrere Möglichkeiten, Drupal zu installieren. Dieses Tutorial behandelt die notwendigen Schritte zur Installation von Drupal 8.6 unter Verwendung einer Composer-Vorlage für Drupal-Projekte namens drupal-project.
Wir verwenden Nginx als Webserver, das neueste PHP 7.2 und MySQL/MariaDB als Datenbankserver.
Voraussetzungen #
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:
- Sie haben einen Domainnamen, der auf die IP Ihres öffentlichen Servers verweist. Wir werden
example.com
verwenden . - Sie haben Nginx installiert, indem Sie diese Anweisungen befolgen.
- Sie haben ein SSL-Zertifikat für Ihre Domain installiert. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt installieren, indem Sie diesen Anweisungen folgen.
Bevor Sie anfangen #
Aktualisieren Sie den Paketindex und die Systempakete auf die neuesten Versionen:
sudo apt update && sudo apt upgrade
1. Erstellen Sie eine MySQL-Datenbank #
Wenn Sie MySQL oder MariaDB auf Ihrem Server installiert haben, können Sie diesen Schritt überspringen, andernfalls können Sie das MySQL 5.7-Serverpaket aus den Standard-Repositories von Ubuntu installieren, indem Sie Folgendes eingeben:
sudo apt install mysql-server
Für frische MySQL-Installationen wird empfohlen, die mysql_secure_installation
auszuführen Befehl, um die Sicherheit Ihres MySQL-Servers zu verbessern. Jetzt müssen wir uns bei der MySQL-Shell anmelden und eine neue Datenbank und ein neues Benutzerkonto erstellen und dem Benutzer die entsprechenden Berechtigungen erteilen.
Um sich bei der MySQL-Shell anzumelden, geben Sie den folgenden Befehl ein und geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden:
mysql -u root -p
So erstellen Sie eine Datenbank mit dem Namen drupal
, Benutzer namens drupaluser
und um dem Benutzer die erforderlichen Berechtigungen zu erteilen, führen Sie die folgenden Befehle aus:
CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';
2. Installieren Sie PHP #
PHP 7.2, die Standard-PHP-Version in Ubuntu 18.04, wird vollständig unterstützt und für Drupal 8.6 empfohlen. Da wir Nginx als Webserver verwenden werden, installieren wir auch PHP-FPM.
Führen Sie den folgenden Befehl aus, um alle erforderlichen PHP-Module zu installieren:
sudo apt install php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
Der PHP-FPM-Dienst wird nach Abschluss des Installationsvorgangs automatisch gestartet. Sie können dies überprüfen, indem Sie den Dienststatus ausdrucken:
systemctl status php7.2-fpm
Die Ausgabe sollte anzeigen, dass der fpm-Dienst aktiv ist und ausgeführt wird.
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-05-19 19:54:13 UTC; 9h ago
Docs: man:php-fpm7.2(8)
Main PID: 17781 (php-fpm7.2)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 507)
CGroup: /system.slice/php7.2-fpm.service
├─17781 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
├─17796 php-fpm: pool www
└─17797 php-fpm: pool www
3. Installieren Sie Composer #
Composer ist ein Abhängigkeitsmanager für PHP und wir werden ihn verwenden, um die Drupal-Vorlage herunterzuladen und alle erforderlichen Drupal-Komponenten zu installieren.
Um Composerglobal zu installieren, laden Sie das Composer-Installationsprogramm mit curl
herunter und verschieben Sie die Datei nach /usr/local/bin
Verzeichnis:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Überprüfen Sie die Installation, indem Sie die Composer-Version drucken:
composer --version
Die Ausgabe sollte in etwa so aussehen:
Composer version 1.6.5 2018-05-04 11:44:59
4. Installieren Sie Drupal #
Nachdem wir Composer installiert haben, können wir fortfahren und ein neues Drupal-Projekt erstellen, indem wir die Composer-Vorlage in /var/www/my_drupal
verwenden Verzeichnis:
sudo composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction
Der obige Befehl lädt die Vorlage herunter, ruft alle erforderlichen PHP-Pakete ab und führt einige Skripte aus, um unser Projekt für die Installation vorzubereiten. Der Vorgang kann einige Minuten dauern und wenn er erfolgreich ist, sollte das Ende der Ausgabe wie folgt aussehen:
Create a sites/default/settings.php file with chmod 0666
Create a sites/default/files directory with chmod 0777
Der nächste Schritt ist die Installation von Drupal mit Drush. Im folgenden Befehl übergeben wir die in Schritt 1 erstellte MySQL-Datenbank und Benutzerinformationen:
cd /var/www/my_drupal
sudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal
Das Installationsprogramm wird Sie mit der folgenden Meldung auffordern, drücken Sie einfach die Eingabetaste, um fortzufahren.
You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:
Sobald die Installation abgeschlossen ist, gibt das Skript den administrativen Benutzernamen und das Kennwort aus. Die Ausgabe sollte in etwa so aussehen:
[notice] Starting Drupal installation. This takes a while. Consider using the --notify global option.
[success] Installation complete. User name: admin User password: XRkC9Q5WN9
Schließlich müssen wir die richtigen Berechtigungen festlegen, damit der Webserver vollen Zugriff auf die Dateien und Verzeichnisse der Site hat. Sowohl Nginx als auch PHP laufen als www-data
Benutzer und www-data
Gruppe, also müssen wir den folgenden Befehl ausgeben:
sudo chown -R www-data: /var/www/my_drupal
5. Konfigurieren Sie Nginx #
Inzwischen sollte Nginx mit SSL-Zertifikat bereits auf Ihrem System installiert sein, wenn nicht, überprüfen Sie die Voraussetzungen für dieses Tutorial.
Um einen neuen Serverblock für unser neues Drupal-Projekt zu erstellen, verwenden wir das Nginx-Rezept von der offiziellen Nginx-Site.
Öffnen Sie Ihren Texteditor und erstellen Sie die folgende Datei:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com# Redirect HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
# Redirect WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/my_drupal/web;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.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 ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
# Block access to scripts in site files directory
location ~ ^/sites/[^/]+/files/.*\.php$ {
deny 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;
}
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' {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
include fastcgi_params;
# Block httpoxy attacks. See https://httpoxy.org/.
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:/run/php/php7.2-fpm.sock;
}
# Fighting with Styles? This little gem is amazing.
# location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
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;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
try_files $uri @rewrite;
expires max;
log_not_found off;
}
}
Vergessen Sie nicht, example.com durch Ihre Drupal-Domain zu ersetzen und den richtigen Pfad zu den SSL-Zertifikatsdateien festzulegen. Alle HTTP-Anforderungen werden an HTTPS umgeleitet. Die in dieser Konfiguration verwendeten Snippets werden in diesem Handbuch erstellt.
Aktivieren Sie die Serversperre, indem Sie einen symbolischen Link zu sites-enabled
erstellen Verzeichnis:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Führen Sie vor dem Neustart des Nginx-Dienstes einen Test durch, um sicherzustellen, dass keine Syntaxfehler vorliegen:
sudo nginx -t
Wenn es keine Fehler gibt, sollte die Ausgabe so aussehen:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Starten Sie abschließend den Nginx-Dienst neu, indem Sie Folgendes eingeben:
sudo systemctl restart nginx
6. Testen Sie die Installation #
Öffnen Sie Ihren Browser, geben Sie Ihre Domain ein und vorausgesetzt, die Installation ist erfolgreich, wird ein Bildschirm ähnlich dem folgenden angezeigt:
Sie können sich als Administrator anmelden und mit der Anpassung Ihrer neuen Drupal-Installation beginnen.
7. Installieren Sie Drupal-Module und -Designs #
Jetzt, da Sie Ihr Drupal-Projekt installiert haben, möchten Sie einige Module und Themen installieren. Drupal-Module und -Designs werden in einem benutzerdefinierten Composer-Repository gehostet, das drupal-project standardmäßig für uns konfiguriert.
Um ein Modul oder ein Thema zu installieren, brauchen Sie nur cd
in das Projektverzeichnis und geben Sie composer require drupal/module_or_theme_name
ein . Wenn wir beispielsweise das Pathautomodule installieren möchten, müssen wir den folgenden Befehl ausführen:
Durch voranstellen voncd /var/www/my_drupal
sudo -u www-data composer require drupal/pathauto
sudo -u www-data
Wir führen den Befehl als Benutzer www-data
aus Using version ^1.3 for drupal/pathauto
./composer.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
- Installing drupal/token (1.5.0): Downloading (100%)
- Installing drupal/ctools (3.2.0): Downloading (100%)
- Installing drupal/pathauto (1.3.0): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles
Wie Sie der obigen Ausgabe entnehmen können, installiert Composer auch alle Paketabhängigkeiten für uns.
8. Aktualisieren Sie den Drupal-Kern #
Vor dem Upgrade ist es immer eine gute Idee, eine Sicherungskopie Ihrer Dateien und Datenbank zu erstellen. Sie können entweder das Backup and Migrate-Modul verwenden oder Ihre Datenbank und Dateien manuell sichern.
Um die Installationsdateien zu sichern, können Sie den folgenden rsync-Befehl verwenden, Sie müssen natürlich den richtigen Pfad zum Installationsverzeichnis verwenden:
sudo rsync -a /var/www/my_drupal/ /var/www/my_drupal_$(date +%F)
Um die Datenbank zu sichern, können wir entweder den Standard mysqldump
verwenden Befehl:
mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql
oder drush sql-dump
:
cd /var/www/my_drupal
vendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql
Nachdem wir nun ein Backup erstellt haben, können wir fortfahren und alle Drupal-Kerndateien aktualisieren, indem wir den folgenden Befehl ausführen:
sudo -u www-data composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies