Apache2, PHP 7.3, MySQL und phpMyAdmin mit Froxlor für eigene Website auf Debian 9 vServer installieren [Step by Step]

In diesem How-to erkläre ich Step by Step, wie man einen Linux Server mit Debian 9 für die Verwendung einer Website einrichtet, samt Apache2, PHP 7, MySQL und phpMyAdmin. Für die Website-Verwaltung wird Froxlor verwendet. Besonders für Server-Neulinge sollte diese Erklärung hilfreich sein.

Dies ist ein Follow-up zum Tipp Nr. 33.

Inhaltsverzeichnis
Du benötigst...
vServer mit mindestens 10GB Speicher, einem CPU-Kern und 2GB RAM. Hierbei empfehle ich Avoro.eu, die unter anderem günstige vServer und Domains anbieten
Domain
PuTTY
WinSCP

Das Besorgen einer Domain

Ich empfehle dir, eine Top-Level-Domain zu kaufen, das heißt eine Domain die mit z.B. .de, .com oder .net endet. Diese kosten nur wenige Euro im Jahr. Andererseits kannst du auch bei freenom.com eine kostenlose Domain mieten. Hier ist die Endung jedoch oftmals für andere abschreckend und sie wirken nicht seriös.

Hast du dich nun für eine Domain entschieden, sei es für eine TLD oder kostenlose bei Freenom, musst du beim Anbieter die DNS-Einstellungen vornehmen. Bei Freenom kommt dies direkt beim Bestellvorgang, dies sieht wie folgt aus. Wichtig ist hier, dass du Use DNS wählst, die IPv4 IP-Adresse deines Servers in beide Felder rechts eingibst und am besten die Domain für 12 Monate reservierst.

Screenshot

Bei z.B. Nitrado heißt diese Einstellung Nameserver bearbeiten und man findet sie unter Meine Dienste Domains. Hier musst du einen neuen Eintrag erstellen, ins linke Feld kommt ein @, in der Mitte bleibt A (IPv4) und rechts kommt die Server IP-Adresse.


Die Vorbereitung am Server

Öffne PuTTY, eine Installation ist dabei nicht notwendig. Im Feld Host Name gibst du nun die IP-Adresse deines vServers ein. Am besten gibst du jetzt noch bei Saved Sessions einen Namen deines Servers oder Projektes ein und klickst auf Save, um die Verbindung zu speichern.

Starte die Verbindung nun mit einem Doppelklick auf deinen Server und bestätige die folgende Sicherheitsmeldung mit Ja.

Screenshot

Nun öffnet sich eine Konsole. Melde dich dort mit dem Nutzer root und dem Passwort, welches du entweder selbst vorher festgelegt hast oder in der Mail stand, ein. Nach der Eingabe von root drückst du Enter und gibst nun das Passwort ein. Es ist normal, dass du die Eingabe des Passworts nicht siehst. Bestätige schließlich deine Eingabe wieder mit Enter. Bei erfolgreicher Anmeldung werden jetzt einige neue Zeilen angezeigt, bei falscher Eingabe wird erneut das Passwort abgefragt.

Für den Fall, dass du das Root-Passwort ändern möchtest, benutzt du nach erfolgreicher Anmeldung folgenden Befehl und gibst das neue Passwort 2x ein.

passwd

Ob die Konsole bereit für Befehle ist erkennst du immer an der #, welche immer in der letzten Zeile neben dem grünen Cursor ist.

Screenshot

Als ersten werden wir den Hostname des Servers ändern:

hostname root.DOMAIN.TLD

Ersetze hierbei DOMAIN.TLD mit deiner Domain.

Als Nächstes bringen wir den Server auf den neuesten Stand:

apt-get update

Hiermit laden wir die Updates herunter. Anschließend installierst du die Updates:

apt-get upgrade -y

Um die Abfrage, ob die Updates wirklich installiert werden sollen, zu überspringen, habe ich das Parameter -y angehängt. Die Installation der Updates wird einige Minuten dauern.

Wie du vorhin gelernt hast, siehst du, ob der Server bereit ist daran, dass die # mit Cursor sichtbar ist. Ist dies der Fall, werden wir einmal die wichtigsten Grundprogramme aus dem Debian-Paket installieren. Dazu gehört auch ein Programm gegen Brute-Force Attacken, ein Editor und einiges, was Froxlor benötigt:

