FASTCGI: Unterschied zwischen den Versionen
// via Wikitext Extension for VSCode |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 56: | Zeile 56: | ||
[Service] | [Service] | ||
ExecStart=/usr/bin/spawn-fcgi -s /var/run/thomas.socket -U www-data -G www-data -n /home/thorsten/thorsten/build/thorsten | 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 | Restart=always | ||
RestartSec=5 | RestartSec=5 | ||
| Zeile 84: | 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/ | 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: | ||
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).