Projekt: Einfacher Server mit Linux einrichten
Inhaltsverzeichnis
- 1 Sinn und Zweck dieses Projekts
- 2 Planung
- 3 Praxis
- 3.1 Ubuntu aktualisieren
- 3.2 Apache-Webserver installieren
- 3.3 CGI-Modul aktivieren
- 3.4 Apache neu starten
- 3.5 CGI-Verzeichnis erstellen
- 3.6 FreePascal installieren
- 3.7 Test-CGI-Programm in FreePascal erstellen
- 3.8 Programm kompilieren und ausführen
- 3.9 Apache für CGI konfigurieren
- 3.10 CGI-Skript im Browser testen
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.