apt-get -y install sudo fail2ban nano cron tar zip unzip tar make nload htop screen dialog telnet netcat spell locales bzip2 w3m curl speedtest-cli sendmail sendmail-cf m4

Für die PHP-Paketquelle muss jetzt noch der Key hinzugefügt werden:

apt-get -y install ca-certificates apt-transport-https lsb-release

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Suche nun erneut nach Paket-Updates und installiere diese.

apt-get update

apt-get upgrade -y --allow-unauthenticated


Installation von Apache, PHP 7 und MySQL-Server

Nun wird Apache2 als Webserver installiert.

apt-get -y install apache2

Jetzt werden PHP 7 sowie einige dazugehörige PHP-Module installiert werden.

apt-get install php7.3 php7.3-cli php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-readline php7.3-xml php7.3-xsl php7.3-zip php7.3-bz2 libapache2-mod-php7.3 php-mysql php-bcmath -y --allow-unauthenticated

Als Nächsten Schritt installierst du den MySQL-Server.

apt-get -y install mysql-server mysql-client

Verwende nun folgende Befehle, um das Passwort vom MySQL-Benutzer root zu ändern. Ersetzte dabei PASSWORT mit einem sicheren Passwort.

mysql -u root

update mysql.user set password=password('PASSWORT') where user='root';

update mysql.user set plugin='' where user='root';

flush privileges;

exit

Nun musst du Apache einmal neu starten.

systemctl restart apache2

Rufst du nun die IP-Adresse deines Servers im Browser auf, siehst du die Default Apache Seite. Bis diese Seite auch mit der Domain erreichbar ist, kann einige Stunden dauern, wenn die Domain erst vor Kurzem registriert wurde.


Froxlor installieren

Nun wird es Zeit, Froxlor zu installieren. Verwende folgende Befehle, um die neueste Version herunterzuladen, zu entpacken und die Rechte zu setzen.

cd /var/www/html/

wget http://files.froxlor.org/releases/froxlor-latest.tar.gz

tar -vxzf froxlor-latest.tar.gz && rm froxlor-latest.tar.gz

mv froxlor/ ../ && cd ../

chown www-data:www-data froxlor/ -R

Jetzt musst du mit dem Editor Nano eine kleine Änderung in der Config von Apache vornehmen:

nano /etc/apache2/sites-available/000-default.conf

Navigiere mit den Pfeiltasten auf deiner Tastatur zur Zeile DocumentRoot /var/www/html und entferne dort /html. Mit Strg + X und anschließend Y und Enter speicherst und schließst du den Editor wieder. Da du eine Änderung in der Config von Apache vorgenommen hast, musst du diesen Dienst nun neu starten, damit die Änderung wirksam werden:

service apache2 restart


phpMyAdmin installieren

Jetzt wird phpMyAdmin installiert. Dies ist für Debian 9 etwas aufwendiger als Debian 8, da das Paket nur für Debian 8 geeignet ist und mit PHP 7 nicht vollständig kompatibel ist.

Begib dich auf phpmyadmin.net und mache einen Rechtsklick oben rechts auf Download und kopiere den Link.

Lade die Version nun auf dem Server herunter. Bei dem 2. Befehl fügst du die Zwischenablage mit einem Rechtsklick ein, beim 3. und 4. Befehl drückst du die Tabulator-Taste zum Autovervollständigen.

cd /usr/share

wget *Rechtsklick*

unzip phpMyAdmin-*Tabulator*

rm phpMyAdmin-*Tabulator*.zip

Jetzt musst du noch den Namen des Verzeichnissen umbenennen. Der Befehl dafür sieht in etwa so aus, achte darauf, die Version anzupassen:

mv phpMyAdmin-4.8.5-all-languages phpmyadmin

Nun setzt du noch die Berechtigungen für dieses Verzeichnis.

chmod -R 0755 phpmyadmin

Nun muss noch eine Apache-Konfigurationsdatei erstellt werden. Verwende dafür folgenden Befehl.

nano /etc/apache2/conf-available/phpmyadmin.conf

Trage in diese Datei folgenden Inhalt ein.

# phpMyAdmin Apache Configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</Directory>

<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Speichere die Datei mit Strg + X Y Enter ab.

Benenne die Config-Datei config.sample.inc.php um.

mv /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Aktiviere die soeben erstellte Konfigurationsdatei und starte Apache neu.

a2enconf phpmyadmin

systemctl restart apache2


