Virtueller Webserver auf Debian-Basis

7. Oktober 2021 · Anwendungen · andreas · Kein Kommentar

Als Test- und Entwicklungssystem für Websites bietet sich ein virtueller Server auf der Basis von LAMP an: Linux, Apache, MariaDB und PHP (Perl, Python, …). So bleibt der Server mit all seinen Komponenten vom eigentlichen Arbeitssystem getrennt, kann einzeln gesichert und ggf. auch wiederhergestellt werden und Dank Snapshots kann man eventuell fehlschlagenden Experimenten deutlich entspannter entgegensehen.

Sofern das Betriebssystem bereits entsprechende Mechanismen mitbringt, sollte für die Virtualisierung auf Bordmittel zurückgegriffen werden - unter Linux zum Beispiel auf GNOME Boxes oder den Virtual Machine Manager, unter Windows 10 Professional oder Enterprise stattdessen auf Hyper-V. Ansonsten kann auch eine alternative Lösung wie VMware Workstation Player oder Oracle VirtualBox installiert werden.

Auf Details der Virtualisierungsumgebung wird hier nicht weiter eingegangen, diese können bei Bedarf in der jeweiligen Dokumentation nachgelesen werden.

Der Server wird absichtlich “offen” als internes System konfiguriert und sollte in dieser Konfiguration auf keinen Fall aus dem Internet erreichbar sein!

Konfiguration

Da der virtuelle Server nur sehr wenige Benutzer gleichzeitig bedienen soll, reicht eine spärliche Ausstattung: 2048MB RAM sind genug und sofern keine Experimente mit großen Dateien durchgeführt werden sollen, ist eine Festplattengröße von 16GB auch vollkommen ausreichend. Wer die Möglichkeit hat, sollte beim Anlegen die Option “Thin Provisioning” wählen, dann wird der Platz für die virtuelle Festplatte erst bei Bedarf belegt. Dies spart Platz auf dem Hostsystem und beschleunigt gelegentliche Sicherungen.

Grundinstallation Debian

Als Installationsmedium wird das “Netinst für 64-Bit-PC (AMD64)"-Image von der offiziellen Debian-Seite heruntergeladen. Dieses ist mit 377MB relativ klein und lädt nur die tatsächlich benötigten Pakete nach. Dieses Image wird in das virtuelle CD/DVD-Laufwerk des virtuellen Servers gelegt und die virtuelle Maschine anschließend gestartet.

Um alle Optionen konfigurieren zu können, wird die Installation im Experten-Modus durchgeführt und ist hier in Stichpunkten beschrieben. Selbstverständlich muß je nach Gegebenheiten der Virtualisierungslösung sowie des lokalen Netzwerks die ein oder andere Option angepasst werden.

Debian GNU/Linux installer menu

  • Advanced options

  • Expert install

Choose language

  • German

  • Deutschland

  • Deutschland - de_DE.UTF-8

  • keine zusätzlichen Gebietsschemata

Tastatur konfigurieren

  • Deutsch

Installationsmedium erkennen und einbinden

  • Weiter

Installer-Komponenten von Installationsmedium laden

  • keine zusätzlichen Komponenten auswählen

Netzwerk-Hardware erkennen

Netzwerk einrichten

  • Netzwerk automatisch einrichten

  • Wartezeit 3 Sekunden

  • Rechnername “sandbox” (oder ein beliebiger anderer Rechnername)

  • Domain leer lassen

Benutzer und Passwörter einrichten

  • Shadow-Passwörter benutzen

  • Root das Anmelden nicht erlauben

  • Vollständiger Name des neuen Benutzers “sandbox” (oder ein beliebiger anderer Benutzername)

  • Benutzername für Ihr Konto “sandbox”

  • Wählen Sie ein Passwort für den neuen Benutzer “geheim”

  • Bitte geben Sie das Passwort zur Bestätigung nochmals ein “geheim”

Uhr einstellen

  • Uhr mittels NTP einstellen

  • Zu verwendender NTP-Server “0.debian.pool.ntp.org”

  • Zeitzone “Europe/Berlin”

Festplatten erkennen

Fetsplatten partitionieren

  • Geführte Partitionierung

  • Geführt - vollständige Festplatte verwenden

  • Festplatte auswählen

  • “Alle Dateien auf eine Partition, für Anfänger empfohlen”

  • “Partitionierung beenden und Änderungen übernehmen”

  • Änderungen auf die Festplatten schreiben

