FASTCGI: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
 
// via Wikitext Extension for VSCode
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;
}
}

Version vom 14. Januar 2025, 05:17 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]
WorkingDirectory=/home/thorsten/kurs/build
ExecStart=/usr/bin/spawn-fcgi -f start -s /var/run/steffi.socket
User=thorsten
Group=thorsten
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

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 nano /etc/nginx/cron.d/thomas.con

Füge folgenden Inhalt hinzu:

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

Aktiviere die Konfiguration:

sudo ln -s /etc/nginx/sites-available/thomas /etc/nginx/sites-enabled/

Starte Nginx neu:

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).