Froxlor konfigurieren

Froxlor ist nun im Browser aufrufbar, wenn du deine Server-IP im Browser aufrufst und dahinter /froxlor anhängst, beispielsweise:

192.168.0.1/froxlor
Screenshot

Klicke auf Start install, auf der nächsten Seite sollte nun alles grün sein, sodass du die Systemvoraussetzungen erfüllst. Klicke auf Installation fortführen. Nun gibt es einiges zum Einstellen. Im folgenden habe ich eine Tabelle mit den Einstellungen und Erklärungen erstellt, die wichtig sind.

Einstellung Eingabe
Passwort für den unprivilegierten MySQL-Account Passwort für die Datenbank "froxlor", die angelegt wird
Passwort für den MySQL-Root-Account Passwort des MySQL-Root-Passworts, welches du vorhin festgelegt hast
Passwort für den MySQL-Root-Account Passwort für den Admin-Account für Froxlor, der die Webseiten verwalten kann
Servername (FQDN, keine IP-Adresse) root.DOMAIN.TLD eingeben (ersetze DOMAIN.TLD mit deiner Domain)

Unten muss Webserver Apache 2.4 ausgewählt bleiben. Dann kannst du fortfahren. Froxlor sollte nun erfolgreich installiert worden sein und du kannst dich mit deinen Admin-Logindaten einloggen.

Screenshot

Jetzt ist es ander Zeit, falls noch nicht getan, WinSCP zu installieren und auch dort deinen Server hinzuzufügen. Das sollte eigentlich selbsterklärend sein. Rechnername ist die Server-IP, der Port ist 22, der Benutzername ist root und das Passwort ist dir ja bekannt. Bevor du dich jetzt verbindest, klicke auf den Pfeil neben Speichern Speichern und gib der Verbindung einen Namen, z.B. PROJEKTNAME - Root. Setze den Haken bei Passwort speichern und klicke auf OK. Jetzt kannst du dich mit einem Doppelklick auf den Eintrag verbinden, du musst auch hier einmalig die Sicherheitsmeldung bestätigen.

Jetzt beginnt der lästige Teil der Konfiguration des Servers, die Installation und Einrichtung des Webservers, Nameserver, Mailserver und FTP-Server. Klicke dazu im linken Menü beim Menüpunkt System auf Konfiguration. Bei Distribution musst du deine Debian-Version auswählen, Debian Stretch ist dabei Debian 9. Als Nächstes den Service, wir fangen mit dem Webserver an. Als letztes noch bei Daemon Apache 2.4 wählen. Klicke jetzt auf Weiter und gib bei FROXLOR_MYSQL_PASSWORD das vorher festgelegte Passwort der Froxlor-Datenbank ein und klicke anschließend auf Setzen.

Was du nun bei der Konfiguration tun musst, ist, alle Befehle in PuTTY einzugeben. Du kannst die Blöcke einfach anklicken und die Befehle kopieren und per Rechtsklick in PuTTY einfach einfügen, sie werden dann automatisch nacheinander ausgeführt. Nur den letzten musst du immer mit Enter noch ausführen. Bei der Konfiguration vom Webserver musst du nur einen Block an Befehlen ausführen, den ersten ausgenommen, da Apache ja bereits installiert ist. Die nächsten Konfigurationen werden mehr Blöcke haben.

Begib dich wieder zur Seite Konfiguration, weiter geht es mit dem Nameserver.

Hier musst du bei Daemon Bind9 nameserver auswählen. Erneut das Froxlor-Datenbank Passwort eingeben und bestätigen und alle Blöcke von oben nach unten durcharbeiten.

Weiter geht es mit dem Mailserver SMTP. Hier gibt es nur Postfix with dovecot auszuwählen. Fragen mit Möchten Sie fortfahren? musst du mit Y bestätigen. Bei der Postfix Konfiguration musst du Internet-Site auswählen und mit Tabulator zu OK navigieren. Als Nächstes schreibst du außerhalb von PuTTY root@DOMAIN.TLD und kopierst diese E-Mail-Adresse und fügst sie nun in das Feld in PuTTY mit einem Rechtsklick ein, lösche jedoch vorher das Beispiel raus. Wechsel mit Tab auf OK.

Beim Befehl /usr/bin/nano /etc/postfix/main.cf wird eine neue Datei erstellt. Hier musst du immer die Zeilen vom weißen Eingabefeld darunter kopieren und in PuTTY einfügen. Dann wie immer mit Strg + X, Y und Enter speichern. Das Ganze musst du jetzt einige Male tun.

