Archive

Nextcloud – dein eigener Cloud Storage Server unter Ubuntu 18.04

Nextcloud unter Ubuntu 18.04

Wenn es um Möglichkeiten eines Online-Cloud-Speichers geht, der dir erlaubt, deine Dokumente, Bilder, Musik und Videos wiederauffindbar für dich bereit zu stellen, sind dir für gewöhnlich Dienste wie Dropbox, Microsoft OneDrive oder Apples iCloud geläufig. Diese stellen dank dauerhafter und geräteübergreifender Erreichbarkeit über das Internet eine attraktive und praktische Alternative zur lokalen Speicherung auf dem eigenen Endgerät dar.

Gerade im Hinblick auf sensible Daten stellt sich dann aber auch immer die Frage, wie es um die Sicherheit der abgelegten Dateien steht. Nutze die Vorteile der Cloud und behalte dabei gleichzeitig die vollständige Kontrolle über sämtliche Daten. Wie das funktioniert? Indem du deinen eigenen Onlinespeicher-Dienst hostest und verwaltest. Die notwendige Software hierzu ist Nextcloud, eine eigenständige Abspaltung von ownCloud. Nextcloud ist nämlich keine gänzlich neue Software, sondern um die Open Source Variante von ownCloud herum entwickelt worden. Was Dateispeicherung und Filesharing angeht, arbeiten die beiden Anwendungen gleichermaßen.

Unterschiede zwischen Nextcloud und ownCloud zeigen sich erst bei den Zusatz- und Sicherheitsfeatures. Im Gegensatz zu ownCloud hat Nextcloud keine Einschränkungen, die dafür sorgen, dass gewisse Komponenten wie die Volltextsuche, Workflow-Management oder Branding nur für zahlende Enterprise-Kundschaft verfügbar sind, da lediglich Support und Update-Service extra kosten. Durch die neuesten Features wie Audio- und Videotelefonie legt Nextcloud hingegen eher den Fokus auf die funktionale Erweiterung der Anwendung und lenkt in die Richtung sich zu einer komplexen Online-Collaboration-Plattform auszubauen.

In unserem Tutorial Eigenen Nextcloud-Server auf Ubuntu 16.04 LTS installieren zeige ich dir, wie du mit Nextcloud zum eigenen Cloud Storage Server unter Ubuntu 16.04 gelangst. In diesem Tutorial nun widme ich mich der Installation und Konfiguration von Nextcloud unter Ubuntu 18.04.

… vor der Installation von Nextcloud

Für die Installation nach meiner Anleitung benötigst du einen Ubuntu 18.04 Server mit vollem Root-Zugriff. Tech4Hosting macht es dir möglich, in wenigen Schritten deinen eigenen Ubuntu 18.04 Cloud-Server zu erstellen, diesen zu nutzen und zu verwalten. Informationen konkret hierzu findest du in unserem Tutorial How to Tech4Hosting. Über dein Terminal würdest du dich mit dem Server via ssh und der IP-Adresse deines Servers verbinden, wie im Code-Snippet unten veranschaulicht. IP dient hierbei als Platzhalter für die erwähnte IP-Adresse.

ssh root@IP

Zusätzlich ist es vor der Installation erforderlich, dass du deinen Server mit einem LAMP Stack ausstattest. Unser Tutorial LAMP-Stack auf Ubuntu 18.04 LTS mit PHP 7.2 und Apache 2.4 bietet dir hierzu eine hilfreiche Unterstützung.

Letztlich müsstest du dann aber noch ein paar Module installieren. Bevor du das machst, solltest du aber gewährleisten, dass dein Server auf dem neuesten Stand ist, indem nu folgendes Kommando ausführst.

apt -y update && apt -y upgrade && apt -y dist-upgrade

php7.2 sowie die Module libapache2-mod-php7.2 und php7.2-mysql solltest du während der unter LAMP-Stack auf Ubuntu 18.04 LTS mit PHP 7.2 und Apache 2.4 bereitgestellten Installationsanleitung installiert haben. Solltest du den LAMP-Stack jedoch nicht unter Anleitung des oben erwähnten Tutorials deinem Server hinzugefügt haben und dir sollte das libapache2-Modul sowie das mysql-Modul für PHP fehlen, dann führe noch den unten aufgeführten Befehl aus.

apt-get install libapache2-mod-php7.2 php7.2-mysql

Nun zurück zum weiterführenden Inhalt dieses Tutorials hier: Anschließend müssen noch einige Programme und Erweiterungen installiert werden.

apt -y install php7.2-mbstring php7.2-zip php7.2-xml php7.2-common php7.2-gd php7.2-curl php7.2-json php7.2-intl php7.2-imagick php7.2-zip

Zusätzlich ist dann aber noch das mcrypt-Modul erforderlich. Mcrypt wird in PHP 7.2 nicht mehr unterstützt und ist daher standardmäßig nicht verfügbar.
Du kannst die mcrypt-Erweiterung jedoch weiterhin mit pecl installieren. Die folgenden Anweisungen gelten für die Installation unter dem Apache-Webserver. Stelle mit Hilfe des unten eingeblendeten Kommandos vorab sicher, dass die betreffenden Voraussetzungen installiert sind.

apt-get install php7.2-dev libmcrypt-dev gcc make autoconf libc-dev pkg-config

Kompoliere daraufhin die mcrypt-Erweiterung. Betätige einfach die Enter-Taste, wenn du nach dem libmcrypt-Präfix gefragt wirst.

pecl install mcrypt-1.0.1

Aktiviere die mcrypt-Erweiterung für Apache.

echo "extension=mcrypt.so" | tee -a /etc/php/7.2/cli/conf.d/mcrypt.ini

Schließlich führst du einen Neustart deines Webservers durch.

systemctl restart apache2

Installiere Nextcloud

Du solltest für die Installation die aktuellste Version nutzen. Die Information hierzu erhälst du direkt von der Herstellerseite. Um das Archiv direkt auf den Server zu laden, nutze ich das unten gezeigte wget-Kommando verwendet werden. In meinem Beispiel ist 15.0.1 die aktuelle Version.

wget https://download.nextcloud.com/server/releases/nextcloud-15.0.1.zip

Sollte unzip auf deinem Server noch nicht installiert sein, kannst du es mit dem unten eingeblendeten Befehl nachholen.

apt -y install unzip

Entpacke das gerade heruntergeladene Archiv mit dem unzip-Kommando.

unzip nextcloud-15.0.1.zip

Danach verschiebst du den nextcloud-Ordner in das richtige Verzeichnis.

