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 8, 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.
Du benötigst...
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. Endungen wie .xyz wirken nicht seriös und sind eher abschreckend. Außerdem werden E-Mails von diesen Domains eher als Spam eingestuft, sofern E-Mails über die Domain verschickt werden sollen.
Hast du eine Domain besorgt, musst du beim Anbieter die DNS-Einstellungen vornehmen. Wichtig sind hier vor allem erst einmal diese:
A Domain.tld IP-Adresse des Servers CNAME * Domain.tld
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.
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.
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 8 und MySQL-Server
Nun wird Apache2 als Webserver installiert.
apt-get -y install apache2
Jetzt wird PHP 8 mit einigen dazugehörigen PHP-Modulen installiert.
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update
apt-get install php8.0 php8.0-cli php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml php8.0-xsl php8.0-zip php8.0-bcmath php8.0-bz2 php-apcu php-imap libapache2-mod-php8.0 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.
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.
Nenne 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
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.
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.
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.
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. Nicht wundern, es wird zu einem Fehler kommen. Dieser wird jetzt behoben.
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. Sie werden bei der ersten Verbindung auf den Server angezeigt.
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.
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
Warte jetzt einige Minuten, bevor du folgenden Befehl für den Cronjob für Froxlor in PuTTY absetzt:
/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.
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.
Fail2ban für ProFTPD konfigurieren
Das war es dann auch "schon". Das Wichtigste sollte hier erklärt worden sein. Bei Fragen oder Probleme kann jederzeit die Kommentar-Funktion verwenden.
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 Mal im Monat ist hier ausreichend.
Bei Fragen oder Anregungen freue ich mich natürlich über eure Kommentare.
Über mich
Ich bin Janis (aka. EurenikZ), 25 Jahre alt und komme aus der Nähe von Frankfurt am Main. Ich habe eine abgeschlossene IHK-Ausbildung zum Fachinformatiker für Systemintegration und arbeite als Junior IT-Administrator in einem IT-Systemhaus. Neben meinem IT-Blog beschäftige ich mich viel mit diversen IT-Themen und meinen Webseiten sowie Telegram Bots und biete IT-Dienstleistungen an.