Als Nächstes kommt der Mailserver IMAP/POP3, hier auch Dovecot with postfix auswählen. Auch hier gelten dieselben Schritte wie zuvor.

Nun ist der FTP-Server mit ProFTPD an der Reihe.

Und zu guter Letzt noch bei Sonstige den Cronjob for froxlor. Logrotate ist auch empfehlenswert aber kein Muss. Damit werden ältere große Log-Dateien automatisch gelöscht.

Dann bist du mit der Konfiguration fertig.


Website hinzufügen

Nun kannst du die erste Website hinzufügen. Gehe dazu in Froxlor oben links zu Kunden Kunden anlegen. Der Benutzername ist der, der für die FTP-Anmeldung verwendet wird. Den Haken unter Benutzername kannst du entfernen. Wähle noch ein Passwort und gib die erforderlichen Kontaktdaten an. Weiter unten musst du noch bei Dienstleistungsdaten angeben, wie viel Speicherplatz diejenige Website bekommt, etc. Klicke anschließend auf Speichern.

Jetzt musst du noch die Domain hinzufügen. Wechsel dazu links oben zu Domains Domain anlegen. Bei Domain gibst du nun deine Domain in Kleinbuchstaben ein, ohne www oder Sonstigem davor. Darunter wählst du den eben erstellten Kunden aus. Das war es auch schon, jetzt einfach Speichern.

Jetzt kannst du WinSCP öffnen und den Login vorbereiten. Bis der FTP-Zugang möglich ist, dauert es noch ein paar Minuten, bis Froxlor alles eingerichtet hat. Der Rechnername ist nach wie vor die Server-IP, der Port für die Webseiten immer 21 und Benutzer sowie Passwort ist das vom erstellten Kunden in Froxlor.

Hast du dich verbunden, ist das Einzige was du siehst, eine index.html und einen Ordner namens webalizer. Diesen kannst du ignorieren, dort werden Statistiken gespeichert. Wenn du jetzt deine Domain im Browser aufrufst, siehst du immer den Inhalt der index.html.

Screenshot
SSL für Webseiten aktivieren

Mit Let's Encrypt kannst du kostenlos ein SSL-Zertifikat erstellen lassen, welches von Froxlor auch regelmäßig aktualisiert wird. Das bedeutet, deine Seite ist über https erreichbar.

Dazu musst du einmalig ein paar Einstellungen vornehmen. Melde dich in Froxlor als Admin an, gehe unter dem Menüpunkt System zu Einstellungen und ändere dort SSL-Einstellungen zu Ja. Oben jetzt noch Speichern Hier klicken um fortzufahren und jetzt auf Einstellungen rechts in der Zeile SSL-Einstellungen. Dort musst du jetzt den Haken bei Let's Encrypt verwenden setzen und bei Wähle Let's Encrypt ACME Implementierung auf ACME v2 wechseln. Jetzt noch Speichern.

Anschließend im Menü links wieder zu Konfiguration die Distribution wählen Webserver Apache 2.4 und jetzt die unteren 2 Befehle noch ausführen in Putty. Beim Ersten musst du wieder den Inhalt einfügen und mit dem letzten startest du Apache neu.

In PuTTY geht es jetzt auch weiter, und zwar musst du ein Zertifikat für Apache einrichten:

openssl req -new -days 3650 -newkey rsa:4096bits -sha512 -x509 -nodes -out server.crt -keyout server.key

Die Eingaben hier sind im Grunde egal, es schadet aber nicht, halbwegs richtige Angaben zu machen.

Screenshot

Jetzt müssen die erstellten Zertifikate noch an den richtigen Ort kopiert und anschließend Apache erneut neu gestartet werden:

cp server.crt /etc/apache2/apache2.pem

cp server.key /etc/apache2/apache2.key

sudo a2enmod ssl

sudo service apache2 restart

Zurück in Froxlor musst du jetzt zu IPs und Ports IP/Port hinzufügen und die Server-IP deines Servers und den Port 443 eintragen. Entferne den Haken bei Erstelle Listen-Eintrag und setze den Haken bei Ist dies ein SSL-Port?. Klicke auf Speichern.

Screenshot

Um die SSL-Mod von Apache zu aktivieren verwendest du noch folgenden Befehl und startest Apache dann nochmal neu:

