Ich habe mir bei einem Anbieter einen neuen Server gemietet und gerade die Zugangsdaten erhalten. Dies bietet die Gelegenheit, eine grundlegende Konfiguration für einen Ubuntu-Server (hier 20.04) zu beschreiben. Wer übrigens an einem Windows-PC ohne Fernrohr oder Lupe auf seinen Server zugreifen will, dem sei Mobaxterm empfohlen und nicht Putty. Ich habe die IP-Adresse 123.45.678.999 erhalten dazu den Benutzernamen „root“ und ein Passwort. Ich wähle mich mit Hilfe von Mobaxterm zum ersten Mal auf meinen Server ein:
ssh root@123.45.678.999
und gebe das Passwort ein. Aus Sicherheitsgrüden werde ich als erstes den root-Zugang blockieren, lege aber zuvor eine sudo-User an, unter dem ich mich in Zukunft anmelden werde:
adduser neuernutzername
Anschließend werde ich aufgefordert, ein Passwort zu vergeben und bestätige den Rest mit Enter. Nun muss der neue User noch der Gruppe sudo hinzugefügt werden:
usermod -a -G sudo <username>
Dann logge ich mich mit „exit“ wieder aus und wähle mich per ssh mit dem neuen Usernamen und neuem Passwort wieder auf meine Server ein:
ssh neuernutzername@123.45.678.999
Jetzt soll der Root Account deaktiviert werden:
sudo passwd -d root
Sollte ich den root-Zugriff wieder einmal benötigen, stelle ich ihn mit folgendem Befehl schnell wieder her, indem ich ein root-Passwort vergebe:
sudo passwd
Vim installieren
Vim als Editor ist in meinem Paket schon vorinstalliert, ansonsten könnte ich Vim mit
sudo apt-get install vim
installieren. Ich bringe den Server softwareseitig auf den neusten Stand:
sudo apt-get update && sudo apt-get dist-upgrade
Eine Firewall einrichten
Ubuntu besitzt mit UFW (uncomplicated firewall) eine Firewall, mit der wir die Verbindung nur zu bestimmten Diensten zulassen können. Anwendungen können ihre Profile bei der Installation bei UFW registrieren. OpenSSH hat dies bereits getan, wie wir an folgendem Befehl erkennen können:
sudo ufw app list
Als Ausgabe erscheint:
Available applications: OpenSSH
Ich muss sicherstellen, dass UFW eine ssh-Verbinung zulässt, wenn die Firewall aktiv ist. So schreibe ich:
sudo ufw allow OpenSSH
Anschließend kann die Firewall aktiviert werden:
sudo ufw enable
Ich gebe „y“ ein und lasse mir bestätigen, dass die ssh-Verbindung weiterhin erlaubt ist:
sudo ufw status
Wenn einem ein Fehler unterläuft, kann man mit
sudo ufw reset
alles wieder auf die Werkseinstellungen zurücksetzen. Mit
sudo ufw status verbose
lässt man sich einen detaillierten Statusbericht ausgeben. Ich komme gleich wieder auf UFW zurück, wenn der Webserver installiert wurde.
Apache installieren
Apache 2 wird einfach installiert mit:
sudo apt install apache2
Ich gebe ein
sudo ufw app list
und erkenne, dass sich Apache bei UFW angemeldet hat. Damit http- und https-Verbundungen von UFW zugelassen werden. benötige ich folgenden Befehl:
sudo ufw allow in "Apache Full"
Alternativen zu diesem Befehl sind:
- sudo ufw allow http
- sudo ufw allow 80
- sudo ufw allow https
- sudo ufw allow 443
- sudo ufw allow proto tcp from any to any port 80,443
Wenn ich jetzt meine IP-Adresse 123.45.678.999 in den Browser eingebe, erkenne ich an der „Apache2 Ubuntu Default Page“, dass Apache 2 korrekt arbeitet und UFW die Anfrage durchlässt.
MySQL installieren
MySQL wird installiert mit:
sudo apt install mysql-server
Ich konfiguriere MySQL mit:
sudo mysql_secure_installation
Ich wähle die Password-Validierung und gebe ein entsprechendes Passwort zweimal ein. Die anschließenden Abfragen überspringe ich mit der Enter-Taste. Um die Benutzerauthentifizierung zu aktivieren wähle ich mich bei MySQL ein:
sudo mysql
Ich gebe ein
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Damit der der Server die Berechtigungstabellen neu schreibt gebe ich ein:
flush privileges;
(Semicolons nicht vergessen!) Ich beende die Session mit
exit
In Zukunft wähle ich mich bei MySQL ein mit:
mysql -u root -p
und gebe mein Passwort ein. MySQL gebe ich in UFW frei mit
sudo ufw allow mysql
PHP installieren
Unter Ubuntu 20.04 hat sich die Insatllation von PHP vereinfacht. Ich gebe nur noch ein
sudo apt install php7.4
und schon ist PHP installiert. Darüber hinaus sollte noch das Modul libapache2-mod-php für die Anbindung an Apache installiert werden:
sudo apt install php libapache2-mod-php
und Apache neu gestartet werden:
sudo systemctl restart apache2
Mit
sudo systemctl status apache2
überprüfe ich den Status von Apache.
Auch folgende php-Programme könnten bald notwendig sein:
sudo apt-get install php7.4-mbstring sudo apt-get install php7.4-xml sudo apt-get install php7.4-mysql sudo apt-get install php7.4-gd sudo apt-get install php7.4-zip
Nice to have
Ich arbeite gerne mit dem Midnight Commander, den ich mir mit
sudo apt install mc
installiere. Gestartet wird der Midnight Commander mit
sudo mc
Ebenso gehört tmux zu meinen Lieblingswerkzeugen, mit dem ich mehrere Terminal-Fenster gleichzeitig verwalten kann. Installiert wird tmux mit
sudo apt install tmux
Gestartet wird tmux mit optimierter Farbdarstellung:
sudo tmux -2
Weitere Infos zu tmux gibt es zum Beispiel hier: https://wiki.ubuntuusers.de/tmux/
Domain umleiten
Ich habe mir die Domain mydomain.de besorgt. Auf meinem Server mit der IP-Adresse 123.45.678.999 will ich mir eine Webseite für die Domain mydomain.de einrichten. Dazu muss meine Domain mydomain.de die IP-Adresse 123.45.678.999 aufrufen. Dazu wähle ich mich bei meinem Domainanbieter ein, suche einen Eintrag, der „Domainverwaltung“ lautet (oder so ähnlich, was je nach Anbieter verschieden sein kann), öffne die DNS-Einstellungen und trage dort unter den A-Records meine IP-Adresse 123.45.678.999 ein.
A-Records überprüfen
Um zu überprüfen, ob der neue Eintrag unter den A-Records auch auf die gewünschte IP zeigt und dorthin weitergeleitet wird, lege ich unter var/www ein Verzeichniss an, das ich wie meine zukünftige Webseite benenne:
sudo mkdir mydomain
In das Verzeichnis lege ich eine Datei mit dem Namen index.html an:
sudo touch index.html
Dem Verzeichnisnamen entsprechend erhält die Index-Datei zum Beispiel folgenden Inhalt:
<html> <head> <title>mydomain</title> </head> <body> <h1>This is mydomain. Es klappt!</h1> </body> </html>
Die Rechte des Verzeichnisses werden an den Apache-User www-data übergeben, damit Apache auf die Verzeichnisse zugreifen kann:
sudo chown -R www-data:www-data /var/www/mydomain
Ich wechsele in das Verzeichnis /etc/apache2/sites-available. Hier lege eine neue Config-Datei an:
sudo touch mydomain.conf
Die Datei erhält folgenden Inhalt:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName mydomain.de ServerAlias *.mydomain.de DocumentRoot /var/www/mydomain ErrorLog ${APACHE_LOG_DIR}/mydomain-error.log CustomLog ${APACHE_LOG_DIR}/mydomain-access.log combined </VirtualHost>
Anschließend muss die Conf-Dateien noch aktiviert werden:
sudo a2ensite mydomain.conf
Darüber hinaus ist ein
sudo service apache2 reload
nötig, damit Apache die neue Konfiguration einliest.
Im Verzeichnis /etc/apache2/sites-enabled kann man sich davon überzeugen, dass Simlinks zu den neuen Conf-Dateien gelegt wurden. Ich rufe im Browser meine Domain mydomain.de auf, und der Text wird angezeigt, den ich oben in die index.html hineingeschrieben habe. Nun kann ich damit beginnen, meine Webseite im Verzeichnis /var/www/mydomain anzulegen.
Bemerkungen :