Projekt: Einfacher Server mit Linux einrichten: Unterschied zwischen den Versionen

Aus Datenschutz
Zur Navigation springen Zur Suche springen
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
 
* eine einfache Website ausliefern
 
* eine einfache Website ausliefern
 
* die von einem Programm generiert wird
 
* 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.
 
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.
 
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 =
+
 
 +
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 ==
 
== Hardware: erstmal keine ==
 
* Wir nutzen ein Programm, das einen anderen Computer simuliert (virtuelle Maschine, Oracle VirtualBox).
 
* Wir nutzen ein Programm, das einen anderen Computer simuliert (virtuelle Maschine, Oracle VirtualBox).
Zeile 20: Zeile 25:
 
* Zunächst sollten wir [https://www.virtualbox.org/wiki/Downloads VirtualBox herunterladen] und installieren.
 
* Zunächst sollten wir [https://www.virtualbox.org/wiki/Downloads VirtualBox herunterladen] und installieren.
 
* Dann sollten wir Ubuntu Server herunterladen.
 
* Dann sollten wir Ubuntu Server herunterladen.
* Anschließend erzeugen wir eine virtuelle Maschine und verbinden die Ubuntu-Datei (Image) als optisches Laufwerk
+
* Anschließend erzeugen wir eine virtuelle Maschine
 
** Benutzername und -kennwort festlegen und unbedingt '''merken oder aufschreiben'''.
 
** Benutzername und -kennwort festlegen und unbedingt '''merken oder aufschreiben'''.
== Wir richten einen Webserver ein ==
+
** Es reichen 2 GB RAM
* Apache ist bewährt und schnell und wird mit Ubuntu automatisch aktualisiert.
+
** Das heruntergeladene Image von Ubuntu wird als optisches Laufwerk eingebunden.
** <pre>sudo apt install apache2</pre>
 
* Wir schalten fast_cgi frei.
 
* Wir legen den Namen des Servers fest und testen alles.
 
  
== Weitere Software wird installiert ==
+
== Nach dem Start: Weitere Software wird installiert ==
 
* Wir brauchen ''net-tools'', ''lynx'', ''nano'' und ''openssh-server''.
 
* Wir brauchen ''net-tools'', ''lynx'', ''nano'' und ''openssh-server''.
 
** <pre>sudo apt install net-tools lynx nano openssh-server -y</pre>
 
** <pre>sudo apt install net-tools lynx nano openssh-server -y</pre>
* Unsere Programmiersprache wird installiert: hier FreePascal (könnte auch C/C++ sein).
+
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.
** <pre>sudo apt install fpc</pre>
+
* Dateitools: ''Midnight Commander'', ''ytree'' oder Handarbeit.
* ''Midnight Commander'', ''ytree'' oder Handarbeit.
 
 
** <pre>sudo apt install mc ytree -y</pre>
 
** <pre>sudo apt install mc ytree -y</pre>
  
Zeile 40: Zeile 41:
 
* 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 ==
 +
Bevor wir beginnen, sollten wir sicherstellen, dass das System aktuell ist:
 +
<pre>sudo apt update && sudo apt upgrade -y</pre>
 +
== Apache-Webserver installieren ==
 +
Apache ist der Webserver, der CGI-Skripte ausführen wird:
 +
<pre>sudo apt install apache2 -y</pre>
 +
== CGI-Modul aktivieren ==
 +
Damit Apache CGI-Skripte ausführen kann, muss das cgi-Modul aktiviert werden:
 +
<pre>sudo a2enmod cgi</pre>
 +
== Apache neu starten ==
 +
Damit die Änderungen wirksam werden, muss Apache neu gestartet werden:
 +
<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:
 +
<pre>sudo mkdir -p /usr/lib/cgi-bin</pre>
 +
<pre>sudo chmod 755 /usr/lib/cgi-bin</pre>
 +
== FreePascal installieren ==
 +
Falls FreePascal nicht installiert ist, holen wir es nach:
 +
<pre>sudo apt install fpc -y</pre>
 +
== Test-CGI-Programm in FreePascal erstellen ==
 +
Erstelle eine neue Datei für das Pascal-Programm:
 +
<pre>sudo nano /usr/lib/cgi-bin/hello.pas</pre>
 +
Füge folgenden Code ein:
 +
<pre>
 +
program HelloCGI;
 +
begin
 +
  writeln('Content-type: text/html');
 +
  writeln;
 +
  writeln('<html><body><h1>Hello, CGI World!</h1></body></html>');
 +
end.
 +
</pre>
 +
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):
 +
<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.
 +
Setze die erforderlichen Rechte:
 +
<pre>sudo chmod +x /usr/lib/cgi-bin/hello.cgi</pre>
 +
 +
== Apache für CGI konfigurieren ==
 +
Öffne die Apache-Konfigurationsdatei:
 +
<pre>sudo nano /etc/apache2/sites-available/000-default.conf</pre>
 +
Füge innerhalb von <VirtualHost *:80> folgende Zeilen hinzu:
 +
<pre>
 +
<Directory "/usr/lib/cgi-bin">
 +
    Options +ExecCGI
 +
    AddHandler cgi-script .cgi .pl
 +
    Require all granted
 +
</Directory>
 +
</pre>
 +
Speichern und schließen (STRG + X, Y, ENTER).
 +
Anschließend Apache neu starten:
 +
<pre>sudo systemctl restart apache2</pre>
 +
== CGI-Skript im Browser testen ==
 +
Rufe die folgende URL im Browser auf:
 +
<pre>http://localhost/cgi-bin/hello.cgi</pre>
 +
Falls Ubuntu als Server verwendet wird, ersetze localhost durch die Server-IP.

Aktuelle Version vom 20. März 2025, 14:16 Uhr

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.