sudo a2enmod ssl

systemctl restart apache2

Jetzt noch den Cronjob für Froxlor erzwingen, indem du diesen Befehl in PuTTY eingibst:

/usr/bin/php -q /var/www/froxlor/scripts/froxlor_master_cronjob.php --force

Das war die Einrichtung für die SSL-Zertifikate. Jetzt musst du nur noch für die jeweiligen Webseite(n) das Zertifikat aktivieren. Gehe dazu zum Menü Domains und bearbeite die jeweilige Domain mit einem Klick auf den Stift. Das Dropdown-Menü bei ServerAlias-Angabe für Domain musst du zu www (www.domain.tld) ändern. Jetzt noch die Haken bei SSL-IP-Adresse(n), SSL-Weiterleitung und SSL Zertifikat erstellen setzen und abschließend auf Speichern klicken.

Screenshot

Jetzt heißt es warten, bis Froxlor mit den Cronjobs durch ist. In spätestens 20 Minuten ist das Zertifikat für die Website erstellt und kann verwendet werden. Bei einem Besuch auf die Website wird immer automatisch zu https weitergeleitet.

Screenshot
Verschlüsselte FTP-Verbindung (FTPS) in ProFTPD einrichten

Beim Login per FTP werden die Zugangsdaten samt Passwort derzeit noch unverschlüsselt übertragen und können von Dritten ausgelesen werden. Daher sollte man diese Verbindung unbedingt verschlüsseln.

Erstelle vorher ein Backup der Konfigurationsdatei von ProFTPD und passe diese anschließend an:

cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf_orig

nano /etc/proftpd/proftpd.conf

Füge an eine beliebige Stelle folgende Zeile an um ProFTPD mitzuteilen, die folgende TLS-Config zu verwenden:

Include /etc/proftpd/tls.conf

Auch diese Config wird zur Sicherheit einmal als Kopie gespeichert:

cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf_orig

Leere die Config und editiere sie:

cat /dev/null > /etc/proftpd/tls.conf

nano /etc/proftpd/tls.conf

Füge folgenden Inhalt ein. Soll eine verschlüsselte Verbindung erzwungen werden, änderst du den Wert bei TLSRequired zu on. Soll eine Verbindung mit und auch ohne Verschlüsselung erlaubt sein, bleibt er bei off:

<IfModule mod_tls.c>
TLSEngine                  on
TLSTimeoutHandshake        60
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23
TLSOptions                 NoCertRequest
TLSRSACertificateFile      /etc/ssl/certs/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/ssl/certs/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                off
</IfModule>

Jetzt wird mit OpenSSL ein Zertifikat erstellt. Dieses wird 10 Jahre gültig sein, mehr als genug sicherlich.

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/proftpd.cert.pem -keyout /etc/ssl/certs/proftpd.key.pem

Jetzt werden noch die Berechtigungen gesetzt und ProFTPD einmal neu gestartet:

chmod 0440 /etc/proftpd/ssl/proftpd.key.pem

service proftpd restart

Nun kann über WinSCP eine explizite Verschlüsselte Verbindung aufgebaut werden. Ohne Verschlüsselung wird die Verbindung abgelehnt. Daher musst du in WinSCP im Punkt Verschlüsselung die Einstellung TLS/SSL Explizite Verschlüsselung auswählen. Bei der ersten Verbindung muss angegeben, dass dem selbst erstellen Zertifikat vertraut wird.

Das war es dann auch "schon". Das Wichtigste sollte hier erklärt worden sein. Bei Fragen oder Probleme kann dir auf meinem Discord weitergeholfen werden. Noch ein Hinweis in eigener Sache für deinen Server: Achte darauf, dass du deinen Server regelmäßig aktualisierst und auf dem aktuellsten Stand hältst, gerade in Hinblick auf die Sicherheit. Ein paar Male im Monat ist hier ausreichend.


War dieser Artikel hilfreich?

1
EurenikZ

EurenikZ

Ich bin Janis, 21 Jahre jung und komme aus Frankfurt am Main. Aktuell mache ich eine Ausbildung zum Fachinformatiker für Systemintegration. Neben meinem vServer beschäftige ich mich viel mit Coden und meinen Webseiten. Zocken ist ebenfalls eine meiner Leidenschaften, mein Lieblings-Genre ist Battle Royale und Survival.

Zuletzt aktualisiert

08.03.2020