Projekt: Einfacher Server mit Linux einrichten: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 40: | Zeile 40: | ||
* Die fertigen Programme liegen in '''/usr/lib/cgi-bin'''. | * Die fertigen Programme liegen in '''/usr/lib/cgi-bin'''. | ||
* Die Website liegt in '''/var/www/html'''. | * Die Website liegt in '''/var/www/html'''. | ||
− | + | = Praxis = | |
== Ubuntu aktualisieren == | == Ubuntu aktualisieren == | ||
Bevor wir beginnen, sollten wir sicherstellen, dass das System aktuell ist: | Bevor wir beginnen, sollten wir sicherstellen, dass das System aktuell ist: | ||
<pre>sudo apt update && sudo apt upgrade -y</pre> | <pre>sudo apt update && sudo apt upgrade -y</pre> | ||
− | + | == Apache-Webserver installieren == | |
− | |||
Apache ist der Webserver, der CGI-Skripte ausführen wird: | Apache ist der Webserver, der CGI-Skripte ausführen wird: | ||
<pre>sudo apt install apache2 -y</pre> | <pre>sudo apt install apache2 -y</pre> | ||
− | + | == CGI-Modul aktivieren == | |
− | |||
Damit Apache CGI-Skripte ausführen kann, muss das cgi-Modul aktiviert werden: | Damit Apache CGI-Skripte ausführen kann, muss das cgi-Modul aktiviert werden: | ||
<pre>sudo a2enmod cgi</pre> | <pre>sudo a2enmod cgi</pre> | ||
− | + | == Apache neu starten == | |
− | |||
Damit die Änderungen wirksam werden, muss Apache neu gestartet werden: | Damit die Änderungen wirksam werden, muss Apache neu gestartet werden: | ||
<pre>sudo systemctl restart apache2</pre> | <pre>sudo systemctl restart apache2</pre> | ||
− | + | == CGI-Verzeichnis erstellen == | |
− | |||
Standardmäßig verwendet Ubuntu das Verzeichnis /usr/lib/cgi-bin/ für CGI-Skripte. Falls es nicht existiert, erstellen wir es: | 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 | + | <pre>sudo mkdir -p /usr/lib/cgi-bin</pre> |
− | sudo chmod 755 /usr/lib/cgi-bin | + | <pre>sudo chmod 755 /usr/lib/cgi-bin</pre> |
− | + | == FreePascal installieren == | |
− | |||
Falls FreePascal nicht installiert ist, holen wir es nach: | Falls FreePascal nicht installiert ist, holen wir es nach: | ||
− | sudo apt install fpc -y | + | <pre>sudo apt install fpc -y</pre> |
− | + | == Test-CGI-Programm in FreePascal erstellen == | |
− | |||
Erstelle eine neue Datei für das Pascal-Programm: | Erstelle eine neue Datei für das Pascal-Programm: | ||
− | sudo nano /usr/lib/cgi-bin/hello.pas | + | <pre>sudo nano /usr/lib/cgi-bin/hello.pas</pre> |
Füge folgenden Code ein: | Füge folgenden Code ein: | ||
+ | <pre> | ||
program HelloCGI; | program HelloCGI; | ||
begin | begin | ||
Zeile 76: | Zeile 71: | ||
writeln('<html><body><h1>Hello, CGI World!</h1></body></html>'); | writeln('<html><body><h1>Hello, CGI World!</h1></body></html>'); | ||
end. | end. | ||
+ | </pre> | ||
Speichern mit STRG + X, dann Y und ENTER. | Speichern mit STRG + X, dann Y und ENTER. | ||
− | + | == Programm kompilieren und ausführen == | |
− | |||
Kompiliere das Programm mit FreePascal: | Kompiliere das Programm mit FreePascal: | ||
− | fpc -O2 -o/usr/lib/cgi-bin/hello.cgi /usr/lib/cgi-bin/hello.pas | + | <pre>fpc -O2 -o/usr/lib/cgi-bin/hello.cgi /usr/lib/cgi-bin/hello.pas</pre> |
Nun existiert das ausführbare CGI-Programm als hello.cgi. | Nun existiert das ausführbare CGI-Programm als hello.cgi. | ||
Setze die erforderlichen Rechte: | Setze die erforderlichen Rechte: | ||
− | sudo chmod +x /usr/lib/cgi-bin/hello.cgi | + | <pre>sudo chmod +x /usr/lib/cgi-bin/hello.cgi</pre> |
− | + | == Apache für CGI konfigurieren == | |
− | |||
Öffne die Apache-Konfigurationsdatei: | Öffne die Apache-Konfigurationsdatei: | ||
− | sudo nano /etc/apache2/sites-available/000-default.conf | + | <pre>sudo nano /etc/apache2/sites-available/000-default.conf</pre> |
Füge innerhalb von <VirtualHost *:80> folgende Zeilen hinzu: | Füge innerhalb von <VirtualHost *:80> folgende Zeilen hinzu: | ||
+ | <pre> | ||
<Directory "/usr/lib/cgi-bin"> | <Directory "/usr/lib/cgi-bin"> | ||
Options +ExecCGI | Options +ExecCGI | ||
Zeile 94: | Zeile 89: | ||
Require all granted | Require all granted | ||
</Directory> | </Directory> | ||
+ | </pre> | ||
Speichern und schließen (STRG + X, Y, ENTER). | Speichern und schließen (STRG + X, Y, ENTER). | ||
Anschließend Apache neu starten: | Anschließend Apache neu starten: | ||
− | sudo systemctl restart apache2 | + | <pre>sudo systemctl restart apache2</pre> |
− | + | == CGI-Skript im Browser testen == | |
− | |||
Rufe die folgende URL im Browser auf: | Rufe die folgende URL im Browser auf: | ||
− | http://localhost/cgi-bin/hello.cgi | + | <pre>http://localhost/cgi-bin/hello.cgi</pre> |
Falls Ubuntu als Server verwendet wird, ersetze localhost durch die Server-IP. | Falls Ubuntu als Server verwendet wird, ersetze localhost durch die Server-IP. | ||
− |
Version vom 20. März 2025, 13:50 Uhr
Inhaltsverzeichnis
- 1 Sinn und Zweck dieses Projekts
- 2 Vorgehensweise
- 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.
Vorgehensweise
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 und verbinden die Ubuntu-Datei (Image) als optisches Laufwerk
- Benutzername und -kennwort festlegen und unbedingt merken oder aufschreiben.
Wir richten einen Webserver ein
- Apache ist bewährt und schnell und wird mit Ubuntu automatisch aktualisiert.
sudo apt install apache2
- Wir schalten fast_cgi frei.
- Wir legen den Namen des Servers fest und testen alles.
Weitere Software wird installiert
- Wir brauchen net-tools, lynx, nano und openssh-server.
sudo apt install net-tools lynx nano openssh-server -y
- Unsere Programmiersprache wird installiert: hier FreePascal (könnte auch C/C++ sein).
sudo apt install fpc
- 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.
Programm kompilieren und ausführen
Kompiliere das Programm mit FreePascal:
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.