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.

Inhaltsverzeichnis

Du benötigst...

vServer mit mindestens 10 GB Speicher, einem CPU-Kern und 2 GB RAM.
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. 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.

Kategorie: Server

Tags: , ,

0 Kommentare

3.088 Aufrufe

Ü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.

3288 Aufrufe

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten.

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen. Sei der Erste, der diesen Beitrag bewertet!

Es tut mir Leid, dass der Beitrag für dich nicht hilfreich war!

Wie kann ich diesen Beitrag verbessern?

Hinterlasse einen Kommentar

  • Manchmal ist es notwendig, sich in die Shell eines Docker-Containers zu schalten, um dort beispielsweise weitere Konfigurationen vornehmen zu können. Wie du dich in eine Container-Shell einloggst, zeige ich dir in diesem Beitrag. Begib dich zunächst in das Verzeichnis, in[...]

    12.03.2024 18:37

    40
  • Mithilfe eines Swap-Speichers lagert man temporäre Daten in eine Auslagerungsdatei aus, anstatt in den RAM zu schreiben. Das ist vor allem dann sinnvoll, wenn wenig Arbeitsspeicher zur Verfügung steht und man Abstürze wegen zu wenig Arbeitsspeicher umgehen möchte. Was ist[...]

    01.01.2024 10:00

    148
  • Beim Löschen von Dateien in Nextcloud landen diese im Papierkorb und bleiben dort, bis dieser manuell geleert wird. Möchte man Dateien im Papierkorb automatisch nach einer bestimmten Zeit löschen lassen, muss die Konfiguration entsprechend angepasst werden. Die Papierkorb-Funktion ist[...]

    10.12.2023 20:57

    90
  • Manchmal ist es notwendig, sich in die Shell eines Docker-Containers zu schalten, um dort beispielsweise weitere Konfigurationen vornehmen zu können. Wie du dich in eine Container-Shell einloggst, zeige ich dir in diesem Beitrag. Begib dich zunächst in das Verzeichnis, in[...]

    12.03.2024 18:37

    40
  • Mithilfe eines Swap-Speichers lagert man temporäre Daten in eine Auslagerungsdatei aus, anstatt in den RAM zu schreiben. Das ist vor allem dann sinnvoll, wenn wenig Arbeitsspeicher zur Verfügung steht und man Abstürze wegen zu wenig Arbeitsspeicher umgehen möchte. Was ist[...]

    01.01.2024 10:00

    148