mv ./nextcloud/* /var/www/html

Im Anschluss daran müssen wir dem Server noch die Rechte über den nextcloud-Ordner geben, wobei das Webroot Verzeichnis angetriggert wird.

chown -R www-data:www-data /var/www/html

Im letzten Schritt musst du dann noch deinen Server neu starten.

reboot

Datenbank für Nextcloud in MySQL/MariaDB erstellen

Erneut via ssh unter root auf deinem Server angemeldet, geht es nun weiter damit, eine Datenbank für Nextcloud anzulegen. Melde dich zunächst in MySQL/MariaDB als root an. In meinem beispielhaften Code-Snippet tue ich das für MySQL.

mysql -u root -p

Anschließend erstellst du eine Datenbank für Nextcloud. Ich füge die Datenbank namens nextcloud hinzu.

create database nextcloud;

Dann legst du noch einen neuen Datenbankbenutzer an und erteilst ihm die nötigen Rechte an der zuvor generierten Datenbank. Mein neuer Nutzer heißt nextclouduser und hat das Passwort testpassword.

CREATE USER nextclouduser@localhost IDENTIFIED BY 'testpassword';
GRANT ALL PRIVILEGES ON nextcloud.* to nextclouduser@localhost;
FLUSH PRIVILEGES;

Nach allen gezeigten Schritten meldest du dich wieder aus MySQL/MariaDB ab.

EXIT;

Getting started mit Nextcloud

Im Browser deiner Wahl solltest du Nextcloud nun nach dem Schema IP-AdresseDeinesServers/nextcloud oder DomainDeinesServers/nextcloud aufrufen können, sodass du ein Setup-Interface siehst, wie im folgenden Screenshot zu erkennen.

In diesem Setup-Interface solltest du folgende Informationen eintragen. Ich gehe kurz im Einzelnen von oben nach unten auf die Formularfelder ein.

Benutzername: Frei wählbarer Benutzername für das Admin Konto.

Passwort: Frei wählbares Passwort. Es sollte wenigstens 8 Zeichen haben und aus kleinen und großen Buchstaben so wie mindestens einer Zahl und einem Sonderzeichen bestehen.

Datenverzeichnis: Hier solltest du den Pfad zum Ordner angeben, in dem die Daten liegen sollen. Am besten wählst du einen Ordner auf dem Datenträger, der sich außerhalb von deinem Nextcloud Installationsverzeichnis befindet. So sind deine Daten sicherer aufgehoben und du hast es bei deinen Backups, Upgrades und Restores einfacher. Außerdem ist zu beachten, dass es nach der Installation nicht ohne Weiteres möglich ist, dein Datenverzeichnis an einen anderen Ort zu verlegen.

Datenbank-Benutzer: nextclouduser (So wie in MySQL/MariaDB festgelegt)

Datenbank-Passwort: password (So wie in MySQL/MariaDB festgelegt)

Datenbank-Name: nextcloud (So wie in MySQL/MariaDB festgelegt)

Server: localhost

Mit Betätigung des Installation abschließen-Button stellst du den Installationsprozess fertig. Es werden beim ersten Start von Nextcloud Links zu den mobilen Apps gezeigt. Als Nächstes kannst du damit beginnen weitere User anzulegen und eine Ordnerstruktur je nach Usecase anzulegen.

Hinweis: Es ist des Weiteren zu empfehlen an dieser Stelle deinen Server durch ein SSL-Zertifikat zu schützen. Informationen hierzu entnimmst du unserem Tutorial zum kostenlosen SSL Zertifikat.

Fazit

Fix hast du deinen eigenen Storage-Server erstellen können. Du bist nun in der Lage einen zentralen und sicheren Speicherort für deine Dateien und Medien handzuhaben und kannst diese von allen Geräten aus abrufen. Das Design des Web UI lässt sich jederzeit und unkompliziert nach deinem Ermessen anpassen. Nextcloud wartet mit per default aktiviertem Brute-Force-Schutz auf und bietet – neben Filesharing – verschiedene weitere Collaboration-Features, wie Audio- und Video-Unterhaltung. Es hat mir Spaß gemacht, dir die wichtigsten Schritte zu deinem Nextcloud nahe zu bringen und wünsche dir guten Nutzen aus deinem persönlichen Storage-Server zu ziehen. ?

Warum nicht einfach mal ausprobieren? Bei Tech4Hosting kann man innerhalb von wenigen Sekunden einen eigene Server aufsetzen und das Tutorial ausprobieren. Erfahre jetzt mehr über unsere Tech4Hosting High Performance Cloud Server.

Aus unserer Rubrik zu Filehosting auch noch interessant und hilfreich:

Zurück zur Tutorial Übersicht Back to Tutorial Overview

ownCloud – dein eigener Cloud Storage Server unter Ubuntu 18.04

ownCloud unter Ubuntu 18.04

Das Auslagern von Daten auf Server von Onlinespeicher-Anbietern entlastet die eigene Festplatte und sorgt zudem dafür, dass diese jederzeit und von überall aus verfügbar sind.

ownCloud bietet als Dateiverwaltungs-Software eine freie Alternative zu kommerziellen Cloud-Diensten und/oder SaaS Anbietern wie z.B. wie z.B. Dropbox oder Google Drive. ownCloud ist auf jedem beliebigen Server oder Webspace installierbar. Du trägst selber die Entscheidung, wo deine Daten gespeichert werden sollen, was wiederum bedeutet, dass du einen Cloud Server Anbieter wählen kannst, der deinen Datenschutzbestimmungen entspricht.

Sobald der ownCloud-Server installiert und eingerichtet ist, können Dateien mithilfe des Desktop-Clients auf diesen hochgeladen werden. Neben kostenfreien Clients für macOS, Windows und Linux gibt es mobile Apps für Android und iOS, die kostenpflichtig im Google Play Store und Apple App Store zum Download bereitstehen. Diese Anwendungen ermöglichen dem ownCloud-Nutzer sein eigenes lokales Verzeichnis, das sich anschließend jederzeit und von überall aus mit dem Cloud-Server synchronisieren lässt. Dank des Filesharing-Feature können innerhalb der Cloud befindliche Dateien außerdem mit anderen Nutzern geteilt werden.

In unserem Tutorial ownCloud auf Ubuntu 16.04 installieren lernst du, wie du mit ownCloud zum eigenen Cloud Storage Server unter Ubuntu 16.04 gelangst. In diesem Tutorial zeige ich dir, wie du ownCloud unter Ubuntu 18.04 installierst und konfigurierst.

… vor der Installation von ownCloud

Du benötigst einen Ubuntu 18.04 Server mit vollem Root-Zugriff. Tech4Hosting stellt dir Cloud-Server Templates u.a. auch für Ubuntu 18.04 zur Verfügung. Informationen konkret hierzu findest du in unserem Tutorial How to Tech4Hosting. Über deinen Terminal würdest du dich mit dem Server via ssh und der IP-Adresse deines Servers verbinden. Der Code-Snippet unten zeigt, wie das Kommando im Terminal hierzu aussieht. IP dient hierbei als Platzhalter für die erwähnte IP-Adresse.


ssh root@IP

Eine weitere Bedingung vor der Installation von ownCloud ist das Vorhandensein eines LAMP Stack auf deinem Server. Unser Tutorial LAMP-Stack auf Ubuntu 18.04 LTS mit PHP 7.2 und Apache 2.4 bietet dir hierzu eine hilfreiche Anleitung.
Letztlich müsstest du dann aber noch ein paar Module installieren. Bevor du das machst, solltest du aber gewährleisten, dass dein Server auf dem neuesten Stand ist, indem nu folgendes Kommando ausführst.


apt -y update && apt -y upgrade && apt -y dist-upgrade

php7.2 sowie die Module libapache2-mod-php7.2 und php7.2-mysql solltest du während der unter LAMP-Stack auf Ubuntu 18.04 LTS mit PHP 7.2 und Apache 2.4 bereitgestellten Installationsanleitung installiert haben. Solltest du den LAMP-Stack jedoch nicht unter Anleitung des oben erwähnten Tutorials deinem Server hinzugefügt haben und dir sollte das libapache2-Modul sowie das mysql-Modul für PHP fehlen, dann führe noch den unten aufgeführten Befehl aus.


apt-get install libapache2-mod-php7.2 php7.2-mysql

Nun zurück zum weiterführenden Inhalt dieses Tutorials hier: Anschließend müssen noch einige Programme und Erweiterungen installiert werden.


apt -y install php7.2-mbstring php7.2-zip php7.2-xml php7.2-common php7.2-gd php7.2-curl php7.2-json php7.2-intl php7.2-imagick php7.2-zip

Zusätzlich ist dann aber noch das mcrypt-Modul erforderlich. Mcrypt wird in PHP 7.2 nicht mehr unterstützt und ist daher standardmäßig nicht verfügbar.
Du kannst die mcrypt-Erweiterung jedoch weiterhin mit pecl installieren. Die folgenden Anweisungen gelten für die Installation unter dem Apache-Webserver. Stelle mit Hilfe des unten eingeblendeten Kommandos vorab sicher, dass die betreffenden Voraussetzungen installiert sind.


apt-get install php7.2-dev libmcrypt-dev gcc make autoconf libc-dev pkg-config

Kompoliere daraufhin die mcrypt-Erweiterung. Betätige einfach die Enter-Taste, wenn du nach dem libmcrypt-Präfix gefragt wirst.


pecl install mcrypt-1.0.1

Aktiviere die mcrypt-Erweiterung für Apache.


echo "extension=mcrypt.so" | tee -a /etc/php/7.2/cli/conf.d/mcrypt.ini

Schließlich führst du einen Neustart deines Webservers durch.


systemctl restart apache2

Installiere ownCloud

Du hast die Wahl zwischen zwei unterschiedlichen Wegen für die Installation, ich zeige dir beide. Die neue ownCloud Version befindet sich nach der Installation dann in beiden Fällen in deinem Web-Root Verzeichnis /var/www/html/owncloud/, egal welche der beiden Möglichkeiten du gewählt hast.

Möglichkeit 1: via Repository-Key

Mit den folgenden beiden Kommandos bindest du das von ownCloud verwaltete Repository ein und addest den Repository-Key zu apt.


wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_18.04/Release.key -O Release.key

apt-key add - 

Die nächsten drei Befehle dienen dazu dir deine ownCloud zu laden und zu installieren.


echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_18.04/ /' > /etc/apt/sources.list.d/owncloud.list

apt-get update

apt-get install owncloud-files

Daraufhin wurde ein owncloud-Verzeichnis mit Inhalten unter /var/www/ generiert. Dieses neue Verzeichnis sollte sich aber unter /var/www/html/ befinden. Du gehst nun so vor, dass du mit Hilfe des unten eingeblendeten Kommandos ein zunächst leeres owncloud-Verzeichnis unter /var/www/html/ anlegst.


mkdir /var/www/html/owncloud

Dann nutzt du folgendes Kommando, um die Inhalte aus dem Verzeichnis /var/www/owncloud/* in das Verzeichnis /var/www/html/owncloud zu überführen.


mv /var/www/owncloud/* /var/www/html/owncloud

Da du das Verzeichnis /var/www/owncloud nicht mehr benötigst, kannst du es mit dem unten gezeigten Kommando löschen.


rm -r /var/www/owncloud

Schließlich weist du dem Server noch die Rechte über den owncloud-Ordner zu, wobei das Webroot Verzeichnis angetriggert wird.


chown -R www-data:www-data /var/www/html

Danach startest du den Server neu.


reboot

Möglichkeit 2: Manuelle Installation

Lade das tar-Archiv der aktuellen Version und die entsprechende Checksum-Datei mit wget herunter. Hierzu nutzt du einfach die beiden folgenden Kommandos. Je nach Aktualität solltest du die ownCloud-Versionsnummer in den Befehlen anpassen. Auf der Herstellerseite entnimmst du die Information über die Releases. In diesem Tutorial arbeite ich mit der Version 10.0.10.


wget https://download.owncloud.org/community/owncloud-10.0.10.tar.bz2

wget https://download.owncloud.org/community/owncloud-10.0.10.tar.bz2.md5

Überprüfe ob die MD5 Checksum in Ordnung ist.


md5sum -c owncloud-10.0.10.tar.bz2.md5 

Entpacke das ownCloud tar-Archiv in dein Web-Root Verzeichnis nach /var/www/html/.


tar -xjf owncloud-10.0.10.tar.bz2  -C /var/www/html/

Im Anschluss daran müssen wir dem Server noch die Rechte über den owncloud-Ordner geben, wobei das Webroot Verzeichnis anvisiert wird.


chown -R www-data:www-data /var/www/html

Letztlich startest du deinen Server neu.


reboot

Datenbank für ownCloud in MySQL/MariaDB erstellen

Nachdem du deinen Server neu gestartet hast, meldest du dich wieder via ssh unter root auf deinem Server an und erstellst dann eine Datenbank für ownCloud. Melde dich zunächst in MySQL/MariaDB als root an. In meinem beispielhaften Code-Snippet tue ich das für MySQL.


mysql -u root -p

Die folgenden Befehle führst du aus, um eine Datenbank, sowie einen Nutzer zu erstellen und diesem Nutzer alle Rechte an dieser neuen Datenbank zu geben. In diesem Tutorial lege ich die Datenbank namens owncloud an sowie den Nutzer ownclouduser mit dem Passwort password.


create database owncloud;

CREATE USER ownclouduser@localhost IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON owncloud.* to ownclouduser@localhost;

FLUSH PRIVILEGES;

Danach meldest du dich aus MySQL/MariaDB ab.


EXIT;

Getting started mit ownCloud

Im Browser deiner Wahl solltest du ownCloud nun nach dem Schema IP-AdresseDeinesServers/owncloud oder DomainDeinesServers/owncloud aufrufen können, sodass du ein Setup-Interface siehst, wie im folgenden Screenshot zu erkennen.

ownCloud Web UI

In dem besagten Setup-Interface solltest du folgende Informationen eintragen. Ich gehe kurz im Einzelnen von oben nach unten auf die Formularfelder ein.

Benutzername: Frei wählbarer Benutzername für das Admin Konto.

Passwort: Frei wählbares Passwort.

Datenverzeichnis: Hier solltest du den Pfad zum Ordner angeben, in dem die Daten liegen sollen. Am besten wählst du einen Ordner auf dem Datenträger, der sich außerhalb von deinem ownCloud Installationsverzeichnis befindet. So sind deine Daten sicherer aufgehoben und du hast es bei deinen Backups, Upgrades und Restores einfacher. Außerdem ist zu beachten, dass es nach der Installation nicht ohne Weiteres möglich ist, dein Datenverzeichnis an einen anderen Ort zu verlegen.

Datenbank-Benutzer: ownclouduser (So wie in MySQL/MariaDB festgelegt)

Datenbank-Passwort: password (So wie in MySQL/MariaDB festgelegt)

Datenbank-Name: owncloud (So wie in MySQL/MariaDB festgelegt)

Server: localhost

Mit Betätigung des Installation abschließen-Button stellst du den Installationsprozess fertig.

Hinweis: Es ist des Weiteren zu empfehlen an dieser Stelle deinen Server durch ein SSL-Zertifikat zu schützen. Informationen hierzu entnimmst du unserem Tutorial zum kostenlosen SSL Zertifikat.

Fazit

Deine eigene ownCloud ist fertig! Bereits direkt nach der Installation kannst du loslegen mit dem Verwalten deiner Dateien sowie mit einigen anderen kostenlosen Features beginnen. Dir stehen weitere Funktionen bereit, zu denen du dir Zugang über kommerzielle Apps verschaffen kannst. Den Bereich hierfür findest du wiederum über das Dropdown-Menü. Außerdem findest via dem ownCloud-Marketplace zahlreiche weitere Apps, um diese in deine ownCloud einzubinden. Ich wünsche dir gutes Gelingen bei der Organisation und Lagerung deiner Dateien mit ownCloud. ?

Aus unserer Rubrik zu Filehosting auch noch interessant und hilfreich:

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Deine E-Commerce-Plattform mit Magento 2 unter Ubuntu 18.04

Magento 2 unter Ubuntu 18.04 installieren und konfigurieren

Magento ist als leistungsstarke E-Commerce-Plattform bekannt, die in PHP geschrieben ist. Dieses Webshop-System ermöglicht es dir, deinen eigenen E-Commerce- und Online-Shop in wenigen Minuten einzurichten. Für eine Installation unter Ubuntu 16.04 kann dir unser Tutorial Magento auf Ubuntu 16.04 installieren weiterhelfen. In diesem Tutorial zeige ich dir, wie du Magento 2 unter Ubuntu 18.04 LTS zum Laufen bringst.

… vor der Installation von Magento 2

Magento läuft auf einem LAMP-Stack und ist nur mit PHP 7.0 oder 7.1 kompatibel. Neben PHP zählen noch Apache und MySQL zu Komponenten des Stacks.

Bevor wir uns der Installation der oben genannten Komponenten des LAMP-Stacks widmen, solltest du auf deinem Server ein Update/Upgrade durchführen.


apt-get update && apt-get upgrade

Installiere Apache2

Mit dem unten gezeigten Kommando führst du die Installation des Apache2 Webservers durch.


apt-get install apache2

Hiernach dient dir dann noch der folgende Befehl, um die Verzeichnisliste zu deaktivieren.


sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf

Zum Stoppen, Starten und Aktivieren des Apache2-Dienstes nutze immer die unten aufgeführten Kommandos, um sicherzustellen, dass der Serverstart erfolgt.


systemctl stop apache2.service

systemctl start apache2.service

systemctl enable apache2.service

Installiere MariaDB und erstelle eine Datenbank mit Nutzer für Magento 2

Im Folgenden geht es daran einen Datenbankserver für deinen Webstore zu erstellen. Hierzu installierst du MariaDB.


apt-get install mariadb-server mariadb-client

Nach der Installation können immer die folgenden Befehle zum Stoppen, Starten und Aktivieren des MariaDB-Diensts verwendet werden, damit der Server beim Booten des Servers gestartet wird.


systemctl stop mariadb.service

systemctl start mariadb.service

systemctl enable mariadb.service

Zur Sicherung deines Datenbankservers führst du das unten eingeblendete Kommando aus, um den MariaDB-Server zu sichern.


mysql_secure_installation

Das oben gezeigte Kommando überführt dich in deinem Terminal in einen Nutzer-Dialog. Im folgenden Block siehst du in Magenta gehighlightet die Antworten, wie du sie auf die Neongrün gehighlighteten Fragen/EIngabeaufforderungen erwidern solltest/könntest sowie in Cyan gehighlightet die Aktion, die du hier ausführen musst.

Enter current password for root (enter for none): Betätige die Enter-Taste
Set root password? [Y/n]: Y
New password: Passwort festlegen
Re-enter new password: Passwort wiederholen
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

Im Anschluss daran ist ein Neustart des Apache2 Webservers notwendig.


systemctl restart mariadb.service

Nun ist es daran eine Datenbank anzulegen, sowie einen Nutzer, der über diese Datenbank walten kann. Melde dich in MariaDB an.


mysql -u root -p

Nach erfolgreicher Verifizierung über das Passwort, dass du während der Sicherung deines MariaDB-Servers vergeben hast, kannst du über die MariaDB-Kommandoschnittstelle Operationen in der Datenbank und deren Elementen durchführen. In meinem Beispiel hier lege ich die Datenbank namens magentodb an


CREATE DATABASE magentodb;

sowie den Nutzer magentouser, dem ich ein Passwort (testpassword) vergebe.


CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'testpassword';

Schließlich musst du dann noch sorgen, dass der Nutzer und die Datenbank in einem Verhältnis zueinander stehen, indem du mit dem unten aufgeführten Befehl dem Nutzer alle Rechte an der Datenbank zuweist.


GRANT ALL ON magentodb.* TO 'magentouser'@'localhost' IDENTIFIED BY 'testpassword' WITH GRANT OPTION;

Lade dann noch die Berechtigungs-Tabellen neu


FLUSH PRIVILEGES;


EXIT;

Installiere PHP 7.1 und notwendige PHP-Module

Es kann sein, dass PHP 7.1 nicht in Ubuntu-Standard-Repositorys verfügbar ist. Für die Installation ist der Bezug über Drittanbieter-Repositories notwendig.

Führe die folgenden drei Befehle aus, um das Repository für Drittanbieter hinzuzufügen, das auf PHP 7.1 aktualisiert werden soll.


apt-get install software-properties-common

add-apt-repository ppa:ondrej/php

apt-get update

Hiernach musst du eine Reihe von zusätzlichen Modulen installieren.


apt-get install php7.1 php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-gd php7.1-xml php7.1-intl php7.1-mysql php7.1-cli php7.1-bcmath php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl

Installiere Magento 2

Für die Nutzung von Magento musst du über einen Nutzer-Account verfügen. Du kannst dich auf der Magento-Website für ein kostenloses Konto registrieren, solltest du noch keins besitzen. Auch für die Installation ist der Besitz eines Nutzer-Accounts notwendig, wenn du dir dir das Softwarepaket von der Magento-Website auf deinen Server holen möchtest. Auf der Tech Resources-Seite von Magento findest du alle verfügbaren Softwarepakete zum Download bereit. Du solltest dann die Community Edition aus der Full Releases-Sparte herunterladen, wie im Screenshot unten zu sehen. In meinem Beispiel ist das die Version 2.3.0. Über den Download-Button lädst du das Softwarepaket auf deinen lokalen Rechner.

Magento Tech Resources

Es ist aber auch möglich über GitHub das aktuellste Softwarepaket herunterzuladen. Hierzu würde dir der unten gezeigte Befehl dienen, bei dem du dann entsprechend die Versionsnummer anpassen kannst, wenn diese sich zwischenzeitlich aktualisiert haben sollte.


wget https://github.com/magento/magento2/archive/2.3.0.tar.gz

Solltest du die bisherige Anleitung, die ich dir in diesem Tutorial zur Verfügung stelle, nicht von deinem lokalen Server aus durchgeführt haben, sondern von einem externen skalierbaren Server, so wie wir von Tech4Hosting sie anbieten, dann ist es notwendig, dass du das Softwarepaket auf diesen externen Server überführst. Hierzu nutzt du einfach das unten gezeigte Kommando. In meinem Beispiel überführe ich das heruntergeladene Paket aus dem Downloadverzeichnis meines lokalen Servers in das root-Verzeichnis meines externen Servers. DeineServerIP steht hier als Platzhalter für die IP deines externen Servers. Solltest du die bisher gezeigten Schritte, die dich deinem eigenen Webshop nahe bringen, auf deinem lokalen Server ausgeführt haben, dann ignoriere den folgenden Code-Snippet.


scp /Downloads/Magento-CE-2.*.tar.gz root@DeineServerIP:~/

Fahre fort, indem du ein magento-Verzeichnis unter /var/www/html anlegst.


mkdir /var/www/html/magento/

Entpacke das Software-Paket und überführe es in das zuvor angelegte magento-Verzeichnis.


tar -zxvf VerzeichnisAufDeinemServer/Magento-CE*.tar.gz -C /var/www/html/magento/

Da ich auf meinem Server beispielhaft das Paket in das root-Verzeichnis heruntergeladen hatte, würde der oben aufgeführte Befehl so aussehen:


tar -zxvf ~/Magento-CE*.tar.gz -C /var/www/html/magento/

Modifiziere die Verzeichnisberechtigung entsprechend der Apache2-Konfiguration, indem du die unten eingeblendeten Kommandos ausführst.


chown -R www-data:www-data /var/www/html/magento

chmod -R 755 /var/www/html/magento

… nach der Installation von Magento 2

Nicht nur vor der Installation von Magento 2 waren ein paar Vorkehrungen zu treffen, sondern auch danach sind sie das. Hierauf gehe ich im Folgenden ein.

Konfiguriere Apache2 und aktiviere das Magento- & Apache2 rewrite-Modul

Erstelle eine neue Konfigurationsdatei für Magento 2. Mit dem folgenden Befehl tue ich das mit dem nano-Editor.


nano /etc/apache2/sites-available/magento.conf

Es öffnet sich hierauf eine Datei leeren Inhalts, in die du via Copy&Paste den Inhalt einbindest, den ich dir im unten aufgeführten Code-Snippet zur Verfügung stelle. example.com dient hierin als Platzhalter und musst du entsprechend mit dem Domainname deines Servers überall austauschen.



     ServerAdmin admin@example.com
     DocumentRoot /var/www/html/magento/
     ServerName example.com
     ServerAlias www.example.com

     
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

Aktiviere Magento 2


a2ensite magento.conf

und aktiviere zudem das Apache rewrite-Modul.


a2enmod rewrite

Starte deinen Apache2 Webserver neu.


systemctl restart apache2.service

Getting started mit Magento 2

Öffne deinen Browser und rufe Magento 2 mit dem Domainname deines Servers auf. Bei erstmaligem Aufruf erscheint dir die Hauptseite des Setup-Assistenten, den du mit Betätigung des Agree and Setup Magento-Button startest.

Magento 2 Setup-Assistent

Klicke dich im Anschluss dann vai dem Next-Button weiter durch den Setup-Assistenten.

Magento 2 Setup-Assistent

Magento 2 Setup-Assistent

Nachdem deine PHP-Version und das Vorhandensein zusätzlich erforderlicher PHP-Module erfolgreich gecheckt wurden, gelangst du zu Formularfeldern, in denen du die Daten zu deiner für die Nutzung von Magento erstellten Datenbank eintragen musst und dich mit dem Next-Button zum nächsten Setup-Schritt bewegst.

Magento 2 Setup-Assistent

Nun geht es um die Web-Konfiguration. Hier musst du deinen Domainname in das Feld hinter https:// setzen. Des Weiteren stehen dir unter den aufklappbaren Advanced Options ein paar Möglichkeiten zur Verfügung deinen Webstore zu konfigurieren. Klicke auf den Next-Button, um im Setup-Assistenten fortzufahren.

Magento 2 Setup-Assistent

Als nächstes definierst du in den Formularfeldern des folgenden Schrittes die Zeitzone, Währung und Sprache deines Webshops. Auch hier stehen dir wieder Modulierungsoptionen für deine E-Commerce-Plattform unter den aufklappbaren Advanced Modules Configurations zur Verfügung.

Magento 2 Setup-Assistent

Im darauf folgenden Schritt legst du einen Admin-Account für den Zugang zu deinen Webshop an und bestätigst die Übernahme deiner Daten mit Betätigung des Next-Buttons.

Magento 2 Setup-Assistent

Wenn du dann auch diese eingaben mit dem Next-Button bestätigt hast, dann erreichst du auf die Seite des Setup-Assistenten, wo du die Installation mit dem Install Now-Button einleiten kannst. Nach Betätigung des Buttons ist es dir nicht mehr möglich im Setup-Assistenten via Back-Button Daten zu ändern.

Magento 2 Setup-Assistent

Magento 2 Setup-Assistent

Sobald der Fortschrittsbalken der Installation durchlaufen ist, gelangst du auf eine Seite, auf der du die erfolgreiche Installation inklusive der Daten zur Erreichbarkeit (URL) deines Webshops und der Anmeldung in diesem bestätigt auffindest.

Magento 2 Setup-Assistent

Via dem Launch Magento Admin-Button gelangst du dann auf die Anmeldeseite, wo du den von dir festgelegten Benutzernamen in Kombination mit dem Passwort eintragen und verifizieren lassen kannst.

Magento 2 Anmeldung

Ist die Anmeldung verifiziert, solltest du das Dashboard deiner E-Commerce-Plattform sehen.

Magento 2 Dashboard

Fazit

„Gut gelungen“ – würde ich sagen! Jetzt geht es auf, spannende Webshop-Projekte mit deinem eigenen Shopsystem von Magento 2 zu realisieren. Ich wünsche dir viel Erfolg und vor allem auch Spaß dabei! ?

#info {
position: relative;
padding: 15px;
margin: 1em 0 3em;
color: #39ff14;
background-color: #123850;
border-radius: 10px;
background: linear-gradient(top, #f9d835, #f3961c);
}Zurück zur Tutorial Übersicht Back to Tutorial Overview

Terraform auf Ubuntu einrichten und mit Tech4Hosting verwenden

Terraform mit Tech4Hosting nutzen Mac

Einleitung

In diesem Tutorial werde ich dich begleiten und dir zeigen, wie du Terraform auf Ubuntu installieren kannst und mit Hilfe von Terraform ganz einfach sowohl neue Server, als auch Storages im Tech4Hosting Panel erstellen kannst.

Mit Terraform kannst du deine Infrastruktur als Code darstellen. Dies ermöglicht Prozesse zu automatisieren und zu beschleunigen, wodurch weniger Fehler entstehen können als bei einer manuellen Einrichtung. Die Infrastruktur des Servers ist darüber leichter zu skalieren und mehrfach verwendbar. Weiterhin ist es möglich, den Zustand der Infrastruktur zu sichern und auch die Konfigurationsdateien als Dokumentation anzubieten. Ein weiterer Vorteil besteht darin, dass Terraform plattformunabhängig einsetzbar ist. Zudem gibt die Anwendung vor jeder Ausführung an, welche Änderungen sie vornehmen wird. Dies ermöglicht dem Nutzer die Ausführung falscher Konfigurationen zu unterbinden.

Vorbereitung

Falls du noch nicht weißt, wie du einen Server bei uns einrichten kannst, empfehle ich dir vorher unser Tutorial “How to Tech4Hosting” anzuschauen. Solltest du noch keinen Account besitzen, kannst du dich hier registrieren.

Als erstes solltest du über das Terminal deines Rechners eine SSH-Verbindung zu deinem Server aufbauen. Tippe hierzu

# ssh root@ip-adresse 

und ersetze „ip-adresse“ mit der IP-Adresse, die dir im Tech4Hosting Panel für deinen Server angezeigt wird.

Aktuell bist du als root eingeloggt, was du im Terminal daran erkennst, dass die Kommandozeile mit “#” eingeleitet wird. Da es Best Practice ist, mit einem Benutzer ohne root-Rechte zu arbeiten und dies nur bei Bedarf zu tun, solltest du dir einen neuen User anlegen. Einen neuen Benutzer kann man mit folgendem Befehl hinzufügen.

# adduser username 

Hierbei gibst du anstelle von username den Namen ein, den der neue User besitzen soll. Daraufhin wirst du darum gebeten, für diesen Benutzer ein Passwort anzulegen, sowie einige Informationen zu hinterlegen, die sich auf den Benutzer beziehen. Die User-Informationen kannst du ruhig leer lassen und mit Betätigung der Enter-Taste überspringen.

Wenn dies erledigt ist, solltest du den neu erstellten Benutzer der sudo Gruppe hinzufügen. Das geschieht mit dem unten gezeigten Befehl.

# usermod -aG sudo username 

Nun kannst du mit dem Befehl

# su - username 

zu diesem Benutzer wechseln und agierst als dieser. Du wirst auch feststellen, dass sich das „#“ in der Kommandozeile in ein „$“ geändert hat. Dies deutet darauf hin, dass du als nicht-root Benutzer arbeitest. Du kannst auch ab dem nächsten Mal unter diesem Benutzer direkt eine SSH-Verbindung zum Server aufbauen. Du meldest dich dann quasi als der betreffende Benutzer auf dem entfernten System an. Hierfür musst du nur anstelle des root den Benutzernamen vor dem „@“ tippen.

Ist dein System neu aufgesetzt worden, empfehle ich dir das System auf den aktuellsten Stand zu bringen, indem du die folgenden Befehle nacheinander ausführst. Da du nicht mehr als root eingeloggt bist, wirst du jetzt einigen Befehlen ein sudo vorweg stellen.

$ sudo apt-get update
$ sudo apt-get upgrade

Daraufhin installierst du dir das unzip-Programm mit

$ sudo apt-get install unzip 

Dieses ermöglicht dir Dateien zu entpacken, die du noch im Laufe des Tutorials herunterladen wirst.

Bevor es im nächsten Schritt mit dem Download von Terraform weiter geht, solltest du zunächst ein Verzeichnis erstellen, in dem du die Datei runterladen kannst. Wechsel zuerst ins home-Verzeichnis deines Benutzers mit

$ cd ~ 

und führe daraufhin

$ mkdir terraform_install && cd terraform_install 

aus. Hiermit erstellt du im home-Verzeichnis einen Ordner namens terraform_install und wechselst daraufhin direkt in dieses Verzeichnis. Download und Installation werden an dieser Stelle im folgenden Kapitel fortgesetzt.

Download und Installation von Terraform

Das Terraform Package kannst du über die Downloadseite von HashiCorp runterladen. Entsprechend der Architektur deines Linux Systems erhältst du den Downloadlink, wenn du auf diesen einen Rechtsklick ausführst und den Link kopierst. Mittels wget in Verbindung mit dem kopierten Link kannst du den Download wie folgt starten.

$ wget "hier Downloadlink einsetzen ohne Anführungszeichen" 

Anmerkung: Du solltest nach dem Download mit Hilfe der Checksumme überprüfen, ob das Paket korrekt geladen wurde. Wie dies möglich ist wird auf der Downloadseite von HashiCorp selbst erklärt.

Nachdem das Paket geladen ist, muss es entpackt werden mit dem Befehl

$ unzip _downloaded_file_ 

Nun führst du noch die folgenden Befehle nacheinander aus, um die Installation von Terraform abzuschließen:

$ echo export PATH=$PATH:~/terraform_install >> ~/.bashrc 
$ source ~/.bashrc

Wenn du jetzt

$ terraform version 

ausführst, sollte dir die Version von Terraform angezeigt werden. Dies bedeutet, dass Terraform einsatzbereit ist.

Tech4Hosting Terraform provider

Als nächstes zeige ich dir wie du das notwendige Binärprogramm für die Verwendung mit Tech4Hosting erhalten kannst und wie du an Beispiele gelangst, die dir einen ersten Einblick in die Verwendung mit Tech4Hosting als Provider verschaffen. Außerdem zeige ich dir in diesem Schritt, in welchem Pfad sich das Binärprogramm befinden muss, damit diese korrekt funktioniert.

Zuerst erstellst du folgendes Verzeichnis und navigierst dich anschließend dahin:

$ mkdir ~/.terraform.d/ && cd ~/.terraform.d/ 

Daraufhin erstellst du ein neues Verzeichnis namens plugins und darin ein weiteres namens linux_amd64 und wechselst in dieses:

$ mkdir -p plugins/linux_amd64 && cd plugins/linux_amd64 

Hier lädst du das nötige Linux Binärprogramm runter, worüber Terraform mit Tech4Hosting als Provider genutzt werden kann.
Wenn die Datei nicht in das aktuelle Verzeichnis heruntergeladen wurde, verschiebe sie hierhin und ändere den Dateinamen in:

$ mv  ~/.terraform.d/plugins/linux_amd64/terraform_provider_Tech4Hosting 

Die heruntergeladene Datei ist so noch nicht ausführbar. Um das zu ändern, verwendest du folgenden Befehl:

$ chmod 755 terraform_provider_Tech4Hosting

Beispiele

Jetzt fehlen nur noch die Beispiele. Navigiere zuerst wieder zum /.terraform.d Verzeichnis mit

$ cd ~/.terraform.d/ 

Wir haben die Beispiele in einem git repository zur Verfügung gestellt. Diese kannst du mit folgendem Befehl klonen:

$ git clone git@github.com:Tech4Hosting/terraform_examples.git 

Hiermit ist die Vorbereitung abgeschlossen.

Anwendungsbeispiel

Nun werde ich dir an einem Beispiel zeigen, wie du mit Hilfe von Terraform Server, Storage und Netzwerk auf einmal erstellen kannst. Die anderen Beispiele funktionieren nach demselben Prinzip, sind aber Anwendungsbeispiele um die entsprechenden Ressourcen einzeln zu erstellen. Mit diesen kannst du im Anschluss weiter arbeiten.

Als Erstes navigierst du zum Verzeichnis, in dem sich deine Beispiel-Konfigurationsdatei befindet. In diesem Fall navigierst du zum Verzeichnis, in dem sich der Ordner „complete“ befindet. Hast du alles wie beschrieben ausgeführt, sollte sich der Ordner im Verzeichnis ~/.terraform.d/terraform-examples/single-server/complete befinden. Befindet sich der Ordner mit den Beispielen in einem anderen Verzeichnis, ist es nicht kritisch. Wichtig ist nur, dass du dich in das entsprechende Verzeichnis navigierst, in das der Ordner heruntergeladen oder verschoben wurde.

In diesem Verzeichnis führst du folgende zwei Befehle nacheinander aus:

$ terraform init

daraufhin

$ terraform apply 

Hier wirst du nach deinem API Token und nach der UUID gefragt.

Über folgenden Link navigierst du zum Menüpunkt „API-Keys“ innerhalb des Tech4Hosting Panels und erzeugst deinen API-Token über den Button „API-Token erzeugen“. Hier findest du auch an derselben Stelle deine UUID. Beides gibst du nun im Terminal ein und bestätigst deine Eingaben am Ende mit „yes“. Nun müsste dir ein Text ausgegeben werden mit den entsprechenden Konfigurationen und Server, Storage und Netzwerk sollten jetzt in deinem Panel existieren.

Damit du nicht jedes Mal deine UUID und deinen API Token eingeben musst, gibt es zwei Möglichkeiten (Verwendung von Umgebungsvariablen oder Konfigurationsdatei) diese Informationen einmal im Rechner zu hinterlegen, um diesen Prozess zu automatisieren.

Möglichkeit: Konfigurationsdatei

Du erstellst in dem Ordner, in dem sich deine auszuführende Datei befindet, eine weitere Datei mit der Endung .tf (bspw. provider.tf). In diese Datei tippst du folgende Codezeilen und ergänzt innerhalb der Anführungszeichen deine UUID und deinen API-Token:

Provider "Tech4Hosting" {
               uuid = "deine uuid"
               token = "dein Token"
}

Anschließend musst du in der Datei server.tf die oberste Zeile mit provider „Tech4Hosting“ {} entfernen, da sonst ein Konflikt mit der zuvor erstellten Datei zustande kommt, in der unser Provider schon angegeben ist.

Um eine Datei über das Terminal erstellen zu können gibst du folgenden Befehl ein:

$ touch provider.tf 

Um eine Datei öffnen und bearbeiten zu können nutzt du folgenden Befehl:

$ nano provider.tf 

Nun kannst du erneut über das Terminal zu diesem Verzeichnis navigieren und die beiden Befehle terraform init und terraform apply ausführen und wirst feststellen, dass du nur noch die Ausführung mit einem „yes“ bestätigen musst.

Es ist aber auch möglich, die Informationen direkt in dem server.tf file zu ergänzen, anstatt eine neue Datei zu erstellen. Hierbei behältst du die oberste Zeile und ergänzt die Zeilen mit der uuid und dem token innerhalb der geschweiften Klammern.

Möglichkeit: Umgebungsvariablen

Bei dieser Methode musst du keine extra Datei anlegen mit den oben gezeigten Codezeilen. Somit ist es auch nicht mehr notwendig die oberste Zeile in der server.tf Datei zu entfernen. Du musst hierfür das Terminal öffnen und folgenden Befehl eingeben:

$ export GRIDSCALE_UUID=deine uuid  

$ export GRIDSCALE_TOKEN=dein token

Wenn du nun env im Terminal ausführst sollten dir deine Umgebungsvariablen angezeigt werden, ebenso wie deine gerade erstellen Variablen.

Wenn deine SSH-Verbindung getrennt wird, existieren die erstellten Umgebungsvariablen nicht mehr. Diese sind temporär hinterlegt, solange die SSH-Verbindung aktiv ist.

Entfernen kannst du deine Variablen wieder, indem du statt export den Befehl unset verwendest.

$ unset GRIDSCALE_UUID

$ unset GRIDSCALE_TOKEN

Sollte man die erstellte Infrastruktur nicht mehr benötigen, kann man diese auch wieder mit

$ terraform destroy

entfernen.

Du solltest nun in der Lage sein, eigenständig mit anderen Beispielen vertraut zu werden und eigene Konfigurationsdateien zu erstellen. Ich wünsche dir viel Spaß bei der weiteren Verwendung mit Terraform und Tech4Hosting!

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Terraform auf dem Mac einrichten und mit Tech4Hosting verwenden

Terraform mit Tech4Hosting nutzen Mac

Einleitung

In diesem Tutorial werde ich dich begleiten und dir zeigen, wie du Terraform auf dem Mac Rechner installieren kannst und mit Hilfe von Terraform ganz einfach sowohl neue Server, als auch Storages im Tech4Hosting Panel erstellen kannst.

Mit Terraform kannst du deine Infrastruktur als Code darstellen. Dies ermöglicht Prozesse zu automatisieren und zu beschleunigen, wodurch weniger Fehler entstehen können als bei einer manuellen Einrichtung. Die Infrastruktur des Servers ist darüber leichter zu skalieren und mehrfach verwendbar. Weiterhin ist es möglich, den Zustand der Infrastruktur zu sichern und auch die Konfigurationsdateien als Dokumentation anzubieten. Ein weiterer Vorteil besteht darin, dass Terraform plattformunabhängig einsetzbar ist. Zudem gibt die Anwendung vor jeder Ausführung an, welche Änderungen es vornehmen wird. Dies ermöglicht dem Nutzer die Ausführung falscher Konfigurationen zu unterbinden.

Vorbereitung

Download und Installation von Terraform

Da dieses Tutorial auf Tech4Hosting basiert, benötigst du einen Account. Solltest du noch keinen besitzen, empfehle ich dir, dich als erstes unter folgendem Link zu registrieren.

Folgend die Installations-Anleitung für Terraform, welche unaufwändig über den „Paket-Manager“ Homebrew gelingt. Solltest du dies noch nicht auf deinem Rechner installiert haben, ist dies der erste Schritt.
Hierfür öffnest du auf deinem Rechner das Mac Terminal und führst dort folgenden Befehl aus:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nun kannst du mit Hilfe von Homebrew Terraform unkompliziert installieren. Dafür gibst du ganz einfach diesen Befehl ein:

$ brew install terraform

Die Installation kann ein bisschen dauern. Ob die Installation erfolgreich war, kannst du mit

$ terraform version

überprüfen. Bei erfolgreicher Durchführung wird die aktuelle Version zurückgegeben. Schließe dafür am besten das aktuelle Terminal und führe dies in einem neuen Terminal aus, damit Terraform im PATH verfügbar ist.

Es ist auch möglich Terraform über die Webseite von HashiCorp zu installieren. Zu deren Downloadseite gelangst du über diesen Link. Hier lädst du dir das Paket für den MacOS runter.

Anmerkung: Du solltest nach dem Download mit Hilfe der Checksumme überprüfen, ob das Paket korrekt geladen wurde. Wie dies möglich ist wird auf der Downloadseite von HashiCorp selbst erklärt.

Tech4Hosting Terraform provider

Als nächstes zeige ich dir, wie du das notwendige Binärprogramm für die Verwendung mit Tech4Hosting erhalten kannst und wie du an Beispiele gelangst, die dir einen ersten Einblick in die Verwendung mit Tech4Hosting als Provider verschaffen. Außerdem zeige ich dir in diesem Schritt, in welchem Pfad sich das Binärprogramm befinden muss, damit es korrekt funktioniert.

Du erstellst den gewünschten Ordner mit folgenden Befehl:

$ mkdir -p ~/.terraform.d/plugins/darwin_amd64/

Wechsel nun in das Verzeichnis ~/.terraform.d/plugins/darwin_amd64/ mit folgender Anweisung im Terminal:

$ cd ~/.terraform.d/plugins/darwin_amd64/

Hiermit lädst du nun das Binärprogramm über die URL herunter.

Hier kannst du die aktuellste Version herunterladen.

Solltest du die Datei in einem anderen Verzeichnis heruntergeladen haben, ist das kein Problem. Dann wechselst du über das Terminal in dieses Verzeichnis, wo sich das heruntergeladene Binärprogramm befindet und bewegst es in das richtige Verzeichnis mit:

$ mv _downloaded_file_ ~/.terraform.d/plugins/darwin_amd64/terraform_provider_Tech4Hosting

Du wirst höchstwahrscheinlich feststellen, dass du noch nicht die notwendigen Rechte haben wirst, das Binärprogramm nutzen zu können.

Dies änderst du mit dem Befehl:

$ chmod 755 ~/.terraform.d/plugins/darwin_amd64/terraform-provider-Tech4Hosting

Jetzt wechselst du in das Verzeichnis ~/.terraform.d und führst folgenden git Befehl aus, um die Beispiele direkt in dieses Verzeichnis zu klonen:

$ git clone git@github.com:Tech4Hosting/terraform_examples.git

Hiermit ist die Vorbereitung abgeschlossen.

Anwendungsbeispiel

Nun werde ich dir an einem Beispiel zeigen, wie du mit Hilfe von Terraform Server, Storage und Netzwerk auf einmal erstellen kannst. Die anderen Beispiele funktionieren nach demselben Prinzip, sind aber Anwendungsbeispiele um die entsprechenden Ressourcen einzeln zu erstellen. Mit diesen kannst du im Anschluss weiter arbeiten.

Zuerst navigierst du über das Terminal zu folgendem Verzeichnis:

$ cd ~/.terraform.d/terraform-examples/single-server/complete

In diesem Verzeichnis führst du als erstes diesen Befehl aus:

$ terraform init

Im Anschluss nun diesen Befehl:

$ terraform apply

Darauffolgend wirst du nach deinem API-Token und deiner UUID gefragt:

Über folgenden Link navigierst du zum Menüpunkt „API-Keys“ innerhalb des Tech4Hosting Panels und erzeugst deinen API-Token über den Button „API-Token erzeugen“. Hier findest du auch an derselben Stelle deine UUID. Beides gibst du nun im Terminal ein und bestätigst deine Eingaben mit „yes“ am Ende. Nun müsste dir ein Text ausgegeben werden mit den entsprechenden Konfigurationen und Server, Storage und Netzwerk sollten jetzt in deinem Panel existieren.

Damit du nicht jedes Mal deine UUID und deinen API Token eingeben musst, gibt es zwei Möglichkeiten (Verwendung von Umgebungsvariablen oder Konfigurationsdatei) diese Informationen einmal im Rechner zu hinterlegen, um diesen Prozess zu automatisieren.

Möglichkeit: Konfigurationsdatei

Du erstellst in dem Ordner- in dem sich deine auszuführende Datei befindet, eine weitere Datei mit der Endung .tf (bspw. provider.tf). In diese Datei kopierst du folgende Codezeilen und ersetzt die Texte innerhalb der Anführungszeichen mit deiner UUID und deinem API-Token:

Provider „Tech4Hosting“ {
               uuid = „deine uuid“
               token = „dein Token“
}

Anschließend musst du in der Datei server.tf die oberste Zeile mit provider „Tech4Hosting“ {} entfernen, da sonst ein Konflikt mit der zuvor erstellten Datei zustande kommt, in der unser Provider schon angegeben ist.

Nun kannst du erneut über das Terminal zu diesem Verzeichnis navigieren und die beiden Befehle terraform init und terraform apply ausführen und wirst feststellen, dass du nur noch die Ausführung mit einem „yes“ bestätigen musst.

Es ist aber auch möglich, die Informationen direkt in dem server.tf file zu ergänzen, anstatt eine neue Datei zu erstellen. Hierbei behältst du die oberste Zeile und ergänzt die Zeilen mit der uuid und dem token innerhalb der geschweiften Klammern.

Möglichkeit: Umgebungsvariablen

Bei dieser Methode musst du keine extra Datei anlegen mit den oben gezeigten Codezeilen. Somit ist es auch nicht mehr notwendig die oberste Zeile in der server.tf Datei zu entfernen. Du musst hierfür das Terminal öffnen und folgenden Befehle eingeben:

$ export GRIDSCALE_UUID=deine uuid
$ export GRIDSCALE_TOKEN=dein token

Wenn du nun env im Terminal ausführst, sollten dir deine Umgebungsvariablen angezeigt werden, ebenso wie deine gerade erstellen Variablen.

Entfernen kannst du deine Variablen wieder, indem du statt export den Befehl unset verwendest.

$ unset GRIDSCALE_UUID
$ unset GRIDSCALE_TOKEN

Bei dieser Variante solltest du aber bedenken, dass die hinzugefügten Umgebungsvariablen nach dem Schließen des Terminals nicht mehr erhalten bleiben und du dies nach einem Neustart des Terminals wiederholt durchführen musst.

Sollte man die erstellte Infrastruktur nicht mehr benötigen, kann man diese auch wieder mit

$ terraform destroy

entfernen.

Du solltest nun in der Lage sein, eigenständig mit anderen Beispielen vertraut zu werden und eigene Konfigurationsdateien zu erstellen. Ich wünsche dir viel Spaß bei der weiteren Verwendung mit Terraform und Tech4Hosting!

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Mit Apache Tomcat zu deinem Webserver & Webcontainer unter Ubuntu 16.04/18.04

Apache Tomcat unter Ubuntu 16.04/18.04

Der Apache HTTP Server sollte dir als einer der meistbenutzten Webserver im Internet etwas sagen. Wir stellen dir in unserem Tutorial Apache2 auf Ubuntu 16.04/18.04 installieren und u.a. auch weiterführend zu dem Thema in unserem Tutorial LAMP-Server mit PHP 7 und Apache 2.4 auf Ubuntu 16.04 installieren, bzw. alternativ hierzu unter LAMP-Stack auf Ubuntu 18.04 LTS mit PHP 7.2 und Apache 2.4 eine Installations- und Konfigurationsanleitung zur Verfügung, um deinen Ubuntu mit dem Apache Webserver auszustatten.

In diesem Tutorial geht es um die Installation und Konfiguration von Apache Tomcat unter deinem Ubuntu 16.04/18.04. Apache Tomcat ist wie Apache ein HTTP-Server, der HTTP bedient und ist zudem ein Servlet-Container. Apache ist ein allgemeiner HTTP-Server, der eine Reihe von erweiterten Optionen unterstützt, die Apache Tomcat nicht supported. Primär fungiert der Apache Tomcat zu Entwicklungszwecken als Servlet und JSP-Server für Java-Technologien. Apache Tomcat kann somit zum Bereitstellen deiner Java Servlets und JSPs verwendet werden. Du kannst also in deinem Java-Projekt deine WAR-Datei (kurz für Web Application Archive) erstellen und sie einfach im Bereitstellungsverzeichnis von Tomcat ablegen. Der Apache Tomcat bietet dir eine Umgebung zur Ausführung von Java-Code auf Webservern und ermöglicht dir somit mit Java serverseitig Inhalte zu erstellen.

… vor der Installation

Stelle vorab sicher, dass du die Installation mit root-Zugang durchführst und sorge zudem dafür, dass dein Server up to date ist.

apt-get update && apt-get upgrade

Installiere OpenJDK

Für Apache Tomcat muss Java auf deinem Server installiert sein. Das unten gezeigte Kommando dient zur Installation des OpenJDK, der Standard-Java-Entwicklung und -Laufzeit unter Ubuntu 16.04/18.04.

apt-get install default-jdk

Passe deine Firewall an

Wenn du auf die Tomcat-Benutzeroberfläche zugreifen möchtest, musst du deiner Firewall Zugriff auf Port 8080 erlauben. Mit dem folgenden Befehl lässt du den Datenaustausch an Port 8080 zu.

ufw allow 8080/tcp

Installiere Apache Tomcat

In diesem Tutorial zeige ich dir u.a., wie du die zu diesem Zeitpunkt neueste Binärversion von Apache Tomcat 9 (derzeit Version 9.0.14) von der Downloadseite herunterlädst und im entsprechenden Installationsverzeichnis entpackst. Solltest du das Tutorial zu einem späteren Zeitpunkt unter einer anderen Version und/oder Binärversion von Apache Tomcat durchführen, solltest du die Versionsnummer in den folgenden Kommandos entsprechend anpassen. Auf der Downloadseite findest du die neueste sowie vorangehende Versionen.

Nutze den mit wget eingeleiteten Befehl, um das Apache Tomcat-Archiv in das Verzeichnis /tmp herunterzuladen.

wget http://apache.mirror.iphh.net/tomcat/tomcat-9/v9.0.16/bin/apache-tomcat-9.0.16.tar.gz -P /tmp

Extrahiere hiernach das Apache Tomcat-Archiv

tar xzf /tmp/apache-tomcat-9.0.16.tar.gz -C /opt/

und verschiebe es in das Verzeichnis /opt/tomcat.

mv /opt/apache-tomcat-9.0.16/ /opt/tomcat

Erstelle einen Tomcat Nutzer

Die Installation selbst führst du – wie zu Beginn erwähnt – als Root durch. Der Sicherheit halber sollte Apache Tomcat jedoch nicht unter dem Root-Benutzer ausgeführt werden. Um dies zu gewährleisten, erstellst du mit dem im Code-Snippet unten eingeblendeten Kommando einen neuen tomcat-Systembenutzer und eine neue Gruppe mit dem Basisverzeichnis /opt/tomcat, das den Tomcat-Dienst nach der Installation ausführen wird.

useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat

Zugriff einrichten

Zugriff muss eingerichtet werden. Der folgende Befehl ändert den Besitz des /opt/tomcat/latest-Verzeichnisses in tomcat-Benutzer- und Gruppen.

chown -RH tomcat: /opt/tomcat/

Schließlich nutzt dir dann noch der unten aufgeführte Befehl, dass die Skripte im bin-Verzeichnis ein ausführbares Flag aufweisen.

chmod o+x /opt/tomcat/bin/

… nach der Installation

Die Installation an sich reicht noch nicht aus, um deinen neuen Webserver nutzen zu können. Es sind zusätzlich noch ein paar Dinge in Sache Konfiguration zu erledigen, auf die ich in den folgenden Unterkapiteln eingehe.

Erstelle eine systemd Unit-Datei

Um Tomcat als Dienst auszuführen, erstellst du eine neue Einheitendatei. Öffne deinen Texteditor und lege eine Datei namens tomcat.service in /etc/systemd/system/ an.

nano /etc/systemd/system/tomcat.service

Füge via Copy&Paste folgenden Inhalt in die zunächst noch leere Datei. Speichere den Inhalt der im nano-Editor geöffneten Datei mit Hilfe der Tastenkombination Strg+O und verlasse den Editor mit Strg+X. Mit dem Kommando oben kannst du die Datei jederzeit erneut im nano-Editor öffnen, wenn Bedarf besteht, Inhalte zu korrigieren.

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Sollte z.B. der Pfad zu deiner Java-Installation anders sein, als der oben im Code-Snippet unter Environment=“JAVA_HOME= hinterlegte Pfad, dann ändere diesen in der besagten Datei. Dies kann der Fall sein, falls du Java auf eine andere Weise auf deinem Server installiert hast, als ich dir hier in diesem Tutorial gezeigt habe.

Die Information über den Pfad erhälst du, indem du im Terminal den Befehl unten ausführst

which java

oder alternativ

whereis java

Bei dem hierauf jeweils generierten Output handelt es sich dann aber noch nicht um den finalen Pfad, sondern um eine Art symbolischem Link, der weiterführend Aufschluss zum Standort bzw. zum Pfad von Java auf deinem Server liefern kann. In diesem Zusammenhang müsstest du dann nämlich noch das folgende Kommando nutzen, um den korrekten Pfad zu ermitteln. Hierbei solltest du den Platzhalter JAVASYMLINK mit dem Output austauschen, dass du auf einen der beiden oben aufgeführten Kommandos im Terminal generiert bekommen hast.

readlink -f JAVASYMLINK

Wenn du mit deiner Arbeit an der tomcat.service-Datei abgeschlossen hast, musst du systemd mitteilen, dass du eine neue Unit-Datei erstellt hast.

systemctl daemon-reload

Starte den Service von Apache Tomcat.

systemctl start tomcat

Prüfe den Status des Service von Apache Tomcat.

systemctl status tomcat

Wenn keine Fehler vorhanden sind, kannst du den Tomcat-Dienst beim Booten automatisch starten.

systemctl enable tomcat

Konfiguriere Apache Tomcat

Es geht nun daran, einen Benutzer zu erstellen, der Zugriff auf das Web UI von Apache Tomcat hat. Definiert werden Tomcat-Benutzer und -Rollen in der Datei tomcat-users.xml. Diese Datei ist eine Vorlage mit Kommentaren und Beispielen, die beschreiben, wie du einen Benutzer oder eine Rolle erstellst. Öffne die Datei im Editor deiner Wahl. Mit dem folgenden Kommando tue ich die im nano-Editor.

nano /opt/tomcat/latest/conf/tomcat-users.xml

Dem Screenshot unten entnimmst du, wie der im tomcat-users-Tag enthaltene Inhalt der im Editor geöffneten Datei aussieht. Die Kommentare sind in den aus HTML bekannten Kommentar-Tag gesetzt.

tomcat-users.xml-Datei

Um einen neuen Benutzer mit Zugriff auf das Web UI von Apache Tomcat hinzuzufügen, musst du den Benutzer in der Datei tomcat-users.xml innerhalb des tomcat-users-Tag wie im Code-Snippet unten definieren. Unter dem Benutzernamen admin und dem Passwort admin_password kannst du dich später dann sowohl im Web Application Manager Dashboard als auch im virtuelle Host Manager Dashboard deines Apache Tomcat anmelden. Jede im Code-Snippet unten gezeigte Zeile musst du mit < einleiten und mit /> schließen.

role rolename="admin-gui"
role rolename="manager-gui"
user username="admin" password="admin_password" roles="admin-gui,manager-gui"

Binde den im Code-Snippet oben gezeigten Inhalt via Copy&Paste in den tomcat-users-Tag ein, wie im Screenshot unten in der blau eingerahmten Markierung erkenntlich. Speichere das Update in der Datei mit der Tastenkombination Strg+O und verlasse den nano-Editor mit Strg+X.

tomcat-users.xml-Datei mit erstelltem Benutzer

Per default ist das Web UI von Apache Tomcat so konfiguriert, dass der Zugriff auf die Manager- und Host Manager-Apps nur von localhost aus eingeschränkt wird. Wenn du von der IP deines Servers auf das Web UI zugreifen möchtest, musst du diese Einschränkungen aufheben. Beachte dabei aber, dass dies unterschiedliche Sicherheitsauswirkungen haben kann und und es aus diesem Grund für Produktionssysteme nicht zu empfehlen ist.

Um den Zugriff auf die Weboberfläche via deiner IP doch zu ermöglichen, öffne die context.xml-Datei. Diese liegt einmal im Verzeichnis /opt/tomcat/latest/webapps/manager/META-INF und ein weiteres Mal im Verzeichnis /opt/tomcat/latest/webapps/host-manager/META-INF. Für beide Ablageorte musst du in der Datei dieselben Anpassungen vornehmen.

Öffne für die Manager-App die context.xml-Datei, die unter /opt/tomcat/latest/webapps/manager/META-INF/ liegt. In meinem Beispiel nutze ich erneut den nano-Editor.

nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

Kommentiere die im unten eingeblendeten Info-Block neongrün markierten Zeilen aus, speichere das Update mit Strg+O und beende deine Arbeit an der Datei mit Strg+X.

Apache Tomcat context.xml-Datei

Eine andere Option ist, den Zugriff auf die Manager- und Host Manager-Apps nur von einer bestimmten IP-Adresse aus zuzulassen. Anstatt die Blöcke auszukommentieren, kannst du einfach die IP-Adresse deines Servers zur Liste hinzufügen.

Wenn die IP deines Servers beispielsweise xx.xx.xx.xx dient als Platzhalter, den du mit der IP deines Servers austauschen müsstest. Du kannst eine Menge von IP-Adressen hinzufügen. Die zulässigen IP-Adressen wären dann, wie im Beispiel unten zu sehen, von einem vertikalen |-Balken getrennt. Alternativ zu einer IP-Adresse kannst du einen regulären Ausdruck verwenden.

Apache Tomcat context.xml-Datei

Öffne für die Host Manager-App dann noch die die context.xml-Datei, die unter /opt/tomcat/latest/webapps/host-manager/META-INF/ liegt. Nimm dort ebenfalls das Update analog zum Update durch, dass du zuvor in der context.xml-Datei durchgeführt hast, die sich unter /opt/tomcat/latest/webapps/manager/META-INF befindet.

nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

Starte den Tomcat-Dienst danach neu, damit die Änderungen wirksam werden. Allgemein ist dieser Schritt jedes Mal notwendig, wenn du die Tomcat-Konfigurationsdateien bearbeitet haben solltest.

systemctl restart tomcat

Getting started mit dem Apache Tomcat Web UI

Öffne deinen Browser und erreiche das Web UI von Apache Tomcat unter der URL nach dem Schema http://localhost:8080, wobei du localhost dann mit der IP deines Servers austauscht. Du solltest daraufhin die Startseite sehen, wie sie im folgenden Screenshot abgebildet ist.

Apache Tomcat Web UI

Das Web Application Manager Dashboard des Apache Tomcat Web UI ist unter URL nach dem Schema http://localhost:8080/manager/html verfügbar. Von hier aus kannst du Anwendungen bereitstellen, die Bereitstellung aufheben, starten, stoppen und erneut laden.

Authentifizierung zum Web Application Manager Dashboard von Apache Tomcat

Nach Eingabe des Benutzernamens admin und des Passworts admin_password wirst du auf die entsprechende Seite weitergeleitet.

Web Application Manager Dashboard von Apache Tomcat

Das Virtuelle Host Manager Dashboard des Apache Tomcat Web UI ist unter der URL nach dem Schema http://localhost:8080/host-manager/html verfügbar. Von hier aus kannst du Apache Tomcat virtuelle Hosts erstellen, löschen und managen.

Authentifizierung zum Virtuelle Host Manager Dashboard von Apache Tomcat

Auch in diesem Fall erreichst du nach Verifizierung deiner Benutzerdaten die entsprechende Seite.

Virtuelle Host Manager Dashboard von Apache Tomcat

Fazit

Super! Du verfügst nun mit Apache Tomcat über deinen eigenen Webserver und Webcontainer. Obwohl Apache Tomcat – neben seiner primären Einsatzmöglichkeit für Entwicklungszwecke – auch einfach als allgemeiner HTTP-Server verwendet werden kann, kannst du Apache und Apache Tomcat auch so einrichten, dass Apache mit statischen Inhalten zusammenarbeitet und die Anforderungen für dynamischen Inhalt an Apache Tomcat weiterleitet. Ich wünsche dir guten Nutzen aus den Möglichkeiten mit dem Apache Tomcat zu ziehen. ?

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Nutzung des Tech4Hosting Object Storage mittels Java

Heute ein Tutorial für alle Java Liebhaber da draußen. An dieser Stelle erfährst du, wie du den S3-kompatiblen Object Storage von Tech4Hosting mittels Java ansprichst. Das von uns bereitgestellte Code-Sample bildet die Grundfunktionalitäten Upload, Download, Namensanpassung und Zugriffsrechteverwaltung ab.

Tech4Hosting S3 Object Storage ist komplett Amazon S3 kompatibel, dementsprechend greifen wir im Code auf die AWS SDK Libraries für Java zurück. Unser Beispielprogramm und seine Abhängigkeiten werden von dem Build-Management Tool Apache Maven mit einer pom.xml verwaltet.

Sample einrichten:

1. Clone unser BitBucket Repository unter folgendem Link:
https://bitbucket.org/Tech4Hosting/java-s3example/
2.. Erstelle ein neues Maven Projekt.
3. Setze alle benötigten Umgebungsvariablen (Bucket Name, Key Name, Tech4HostingS3 Access Key, Tech4HostingS3 Secret) in deiner Umgebung.

Sample ausführen:

Nachdem du den Code ausgeführt hast, wirst du im Dialog dazu aufgefordert die Pre-Signed URL zu klicken. Durch klicken der URL wird deine Datei final in deinen Object Storage übertragen. Am Ende des Beispiels wirst du weiterhin gefragt, ob die soeben übertragenen Dateien wieder gelöscht werden sollen.

Tech4HostingS3 Object Storage java

Code:


package io.Tech4Hosting.s3example;


import com.amazonaws.ClientConfiguration;
import com.amazonaws.HttpMethod;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;


public class Main {

    public static void main(String[] args) throws IOException {

        for (int j = 0; j < 2; j++) {

            // file to upload
            String filePath = "example/logo.png";

            // bucket target - needs to exist!
            String bucketName = "karl";

            // object key
            String keyName = "s3test_" + j;

            // S3 Endpoint for Tech4Hosting
            String endpoint = "https://gos3.io";

            // these values come from the object storage settings in the Tech4Hosting panel
            String accessKey = System.getenv("GRIDSCALE_S3_ACCESS_KEY");
            String secret = System.getenv("GRIDSCALE_S3_SECRET");

            if (accessKey == null || secret == null) {
                System.out.println("Please define GRIDSCALE_S3_ACCESS_KEY and GRIDSCALE_S3_SECRET in your environment.");
                System.exit(-1);
            }

            BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secret);

            ClientConfiguration clientConfiguration = new ClientConfiguration();
            clientConfiguration.setSignerOverride("S3SignerType");
            
            // Connection Object
            AmazonS3 objectStorageClient = AmazonS3ClientBuilder.standard()
                    .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                    .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint,
                            Regions.DEFAULT_REGION.getName()))
                    .withClientConfiguration(clientConfiguration)
                    .build();


            File file = new File(filePath);
            long contentLength = file.length();
            long partSize = 5 * 1024 * 1024; // Set part size to 5 MB.

            // Create a list of ETag objects. You retrieve ETags for each object part uploaded,
            // then, after each individual part has been uploaded, pass the list of ETags to
            // the request to complete the upload.
            List partETags = new ArrayList();

            // Initiate the multipart upload.
            InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucketName, keyName);
            InitiateMultipartUploadResult initResponse = objectStorageClient.initiateMultipartUpload(initRequest);

            // Upload the file parts.
            long filePosition = 0;
            for (int i = 1; filePosition < contentLength; i++) {
                // Because the last part could be less than 5 MB, adjust the part size as needed.
                partSize = Math.min(partSize, (contentLength - filePosition));

                // Create the request to upload a part.
                UploadPartRequest uploadRequest = new UploadPartRequest()
                        .withBucketName(bucketName)
                        .withKey(keyName)
                        .withUploadId(initResponse.getUploadId())
                        .withPartNumber(i)
                        .withFileOffset(filePosition)
                        .withFile(file)
                        .withPartSize(partSize);

                // Upload the part and add the response's ETag to our list.
                UploadPartResult uploadResult = objectStorageClient.uploadPart(uploadRequest);
                partETags.add(uploadResult.getPartETag());

                filePosition += partSize;
            }

            // Set the presigned URL to expire after one hour.
            java.util.Date expiration = new java.util.Date();
            long expTimeMillis = expiration.getTime();
            expTimeMillis += 1000 * 60 * 60;
            expiration.setTime(expTimeMillis);

            // Complete the multipart upload.
            CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucketName, keyName,
                    initResponse.getUploadId(), partETags);
            objectStorageClient.completeMultipartUpload(compRequest);

            GeneratePresignedUrlRequest generatePresignedUrlRequest =
                    new GeneratePresignedUrlRequest(bucketName, keyName)
                            .withMethod(HttpMethod.POST) // Change this to 'GET' if you want to Download
                            .withExpiration(expiration);
            URL url = objectStorageClient.generatePresignedUrl(generatePresignedUrlRequest);

            System.out.println("Please click on the link in the next 12 seconds" + "n" + "Pre-Signed URL: " + url.toString());

            try {
                TimeUnit.SECONDS.sleep(12);

                // Set ACLs to file
                AccessControlList acl = objectStorageClient.getObjectAcl(bucketName, keyName);

                acl.getGrantsAsList().clear();

                // change '.Read' to whatever Property you want to set the acl to
                acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.Read);

                // set ACLs to file
                objectStorageClient.setObjectAcl(bucketName, keyName, acl);

                // Delete
                if (JOptionPane.showInputDialog(null, "Do you want to delete this example now?" +
                        " y/n?").toLowerCase().equals("y")) {
                    objectStorageClient.deleteObject(new DeleteObjectRequest(bucketName, keyName));
                    System.out.println("File " + keyName + "got removed from Bucket " + bucketName);
                } else {
                    System.out.println("File successfully created in " + bucketName);
                }
            
            } catch (InterruptedException e) {
                e.printStackTrace();

            } catch (SdkClientException e) {
                e.printStackTrace();

            }

        }
    }
}

 

Hoffentlich konnten wir dir mit unserem Beispielcode bei der Nutzung des S3 kompatiblen Object Storage von Tech4Hosting mittels Java weiterhelfen. Mehr Informationen zur allgemeinen Verwaltung des Object Storages erhältst du in Tech4Hosting Kurzanleitung: S3-kompatiabler Object Storage.

Zurück zur Tutorial Übersicht Back to Tutorial Overview

WordPress und gridSQL – der smarte Weg in die Zukunft

WordPress und gridSQL

Du verwendest bereits WordPress und MySQL um deine Homepage zu verwalten? Oder bist du auf der Suche nach automatischer Skalierung, um perfekt aufgestellt zu sein? Dann bist du bei uns genau richtig. Wir bieten als langjährige IT-Experten Autoscaling für mehr Performance und kümmern uns um die Bereitschaft und Funktionalität deines Services.
Hast du schon mal etwas von PaaS oder gridSQL gehört? gridSQL ist eine von Tech4Hostings smarten Lösungen für PaaS. Mit Tech4Hosting kannst du innerhalb weniger Minuten die perfekten Voraussetzungen für deine Website schaffen und direkt loslegen.
Um beispielsweise auf Werbekampagnen mit viele Anfragen vorbereitet zu sein, stellen wir euch zwei Lösungen vor:

Clusterlösung – Big Solution

Die Big Solution ist die sog. Cluster Lösung, wobei mit Cluster einen Verbund aus mehreren Komponenten gemeint ist. Das bedeutet, dass Database, WordPress und alle benötigte Komponenten auf einem einzigen Server laufen. Dadurch ist oftmals trotz wenigen Anfragen die Leistungskapazität des Servers erreicht, und damit auch die Kosten dauerhaft hoch.
Es kann aber auch sein, dass durch sehr viele Anfragen (HTTP-Requests), etwa in Folge einer Marketingkampagne, eine kritische Größe überschritten wird. Hier kann es vorkommen, dass die Leistungskapazität bei hohem Traffic doch niedrig ist, was zu einer schlechten Performance führen könnte.

gridSQL- Smart Solution

Die vorhandenen Ressourcen können mittels smarter Lösungen, wie gridSQL, effizienter eingesetzt werden, da mit ihrer Hilfe eine automatische Skalierung möglich ist. Ein weiterer Vorteil ist der Aspekt der strukturellen Datensicherheit. Grundsätzlich ist es sinnvoll aus Sicherheitsgründen Datenbanken auszulagern. Die Hauptziele der Datenbank-Auslagerung sind die Optimierung der Performance und die Langlebigkeit der Datenbank selbst. Weiterhin wird durch das Entfallen von Betreuung der gridSQL bzw. Betriebssysteme eine deutliche Kostensenkung erreicht. Dieses spielt beispielsweise bei einem begrenzten Budget eine wichtige Rolle. Daher haben wir einen unkomplizierten Weg für dich, um einfach und schnell deine Ressourcen bewusst einzusetzen.

Vergleich Big- und Smart Solution

Zu deiner Orientierung habe ich noch einmal innerhalb einer Tabelle die entscheidenden Fakten zum Cluster und der smarten Lösung dargestellt:

Funktionen Big Solution Smart Solution
Hohe Verfügbarkeit Ja Ja
Hohe Performance Ja Ja
Auslagerung der Datenbank Nein Ja
Kostenfaktor Hoch Niedrig
Automatische Skalierung Nein Ja
Zeitfaktor Zeitaufwendig Zeitersparnis
IT-Fachkraft für Pflege Wird zusätzlich benötigt Keine zusätzliche IT-Fachkraft
Schnelligkeit Langsam Schnell
Langlebigkeit Nein Ja
Predictive Maintenance Nein Ja

Im Folgenden werde ich dir Schritt für Schritt zeigen, wie du den gridSQL-Service über unser Panel anlegst und konfigurierst. Anschließend werde ich dir zeigen, wie du deine Datenbank zum gridSQL-Service übertragen und anpassen kannst. Es wird natürlich vorausgesetzt, dass du bereits ein laufenden Server mit WordPress und MySQL besitzt. Falls dies nicht der Fall ist, kannst du dir mit Hilfe dieses Tutorials einen LAMP-Server bereitstellen. Hier musst du darauf achten, dass dieses Tutorial für Ubuntu 16.04 geschrieben ist, für Version 18.04 musst du natürlich einige Befehle anpassen:

Schritt 1 – gridSQL-Service erstellen

Um bei uns ein gridSQL-Service erstellen zu können, musst du dich erst in unserem Tech4Hosting Panel anmelden. Hier kannst du zusätzlich das Tutorial “getting-started-paas-service” nutzen:

Nachdem du dich angemeldet hast, navigiere in der Menüleiste auf “gridSQL” und klicke auf “gridSQL Service erstellen”. Dafür wählst du mysql aus. Am Ende klicke auf “Service erstellen”.

gridSQL Service erstellen

gridSQL Service erstellen

Nachdem du deinen Dienst erstellt hast, musst du diesen auch mit dem Server verbinden. In folgenden Screenshots zeige ich dir, wie das funktioniert. Wichtig ist dabei, dass der Server gestoppt ist. Hier kannst du deinen Service per Drag & Drop mit deinem Server verbinden.

PaaS mit Server verbinden

Du hast jetzt einen funktionierenden gridSQL-Service und kannst dich nun mit gridSQL verbinden:

Schritt 2 – mit gridSQL verbinden

Als Nächstes musst du dich einmal mittels Terminal mit folgenden Befehl auf deinem Server einloggen:

 # ssh root@IPv4

Tipp: Falls bei der Anmeldung IPv4-Fingerprint-Probleme auftauchen, kannst du die Datei öffnen und die entsprechende Zeile löschen. Den Löschvorgang sollte jedoch nicht willkürlich durchgeführt werden, da Fingerprint zum einen die Host-Identifikation erleichtert und zum anderen eine Man-in-the-Middle Attack verhindert. Also bitte nur löschen, wenn du den ssh-Server neu aufsetzen möchtest.

Die IP-Adresse findest du bei uns im Panel. Nach der Installation des Clients kannst du dich über die IPv6 Adresse sowie den Port und die generierten Zugangsdaten mit deinem Service verbinden. Denke daran, dass sich der Server, von dem du dich zu deinem Service verbindest, in der gleichen Security Zone wie der PaaS Service selbst befinden muss.

Tipp: um der IPv6-Adresse einen anderen Namen zu geben, gehst du in das /var/www/wordpress Verzeichnis und öffnest die folgende Datei:

 # vim /etc/hosts 

IPv6 umbenennen
Wenn du dies gemacht hast, kannst du mit folgendem Befehl speichern und das Dokument schließen:

 :wq 

Kopiere im wordpress-Verzeichnis einmal die Datei wp-config-sample.php unter dem Namen wp-config.php, um dort später die Konfigurationen vornehmen zu können:

 # cp wp-config-sample.php wp-config.php 

Schritt 3 – Datenbank Übertragung

Vorbereitung

Bevor du deine Daten auf gridSQL importieren kannst, musst du dich erst auf deinem PaaS MySQL Prompt einloggen:

 $ mysql -h IPv6 -u root -p

Jetzt musst du eine Datenbank erstellen. In meinem Beispiel heißt die Datenbank, die ich importieren möchte, wordpress:

 mysql> create database wordpress; 

Mit folgendem Befehl prüfst du, ob die Datenbank „wordpress“ erstellt ist:

 mysql> show databases; 

Dann nutze bitte diese auch, um dafür einen Benutzer mit den benötigten Rechten zu hinterlegen:


mysql> use wordpress;
mysql> grant all privileges on wordpress.* to 'Benutzername'@'%' identified by 'Passwort';

Tipp: Falls du bei der Benutzererstellung ein Problem mit dem Plugin Validate_Password hast, kannst du diese auch löschen:

 mysql> uninstall plugin validate_password; 

Jetzt kannst du danach Ausschau halten, ob dein neuer User auch hinterlegt ist. Als nächstes kannst du die Rechte einmal aktualisieren und rausgehen:


mysql> select host, user from mysql.user;
mysql> flush privileges;
mysql> exit;

Konfiguration

Als Nächstes passe die Konfigurationsdatei an. Hier trage bitte Datenbankname, -username, -passwort und die IPv6-Adresse anstatt Localhost für DB_HOST ein. Allerdings ist es empfehlenswert, dass du den Hostnamen, der am Anfang in der Datei /etc/hosts hinterlegt wurde benutzt, da PHP sich mit IPv6 meistens schwer tut:

 $ vim /var/www/wp-config.php 

wp-config.php konfigurieren

Nachdem du die Konfigurationsdatei angepasst hast, öffne einen Browser deiner Wahl. Dort gib bitte die IPv4 deines Servers an. Es erscheint eine Standardinstallation von WordPress. Bitte fülle die gekennzeichnete Felder aus und installiere WordPress. Am Ende logge dich mit deinen Credentials ein:

WordPress installieren: wp-admininstall.php

WordPress Dashboard

Datenbankexport

Um deine Datenbank zu exportieren, brauchst du den sogenannten mysqldump-Befehl:

 $ mysqldump -h test.db -u  root -p wordpress > wordpress_backup.sql 

Du kannst auch kontrollieren, ob das Exportieren geklappt hat. Dafür schaust du in deiner Datei: wenn dort kein Error auftaucht, hat es auch geklappt:

 $ vim wordpress_backup.sql 

Aus MySQL-Datenbank Backup erstellen

Datenbankimport

Gehe bitte noch einmal in deinem PaaS MySQL Prompt und lösche dort die Standard Datenbank „wordpress“. Wenn du deinen Browser aktualisierst, erscheint Error:


$ mysql -h test.db  -u root -p 
mysql> drop database wordpress;
mysql> exit;

WordPress Error: Can't select database

Dies zeigt einfach, dass momentan keine Datenbank vorhanden ist. Als nächstes kannst du deine exportierte Datenbank importieren. Zuerst musst du eine neue Datenbank anlegen (in meinem Beispiel heißt die Datenbank ebenso wordpress) und sie dann mit dem Import Befehl befüllen:


$ mysql -h test.db -u root -p 
mysql> create database wordpress;
mysql> use wordpress;
mysql> show tables;
mysql> exit;

Hier siehst du, dass die angelegte Datenbank „wordpress“, leer ist:

MySQL: Tabellen einer Datenbank zeigen

Nun kannst du die Datenbank mit deinen Daten befüllen:

 $ mysql -h test.db -u root -p wordpress 

Aktualisiere jetzt deinen Browser. Wie du sehen kannst, ist WordPress erneut erreichbar.

WordPress Startseite

Herzlichen Glückwunsch! Der Import hat geklappt und du zählst jetzt zu denjenigen, die ganz bewusst ihre Ressourcen einsetzen und auf dem aktuellen Stand der Technik sind.

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Tech4Hosting und Docker IPv6

In dieser kurzen Anleitung erkläre ich dir, wie du IPv6 mit Docker auf der Tech4Hosting Infrastruktur funktionsfähig einrichtest. Ein typischer Anwendungsfall, bei dem diese Anleitung weiterhilft ist, wenn du deine Docker Anwendung mit einem Tech4Hosting Platform-as-a-Service Dienst (IPv6) verbinden möchtest.

Die zusätzlichen Einstellungen sind notwendig, weil der Docker-Deamon das Containernetzwerk standardmäßig nur für IPv4 konfiguriert. Den Schritten der Anleitung kannst du unter den Linux Distros Ubuntu und Debian folgen.

Damit die IPv6 Unterstützung unter Docker funktioniert, muss dies explizit im Docker Netzwerkinterface angegeben werden. Hierzu wird zunächst ein neues IPv6 fähiges Docker Netzwerkinterface angelegt. Danach bleibt der Traffic jedoch im neu erstellten Netzwerkinterface “gefangen”, so dass zwei kleine iptables Regeln angewendet werden müssen.

Diese bewirken, dass der Traffic auf die korrekten Interfaces weitergeleitet wird. Darüber hinaus ist es möglich, dass default Docker bridge Netzwerk IPv6-fähig zu konfigurieren. Bei dieser Variante (s. Abschnitt Variante 2) muss kein zusätzliches Netzwerkinterface angelegt werden, jedoch funktioniert dies nicht bei Verwendung von docker-compose.

So wird’s gemacht:

Mit dem Befehl

ip a

auf deiner Tech4Hosting VM kannst du dir den aktuellen Zustand anzeigen lassen.

Die Tech4Hosting Netzwerkinterfaces schauen im Standard so aus:

ens16 -> ist das Public Network
ens17 -> ist das PaaS Network

1. Docker IPv6 Netzwerkinterface erstellen

Anschließend legst du mit folgendem Befehl das neue IPv6 fähige Docker Netzwerkinterface an (IPv4/6 Range kann angepasst werden):

docker network create --ipv6 --driver=bridge --subnet=172.20.0.0/16 --subnet=2001:db8:1::/64 -o "com.docker.network.bridge.name"="docker-br0" br0

2. Systemd Service

In einem weiteren Schritt legst du dann einen Systemd Service an, der die nötigen ip6table Regeln konfiguriert und dafür sorgt, dass der Traffic zwischen Public und PaaS getrennt wird. Erstelle den Service unter dem unten stehenden Pfad mit deinem bevorzugten Editor.

vim /etc/systemd/system/docker_ipv6.service
[Unit]
Description=docker ip6tables rules
After=docker.service
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/docker_ipv6.sh
 
[Install]
WantedBy=multi-user.target

3. Bash Skript mit Routing Regeln

Entsprechend dazu wird ein Bash Skript angelegt das die routing Regeln beinhaltet:

 vim /usr/local/bin/docker_ipv6.sh
#!/bin/bash
 
ip6tables -t nat -I POSTROUTING -s 2001:db8:1::/64 -o ens16 -j MASQUERADE # public network
ip6tables -t nat -A POSTROUTING -s 2001:db8:1::/64 -d fcfc::1/32 -o ens17 -j MASQUERADE # paas network

Wichtig: Unter Debian muss zusätzlich accept_ra mit dem folgenden Befehl auf 2 gesetzt werden (in das Bash Skript einfügen). Andernfalls führt eine IPv6-fähige Weiterleitung zur Ablehnung von Router-Werbungen.

sysctl net.ipv6.conf.ens16.accept_ra=2 # Overrule forwarding behaviour. Accept Router Advertisements even if forwarding is enabled.

Anschließend machst du das Skript ausführbar, aktivierst und startest den Dienst:

chmod +x /usr/local/bin/docker_ipv6.sh
systemctl enable docker_ipv6.service
systemctl start docker_ipv6.service

Überprüfe in einem weiteren Schritt, ob die Regeln gesetzt wurden:

ip6tables -t nat -vnL

4. Verwendung mit docker-compose

Wer docker-compose verwendet, kann das br0 Interface wie folgt in der docker-compose YAML Datei integrieren:

[...]
networks:
  default:
    external:
    name: br0

5. IPv6 Funktion überprüfen

Zur einfachen Überprüfung der IPv6 Funktion kann ein Docker-Container mit Netzwerk Tool Image interaktiv gestartet werden.

docker run -it --network=br0 nicolaka/netshoot

Überprüfe nun, ob ein ping6 zur Außenwelt und zum Tech4Hosting PaaS-Dienst möglich ist:

 root @ /
[3] ? → ping6 heise.de
PING heise.de(redirector.heise.de (2a02:2e0:3fe:1001:302::)) 56 data bytes
64 bytes from redirector.heise.de (2a02:2e0:3fe:1001:302::): icmp_seq=8 ttl=57 time=1.00 ms
64 bytes from redirector.heise.de (2a02:2e0:3fe:1001:302::): icmp_seq=9 ttl=57 time=4.70 ms
 
root @ /
[5] ? → ping6 fcfc::1:8ec:7bff:fe7c:af03
PING fcfc::1:8ec:7bff:fe7c:af03(fcfc::1:8ec:7bff:fe7c:af03) 56 data bytes
64 bytes from fcfc::1:8ec:7bff:fe7c:af03: icmp_seq=1 ttl=63 time=0.907 ms
64 bytes from fcfc::1:8ec:7bff:fe7c:af03: icmp_seq=2 ttl=63 time=0.603 ms

Variante 2

Bei Variante 2 wird das default Docker bridge Netzwerk IPv4/IPv6 dualstack fähig konfiguriert. Hierzu muss die Datei daemon.json mit folgendem Inhalt angelegt werden:

vim /etc/docker/daemon.json
{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
} 

Als nächstes müssen die Schritte 2-3 von der ersten Variante durchgeführt werden, sowie Schritt 5 um die Funktion zu testen. Wichtig: Diese Variante unterstützt kein docker-compose.

Zurück zur Tutorial Übersicht Back to Tutorial Overview

Apache Tomcat mit SSL absichern

Nachdem ich dir in unserem Tutorial Apache Tomcat zu deinem Webserver & Webcontainer unter Ubuntu 16.04/18.04 gezeigt habe, wie du dir den Apache Tomcat auf deinem Ubuntu installierst und konfigurierst, stelle ich dir zusätzlich dieses Tutorial hier zur Verfügung. Hier erfährst du, wie du den Tomcat Webserver und -container mit SSL absichern kannst. Genau genommen lernst du, wie du einen SSL-fähigen Proxy Server einrichtest, um sicher mit Clients zu verhandeln und Anforderungen an Tomcat zu reichen.

Ohne SSL läuft die gesamte Kommunikation zwischen dem Tomcat-Server und den Clients per default unverschlüsselt ab, ausgenommen sind hierbei Passwörter oder vertraulichen Daten. Es gibt mehr als eine Möglichkeit, wie du SSL in deine Tomcat-Installation integrieren kannst. Um die Möglichkeiten in Betracht zu ziehen, werden wir uns in diesem Tutorial sowohl Apache als auch Nginx widmen.

Vorab: Wozu Reverse Proxy?

Tomcat hat die Fähigkeit, Verbindungen nativ zu verschlüsseln, sodass die Frage aufkommt, wozu eine Reverse-Proxy-Lösung erforderlich/hilfreich ist.

In diesem Zusammenhang spielen die Nachteile eine Rolle, die SSL mit Tomcat mit sich bringen kann. Ich gehe kurz auf einige Nachteile ein:

  • Es kann vorkommen, dass SSL mit Tomcat von bestimmter Software nicht so stark unterstützt wird. Z.B. bietet Let’s Encrypt keine native Möglichkeit, mit Tomcat zu interagieren. Darüber hinaus erfordert das Java-Keystore-Format, dass herkömmliche Zertifikate vor der Verwendung konvertiert werden, was wiederum die Automatisierung erschwert.
  • Zudem werden herkömmliche Webserver häufiger veröffentlicht als Tomcat. Dies kann letztlich erhebliche Auswirkungen auf die Sicherheit deiner Anwendungen haben. Beispielsweise kann die unterstützte Tomcat-SSL-Verschlüsselungssuite schnell veraltet sein, sodass deine Anwendungen nicht optimal geschützt sind. Falls Sicherheitsupdates erforderlich sind, ist es wahrscheinlich einfacher, einen Webserver als deine Tomcat-Installation zu aktualisieren.

Eine Reverse-Proxy-Lösung umgeht solche Probleme, indem einfach ein starker Webserver vor den Tomcat gestellt wird. Der Webserver kann Clientanfragen mit SSL abwickeln. Diese Funktionalität wurde speziell für die Verarbeitung entwickelt.

Der Webserver kann dann Anfragen an Tomcat weiterleiten, die in ihrer normalen, nicht privilegierten Konfiguration ausgeführt werden. Diese Trennung der Anliegen vereinfacht die Konfiguration, auch wenn eine zusätzliche Software ausgeführt werden muss.

HTTP Proxy mit dem mod_jk-Modul deines Apache

Der Apache-Webserver verfügt über ein Modul namens mod_jk, das über das Apache JServ-Protokoll direkt mit Tomcat kommunizieren kann. Ein Connector für dieses Protokoll ist in Tomcat standardmäßig aktiviert, sodass Tomcat per default bereit ist, diese Anforderungen zu bearbeiten.

Bevor wir besprechen können, wie Apache-Webserververbindungen zu Tomcat ausgeführt werden, musst du einen Apache-Webserver installieren und sichern. Infos hierzu findest du in unserem Tutorial Apache2 auf Ubuntu 16.04/18.04 installieren. Anschließend ist es notwendig, dass du SSL auf dem Server einrichtest.

Wenn du einen Domänennamen hast, kannst du den Server am einfachsten mit Let’s Encrypt sichern, das kostenlose, vertrauenswürdige Zertifikate bereitstellt. Folge einfach unserem Tutorial Einen Apache-Server als Reverse-Proxy einrichten mit Ubuntu, um dies einzurichten.

Des Weiteren geht es darum, wie du den Apache-Webserver an deinen Apache Tomcat anschließt. Installiere mit Hilfe des unten eingeblendeten Kommandos das mod_jk-Modul. Der Apache-Webserver verwendet dieses Modul – wie gesagt – zur Kommunikation mit Tomcat über das Apache JServ-Protokoll. Das Modul wird während des Installationsprozesses automatisch aktiviert.

 apt-get install libapache2-mod-jk 

Als nächstes musst du das Modul dann aber noch konfigurieren. Die Hauptkonfigurationsdatei befindet sich unter /etc/libapache2-mod-jk/workers.properties. Öffne diese Datei jetzt im Editor deiner Wahl. Ich tue dies im nano-Editor.

 nano /etc/libapache2-mod-jk/workers.properties 

Suchen im Inhalt der Datei nach der workers.tomcat_home-Anweisung und lege hier dein Tomcat-Installationsverzeichnis fest. Für unsere Tomcat-Installation wäre das dann /opt/tomcat. Speichere das Update des Dateiinhalts mit der Tastenkombination Strg+O und verlasse den nano-Editor mit Strg+X.

 workers.tomcat_home=/opt/tomcat 

Passe den Apache Virtual Host mit mod_jk an den Proxy an

Als Nächstes müssen wir unseren Apache Virtual Host so anpassen, dass Proxy-Anforderungen an unsere Tomcat-Installation gestellt werden.

Wenn du SSL mit Let’s Encrypt eingerichtet hast, hängt der Dateispeicherort davon ab, welche Optionen du während des Zertifikatsvorgangs ausgewählt hast. Du kannst feststellen, welche virtuellen Hosts an der Bereitstellung von SSL-Anforderungen beteiligt sind, indem du Folgendes Kommando benutzt.

 apache2ctl -S 

Das daraufhin generierte Output wird dann so ähnlich aussehen.

 
VirtualHost configuration:
*:80                   example.com (/etc/apache2/sites-enabled/000-default.conf:1)
*:443                  is a NameVirtualHost
         default server example.com (/etc/apache2/sites-enabled/000-default-le-ssl.conf:2)
         port 443 namevhost example.com (/etc/apache2/sites-enabled/000-default-le-ssl.conf:2)
         port 443 namevhost www.example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)

. . .

Anhand der Zeilen, die dem SSL-Port 443 zugeordnet sind (Zeilen 3-6 in diesem Beispiel), können wir feststellen, welche virtuellen Hosts-Dateien am Serving dieser Domänen beteiligt sind.

Hier sehen wir, dass sowohl die 000-default-le-ssl.conf-Datei als auch die default-ssl.conf-Datei involviert sind. Du solltest also beide bearbeiten. Deine Ergebnisse werden sich wahrscheinlich unterscheiden.
Öffne die beiden Dateien jeweils im Editor deiner Wahl.


nano /etc/apache2/sites-enabled/000-default-le-ssl.conf

nano /etc/apache2/sites-enabled/default-ssl.conf

Unabhängig davon, welche Dateien du öffnen musst, ist der Vorgang derselbe. Innerhalb der <VirtualHost>-Tags solltest du Folgendes eingeben.


<VirtualHost *:443>

    . . .

    JKMount /* ajp13_worker

    . . .

</VirtualHost>

Speichere das Update mit der Tastenkombination Strg+O und verlasse den nano-Editor mit Strg+X. Wiederhole den obigen Vorgang für alle anderen Dateien, die du identifiziert hast und die bearbeitet werden müssen.
Lasse deine Konfiguration verifizieren.

 apache2ctl configtest 

Wenn du deinem Output “Syntax OK” entnehmen kannst, dann führe einen Neustart deines Apache Webservers durch.

 systemctl restart apache2 

Du solltest jetzt zu deinem Apache Tomcat gelangen, indem du die SSL-Version deiner Site in deinem Webbrowser besuchst (z.B. https://example.com).

HTTP Proxy mit Nginx

Mit Nginx ist das Proxying ebenso einfach wie mich Apache. Nginx verfügt zwar nicht über ein Modul, mit dem das Apache JServ-Protokoll gesprochen werden kann, es kann jedoch seine robusten HTTP-Proxying-Funktionen für die Kommunikation mit Tomcat verwenden.

Bevor wir uns dem widmen, wie Nginx-Verbindungen zu Tomcat hergestellt werden, musst du Nginx installieren, sichern und SSL auf dem Server einrichten.

Wenn du einen Domänennamen hast, kannst du den Server am einfachsten mit Let’s Encrypt sichern, das kostenlose, vertrauenswürdige Zertifikate bereitstellt. Folge unserem Let’s Encrypt Guide für Nginx, in dem du u.a. auch eine Anleitung zur Installation von Nginx findest.
Im Anschluss daran, geht es darum, wie du den Nginx-Webserver an deinen Tomcat anschließt.

Schritt 1: Anpassen der Nginx Server-Blockkonfiguration

Das Einrichten von Nginx als Proxy für Tomcat ist sehr einfach.

Beginne mit dem Öffnen der Server-Blockdatei, die deiner Site zugeordnet ist. Wir gehen davon aus, dass du die default-Serverblockdatei in diesem Tutorial verwendest.

 nano /etc/nginx/sites-available/default 

Im oberen Bereich der Datei musst du einen Upstream-Block hinzufügen. Dadurch werden die Verbindungsdetails beschrieben, sodass Nginx weiß, wo unser Tomcat-Server zuhört. Platziere diese außerhalb eines der in der Datei definierten Serverblöcke, wie im Code-Snippet unten gezeigt.


upstream tomcat {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {

    . . .

Ändere anschließend innerhalb des für Port 443 definierten Serverblocks den Speicherort/Block. Wir möchten alle Anfragen direkt an den gerade definierten Upstream-Block weiterleiten. Kommentiere den aktuellen Inhalt aus und verwende die proxy_pass-Direktive, um an den soeben definierten „Tomcat“ -Upstream zu gelangen.

Wir müssen auch die Konfiguration von proxy_params in diesen Block aufnehmen. Diese Datei definiert viele Details darüber, wie Nginx die Verbindung weiterleitet. Speichere hiernach das Update mit der Tastenkombination Strg+O und verlasse den nano-Editor mit Strg+X.


    server 127.0.0.1:8080 fail_timeout=0;
}

server {

    . . .

    location / {
        #try_files $uri $uri/ =404;
        include proxy_params;
        proxy_pass http://tomcat/;
    }

    . . .
}

Schritt 2: Teste und starte Nginx neu

Teste als Nächstes, ob bei den Konfigurationsänderungen keine Syntaxfehler aufgetreten sind.

 nginx -t 

Wenn keine Fehler gemeldet werden, starte Nginx neu, um deine Änderungen zu implementieren.

 systemctl restart nginx 

Du solltest jetzt in der Lage sein, zu deiner Tomcat-Installation zu gelangen, indem du die SSL-Version deiner Site in deinem Webbrowser besuchst (z.B. https://example.com).

Zugriff auf die Tomcat-Installation einschränken

Jetzt hast du SSL-verschlüsselten Zugriff auf deinen Apache Tomcat. Da alle Anfragen an Tomcat über unseren Proxy übermittelt werden sollen, können wir Tomcat so konfigurieren, dass nur Verbindungen auf der lokalen Loopback-Schnittstelle überwacht werden. Dies stellt sicher, dass externe Parteien nicht versuchen können, direkt Anfragen von Tomcat zu stellen.

Öffne die server.xml-Datei in deinem Tomcat-Konfigurationsverzeichnis, um diese Einstellungen zu ändern.

 nano /opt/tomcat/conf/server.xml 

In dieser Datei müssen wir die Connector-Definitionen ändern. Derzeit sind in der Konfiguration zwei Connectors aktiviert. Eine verarbeitet normale HTTP-Anforderungen an Port 8080, während die andere Apache JServ-Protokollanforderungen an Port 8009 abwickelt. Die Konfiguration sieht etwa wie folgt aus:


...

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Um den Zugriff auf die lokale Loopback-Schnittstelle einzuschränken, musst du nur ein „address“ -Attribut auf 127.0.0.1 in jeder dieser Connector-Definitionen hinzufügen. Das Endergebnis sollte so aussehen, wie im folgenden Code-Snippet gezeigt. Speichere mit Strg+O und verlasse den nano-Editor mit Strg+X.


. . .

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               address="127.0.0.1"
               redirectPort="8443" />
. . .

    <Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443" />

Führe erneut einen Neustart deines Apache Tomcat durch, sodass die Updates übernommen werden.

 systemctl restart tomcat 

Wenn du unserem Tutorial Apache Tomcat zu deinem Webserver & Webcontainer unter Ubuntu 16.04/18.04 gefolgt bist, solltest du eine ufw-Firewall für deine Installation aktiviert haben.

Da alle unsere Anfragen an Tomcat nun auf die lokale Loopback-Schnittstelle beschränkt sind, können wir die Regel aus unserer Firewall entfernen, die externe Anfragen an Tomcat zulässt.

 ufw delete allow 8080 

Dein Apache Tomcat sollte jetzt nur über deinen Web-Server-Proxy zugänglich sein.

Fazit

Zu diesem Zeitpunkt sollten Verbindungen zu deiner Tomcat-Instanz mithilfe eines Webserverproxys mit SSL verschlüsselt sein. Durch die Konfiguration eines separaten Webserverprozesses kann zwar die Software für die Bereitstellung deiner Anwendungen erhöht werden, die Sicherung des Datenverkehrs wird jedoch erheblich vereinfacht. Es hat mir Spaß gemacht, dir in dieser Sache behilflich gewesen sein zu können. ?

Zurück zur Tutorial Übersicht Back to Tutorial Overview