Projekt: Einfacher Server mit Linux einrichten

Aus Datenschutz
Zur Navigation springen Zur Suche springen

Sinn und Zweck dieses Projekts

Ich möchte hier protokollieren, wie man einen kleinen Server mit Linux einrichten kann. Ich hielt es. ehrlich gesagt, immer für kompliziert. Genau deshalb möchte ich seeeehr einfach anfangen und wirklich beim Simpelsten bleiben, was möglich ist. Der Server soll tatsächlich zunächst nur

  • über seine IP-Adresse erreichbar sein
  • eine einfache Website ausliefern
  • die von einem Programm generiert wird

Natürlich könnte ich auch einfach eine HTML-Seite anzeigen lassen, die statisch erzeugt wird. Aber das schränkt die Flexibilität des Servers ein. Ich möchte mich nämlich auch damit beschäftigen, wie man einfach Seiten generieren kann, die dann vielleicht in einer echten Anwendung münden. Also am Anfang lassen wir alles offen.

Weiterhin möchte ich moderne Sprachen wie PHP, Python, Javascript etc. nicht einsetzen. Das hat verschiedene Gründe und ist für den professionellen Bereich zunächst mal nicht zu empfehlen. Hier soll kein sicherer Anwendungsserver für ein Unternehmen entworfen werden. Mir reicht es zunächst, dass ich ein Programm über das heimische WLAN/LAN von nahezu jedem Gerät aus nutzen kann.

Später soll das Programm Daten aus einem HTML-Formular entgegen nehmen und einfach sequentiell abspeichern. Damit kann man schon eine Menge Daten erfassen: von allen Geräten aus, die den Server erreichen können.

Planung

Hardware: erstmal keine

  • Wir nutzen ein Programm, das einen anderen Computer simuliert (virtuelle Maschine, Oracle VirtualBox).
    • Dadurch können wir verschiedene Konfigurationen testen (Hauptspeicher? Prozessoren?).
    • Wir können vor großen Änderungen die gesamte Maschine einfach zur Sicherheit kopieren.
    • Wir können die Maschine einfach auf einen anderen physischen Computer verschieben.
  • Unser Betriebssystem soll UBUNTU SERVER, derzeit 24.04.2 LTS, ohne grafische Oberfläche sein.
    • UBUNTU ist offen und frei verfügbar.
    • UBUNTU ist gut in virtuelle Maschinen integrierbar.
    • UBUNTU hat kaum Ansprüche an die Hardware.
  • Später können wir einen alten, einfachen Computer nutzen.

Software: Einrichten der virtuellen Maschine

  • Zunächst sollten wir VirtualBox herunterladen und installieren.
  • Dann sollten wir Ubuntu Server herunterladen.
  • Anschließend erzeugen wir eine virtuelle Maschine
    • Benutzername und -kennwort festlegen und unbedingt merken oder aufschreiben.
    • Es reichen 2 GB RAM
    • Das heruntergeladene Image von Ubuntu wird als optisches Laufwerk eingebunden.

Nach dem Start: Weitere Software wird installiert

  • Wir brauchen net-tools, lynx, nano und openssh-server.
    • sudo apt install net-tools lynx nano openssh-server -y

net-tools bietet so etwas wie ifconfig, lynx ist ein einfacher Textbrowser, nano ein Texteditor und durch den OpenSSH-Server können wir uns auf den Rechner aufschalten und Dateien austauschen.

  • Dateitools: Midnight Commander, ytree oder Handarbeit.
    • sudo apt install mc ytree -y

Wichtige Ordner unter Ubuntu

  • Unser Arbeitsordner (Home) ist /home/%benutzername% (%benutzername% durch Ihren Benutzernamen ersetzen).
  • Die fertigen Programme liegen in /usr/lib/cgi-bin.
  • Die Website liegt in /var/www/html.

Praxis

Ubuntu aktualisieren

Bevor wir beginnen, sollten wir sicherstellen, dass das System aktuell ist:

sudo apt update && sudo apt upgrade -y

Apache-Webserver installieren

Apache ist der Webserver, der CGI-Skripte ausführen wird:

sudo apt install apache2 -y

CGI-Modul aktivieren

Damit Apache CGI-Skripte ausführen kann, muss das cgi-Modul aktiviert werden:

sudo a2enmod cgi

Apache neu starten

Damit die Änderungen wirksam werden, muss Apache neu gestartet werden:

sudo systemctl restart apache2

CGI-Verzeichnis erstellen

Standardmäßig verwendet Ubuntu das Verzeichnis /usr/lib/cgi-bin/ für CGI-Skripte. Falls es nicht existiert, erstellen wir es:

sudo mkdir -p /usr/lib/cgi-bin
sudo chmod 755 /usr/lib/cgi-bin

FreePascal installieren

Falls FreePascal nicht installiert ist, holen wir es nach:

sudo apt install fpc -y

Test-CGI-Programm in FreePascal erstellen

Erstelle eine neue Datei für das Pascal-Programm:

sudo nano /usr/lib/cgi-bin/hello.pas

Füge folgenden Code ein:

program HelloCGI;
begin
  writeln('Content-type: text/html');
  writeln;
  writeln('<html><body><h1>Hello, CGI World!</h1></body></html>');
end.

Speichern mit STRG + X, dann Y und ENTER.

Wir erkennen, dass das Programm alles ausgeben muss, was sonst in einer HTML-Datei stehen würde. Das ist schon alles.

Programm kompilieren und ausführen

Kompiliere das Programm mit FreePascal (man kann auch mit FP die IDE starten):

fpc -O2 -o/usr/lib/cgi-bin/hello.cgi /usr/lib/cgi-bin/hello.pas

Nun existiert das ausführbare CGI-Programm als hello.cgi. Setze die erforderlichen Rechte:

sudo chmod +x /usr/lib/cgi-bin/hello.cgi

Apache für CGI konfigurieren

Öffne die Apache-Konfigurationsdatei:

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

Füge innerhalb von <VirtualHost *:80> folgende Zeilen hinzu:

<Directory "/usr/lib/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>

Speichern und schließen (STRG + X, Y, ENTER). Anschließend Apache neu starten:

sudo systemctl restart apache2

CGI-Skript im Browser testen

Rufe die folgende URL im Browser auf:

http://localhost/cgi-bin/hello.cgi

Falls Ubuntu als Server verwendet wird, ersetze localhost durch die Server-IP.