FASTCGI: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
 
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 31: Zeile 31:
<pre>
<pre>
#include <fcgi_stdio.h>
#include <fcgi_stdio.h>
int main(void) {
int main(void) {
     FCGI_printf("Content-type: text/html\r\n\r\n");
     while (FCGI_Accept() >= 0) {
    FCGI_printf("<html><body><h1>Hallo Welt!</h1></body></html>");
        printf("Content-type: text/html\r\n\r\n");
        printf("<html><body><h1>Hallo Welt!</h1></body></html>");
    }
     return 0;
     return 0;
}
}
Zeile 52: Zeile 55:


[Service]
[Service]
WorkingDirectory=/home/thorsten/kurs/build
 
ExecStart=/usr/bin/spawn-fcgi -f start -s /var/run/steffi.socket
ExecStart=/usr/bin/spawn-fcgi -s /var/run/thorsten/thomas.socket -U www-data -G www-data  -n /home/thorsten/thorsten/build/thorsten
User=thorsten
Restart=always
Group=thorsten
Restart=on-failure
RestartSec=5
RestartSec=5


[Install]
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target
</pre>
</pre>
Dateiberechtigungen ändern und Verzeichnisse erstellen:
<pre>
sudo mkdir -p /home/thorsten/thorsten/build  # Verzeichnis für die FastCGI-Anwendung
sudo chown -R www-data:www-data /home/thorsten/thorsten/build # Berechtigungen setzen
sudo mkdir -p /var/run/thorsten # Verzeichnis für den Socket
sudo chown -R www-data:www-data /var/run/thorsten # Berechtigungen setzen
</pre>
Starte den Service:
Starte den Service:
<pre>
<pre>
Zeile 70: Zeile 84:
sudo systemctl enable thorsten
sudo systemctl enable thorsten
</pre>
</pre>


====nginx konfigurieren====
====nginx konfigurieren====
Erstelle eine Konfigurationsdateib in dem Verzeichnis /etc/nginx/sites-available/thomas.conf
Erstelle eine Konfigurationsdateib in dem Verzeichnis /etc/nginx/sites-available/thomas.conf
<pre>
<pre>
sudo nano /etc/nginx/cron.d/thomas.con
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/conf.d/thomas.conf
</pre>
</pre>
Füge folgenden Inhalt hinzu:
Füge folgenden Inhalt hinzu:
Zeile 85: Zeile 98:
     server_name test.localhost;
     server_name test.localhost;
     location / {
     location / {
           fastcgi_pass unix:/var/run/steffi.socket;
           fastcgi_pass unix:/var/run/thorsten/thomas.socket;
         include fastcgi_params;
         include fastcgi_params;
     }
     }
}
}
</pre>
</pre>
Aktiviere die Konfiguration:
 
<pre>
sudo ln -s /etc/nginx/sites-available/thomas /etc/nginx/sites-enabled/
</pre>
Starte Nginx neu:
<pre>
sudo systemctl restart nginx
sudo systemctl restart nginx
</pre>
</pre>

Aktuelle Version vom 14. Januar 2025, 19:49 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

FASTCGI

FastCGI ist ein Protokoll, das es ermöglicht, Webserver und Anwendungen zu entkoppeln. FastCGI-Anwendungen können in verschiedenen Programmiersprachen geschrieben werden, darunter auch C.

Nginx, FastCGI und C

Nginx ist ein Webserver, der sich durch seine hohe Performance auszeichnet. Er kann mit FastCGI kommunizieren, um dynamische Inhalte zu generieren.

FastCGI-Anwendung in C und spawn-fcgi

Um eine FastCGI-Anwendung in C zu schreiben, benötigen Sie eine FastCGI-Bibliothek wie `libfcgi`. Hier ist ein einfaches Beispiel für eine FastCGI-Anwendung in C. Spawn-fcgi ist ein kleines Programm, das FastCGI-Anwendungen startet und verwaltet.

FastCGI-Bibliothek, spawn-fcgi und nginx installieren

sudo apt-get install libfcgi-dev
sudo apt-get install spawn-fcgi
sudo apt-get install nginx

CMakelists.txt erstellen

cmake_minimum_required(VERSION 3.10)
project(demo)

set(CMAKE_C_STANDARD 16)

add_executable(demo main.c)

target_link_libraries(demo fcgi)

main.c erstellen

#include <fcgi_stdio.h>

int main(void) {
    while (FCGI_Accept() >= 0) {
        printf("Content-type: text/html\r\n\r\n");
        printf("<html><body><h1>Hallo Welt!</h1></body></html>");
    }
    return 0;
}


spawn-fcgi mit systemctl erstellen

Erstelle eine Datei in /etc/systemd/system/thorsten.service

sudo nano /etc/systemd/system/thorsten.service

Füge folgenden Inhalt hinzu:

[Unit]
Description=Spawn FastCGI Process
After=network.target

[Service]

ExecStart=/usr/bin/spawn-fcgi -s /var/run/thorsten/thomas.socket  -U www-data -G www-data   -n /home/thorsten/thorsten/build/thorsten
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target


Dateiberechtigungen ändern und Verzeichnisse erstellen:


sudo mkdir -p /home/thorsten/thorsten/build  # Verzeichnis für die FastCGI-Anwendung
sudo chown -R www-data:www-data /home/thorsten/thorsten/build # Berechtigungen setzen
sudo mkdir -p /var/run/thorsten # Verzeichnis für den Socket
sudo chown -R www-data:www-data /var/run/thorsten # Berechtigungen setzen

Starte den Service:

sudo systemctl start thorsten

Aktiviere den Service:

sudo systemctl enable thorsten

nginx konfigurieren

Erstelle eine Konfigurationsdateib in dem Verzeichnis /etc/nginx/sites-available/thomas.conf

sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/conf.d/thomas.conf

Füge folgenden Inhalt hinzu:

server {
    listen 80;
    server_name test.localhost;
    location / {
          fastcgi_pass unix:/var/run/thorsten/thomas.socket;
        include fastcgi_params;
    }
}

sudo systemctl restart nginx

Öffne deinen Browser und gebe die Adresse http://localhost ein. Du solltest die Ausgabe deiner FastCGI-Anwendung sehen.

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).