Basissystem installieren

  • Zu installierender Kernel “linux-image-amd64”

  • nur für das System benötigte Treiber einbinden

Paketmanager konfigurieren

  • kein weiteres Installationsmedium einlesen

  • einen Netzwerkspiegel verwenden

  • Protokoll für Datei-Downloads “http”

  • “Deutschland”

  • “deb.debian.org”

  • keinen Proxy

  • “Non-free”-Software verwenden

  • Paketdepots für Quellpakete in APT aktivieren

  • Zu verwendete Dienste: alle anwählen

Software auswählen und installieren

  • Sicherheits-Updates automatisch installieren

  • nicht an der Paketverwendungserfassung teilnehmen

  • nur “SSH server” und “Standard-Systemwerkzeuge” installieren

Den GRUB-Bootloader installieren

  • GRUB-Bootloader auf dem primären Laufwerk installieren

  • Laufwerk “/dev/sda”

  • keine Installation in den EFI-Wechseldatenträgerpfad erzwingen

Installaion abschließen

  • Die Systemzeit ist auf UTC gesetzt

  • Neustart

Das Grundsystem ist fertig installiert und der Anmeldeprompt erscheint:

Installation zusätzlicher Pakete

Nach Anmeldung entweder direkt an der Konsole oder über SSH werden die für den Serverbetrieb notwendigen Pakete installiert:

$ sudo apt install apache2 mariadb-server php php-curl php-gd

Anschließend sollte im Browser durch Eingabe von http://sandbox oder der IP-Adresse die “Apache2 Debian Default Page” zu sehen sein.

Adminer

Zur einfacheren Datenbankverwaltung wird zurück an die Konsole gewechselt und Adminer installiert:

$ sudo apt install adminer
$ sudo a2enconf adminer
$ sudo systemctl reload apache2

Anschließend sollte im Browser durch Eingabe von http://sandbox/adminer oder der IP mit angehängtem “/adminer” die “Adminer”-Oberfläche zu sehen sein.

Dateifreigabe einrichten

Zum einfacheren Bearbeiten der Dateien auf dem Webserver wird eine Freigabe eingerichtet, welche das Wurzelverzeichnis des Webservers für jedermann bearbeitbar zur Verfügung stellt. Zurück zur Konsole und folgende Schritte durchführen:

$ sudo apt install samba
$ cd /etc/samba/
$ sudo cp smb.conf smb.conf.dist

Den gesamten Inhalt der Datei löschen und mit folgendem ersetzen:

$ sudo nano smb.conf
[global]
workgroup = WORKGROUP
log file = /var/log/samba/log.%m
max log size = 1000
server role = standalone server
security = user
map to guest = Bad Password
[htdocs]
path = /var/www
writeable = yes
browsable = yes
guest ok = yes
force directory mode = 775
force group = www-data
force create mode = 664
force user = www-data

Anschließend müssen noch die Berechtigungen im Dateisystem angepasst werden, dann wird der Freigabedienst neu gestartet.

$ cd /var/
$ sudo chown -R www-data:www-data www
$ sudo systemctl restart smbd.service

Nach dem Neustart steht eine Freigabe mit dem Namen “htdocs” zur Verfügung, welche über “smb://sandbox/htdocs/” (Linux) oder “\sandbox\htdocs” (Windows) angesprochen werden kann.

Anpassung Webserver

Als letzter Schritt folgt noch eine Anpassung des Webservers. Zuerst werden einige zusätzliche Module aktiviert:

$ sudo a2enmod cgi rewrite

und anschließend der Inhalt der Datei “000-default.conf” mit folgendem Inhalt ersetzt

$ sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel error
        # CustomLog ${APACHE_LOG_DIR}/access.log combined
        CustomLog /dev/null combined
</VirtualHost>

Damit die Änderungen übernommen werden, muß der Webserver neu gestartet werden.

$ sudo systemctl restart apache2.service

Nun wird bei einem Aufruf des Servers im Browser nicht mehr die “Apache2 Debian Default Page” angezeigt, sondern die Auflistung des Verzeichnisses “/”, in dem ein Ordner “html” liegt - die gleiche Sicht, welche man beim Aufrufen der Freigabe im Dateimanager erhält.