FASTCGI: Unterschied zwischen den Versionen
// 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) { | ||
while (FCGI_Accept() >= 0) { | |||
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).