WordPress mit Let’s Encrypt SSL Zertifikat unter Ubuntu Linux 16.04 mit nginx und MariaDB oder MySQL installieren

WordPress ist ein Content Management System (CMS), welches es erlaubt relativ einfach den Inhalt einer statischen Webseite oder eines Blogs zu pflegen. Es basiert auf PHP und benötigt einen Webserver sowie eine Datenbank zur Ausführung. Ich beschreibe in diesem Beitrag wie WordPress unter Ubuntu Linux 16.04 mit nginx als Webserver, SSL Zertifikate von Let’s Encrypt sowie MariaDB bzw. MySQL als Datenbank installiert werden kann. Wie diese Dinge Konfiguriert werden können habe ich bereits in folgenden Beiträgen beschrieben

Vorbereitung

Nginx / Let’s Encrypt

Zuerst sollte wie in den oben verlinkten Beiträgen eine nginx Konfigurationsdatei erstellt sowie ein Let’s Encrypt SSL Zertifikat beantragt werden.

Falls für das Beantragen der SSL Zertifikate ein dummy-Verzeichnis verwendet wurde muss zuerst ein Verzeichnis für die WordPress Dateien angelegt werden.

$ sudo mkdir -p /var/www/com.example.blog

Damit es später möglich ist WordPress über die Webseite zu aktualisieren sollten die Rechte an diesem Ordner dem Benutzer und der Gruppe www-data zugewiesen werden.

$ sudo chown www-data:www-data /var/www/com.example.blog

Danach muss die nginx Konfiguration unter /etc/nginx/sites/available/com.example.blog durch nachfolgende ersetzt werden – natürlich mit den eigenen Angaben für IP-Adressen, Domains, Pfade etc.

server  {
        listen          80;
        listen          [xxx:xxx:xxx::42]:80;

        server_name     blog.example.com;
        return          301 https://$server_name$request_uri;
}

server  {
        listen          443 ssl;
        listen          [xxx:xxx:xxx::42]:443 ssl;

        server_name     blog.example.com;

        ssl_certificate         /etc/letsencrypt/live/blog.example.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/blog.example.com/privkey.pem;
        add_header              Strict-Transport-Security "max-age=63072000; includeSubdomains;";

        root    /var/www/com.example.blog;

        index   index.php;

        location = /robots.txt {
                try_files $uri $uri/ /index.php?$args;
        }

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php?$args;
        }

        # pass the PHP scripts to FastCGI server
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        # snippet for updating letsencrypt certificates
        include snippets/certbot-webroot.conf;
}

Nun muss die Konfiguration ggf. noch aktiviert werden.

$ sudo ln -s /etc/nginx/sites-available/com.example /etc/nginx/sites-enabled/

Bevor die neue Konfiguration geladen wird sollte geprüft werden, dass sie Fehlerfrei ist.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Anschließend kann sie geladen werden.

$ sudo /etc/init.d/nginx reload
[ ok ] Reloading nginx configuration (via systemctl): nginx.service.

WordPress

Damit ist nginx fertig konfiguriert und die WordPress Dateien können heruntergeladen, entpackt und ihre Rechte gesetzt werden. Falls die englische Version von WordPress installiert werden soll muss die Datei https://wordpress.org/latest.zip heruntergeladen werden.

$ cd /var/www/com.example.blog
$ sudo wget https://de.wordpress.org/latest-de_DE.zip
--2017-05-29 20:33:32-- https://de.wordpress.org/latest-de_DE.zip
Resolving de.wordpress.org (de.wordpress.org)... 66.155.40.249, 66.155.40.250
Connecting to de.wordpress.org (de.wordpress.org)|66.155.40.249|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9251402 (8.8M) [application/zip]
Saving to: ‘latest-de_DE.zip’

latest-de_DE.zip 100%[=================================================>] 8.82M 4.08MB/s in 2.2s

2017-05-29 20:33:35 (4.08 MB/s) - ‘latest-de_DE.zip’ saved [9251402/9251402]
$ sudo unzip latest-de_DE.zip
$ sudo rm latest-de_DE.zip
$ sudo mv wordpress/* ./
$ sudo rm -r wordpress
$ sudo chown -R www-data:www-data *

MariaDB / MySQL

Bevor die Installation gestartet wird muss noch eine Datenbank für WordPress angelegt werden. Wie eine Datenbank mit zugehörigem Benutzer angelegt werden kann habe ich im Beitrag MySQL oder MariaDB Datenbank über das Terminal erstellen beschrieben.

Installation

Nun, da nginx, Let’s Encrypt und MariaDB bzw. MySQL konfiguriert wurde kann die Installation gestartet werden. Dazu muss einfach die in nginx konfigurierte Domain aufgerufen werden, hier im Beispiel also https://blog.example.com. Auf der nun angezeigten Webseite kann einfach auf „Los geht’s!“ geklickt werden.

Schritt 1 der WordPress Installation
Schritt 1 der WordPress Installation

Im zweiten Schritt müssen die Verbindungsinformationen zur Datenbank eingegeben werden. Anschließend können diese mit einem Klick auf „Senden“ gespeichert werden.

Schritt 2 der WordPress Installation
Schritt 2 der WordPress Installation

Der dritte Schritt erlaubt es mit einem Klick auf „Installation ausführen“ die eigentliche Installation von WordPress zu starten.

Schritt 3 der WordPress Installation
Schritt 3 der WordPress Installation

Im vierten Schritt werden Angaben wie der Titel der Webseite sowie Benutzername und Passwort verlangt. Nachdem dies ausgefüllt wurde kann einfach auf „WordPress Installieren“ geklickt werden.

Schritt 4 der WordPress Installation
Schritt 4 der WordPress Installation

Der fünfte Schritt besteht lediglich aus einer Bestätigung, dass WordPress erfolgreich installiert wurde. Mit einem Klick auf „Anmelden“ wird der Browser auf die Anmeldeseite von WordPress weitergeleitet.

Schritt 5 der WordPress Installation
Schritt 5 der WordPress Installation

WordPress wurde damit erfolgreich installiert und kann genutzt werden.

WordPress Anmeldung
WordPress Anmeldung