Installieren Sie FCGIWRAP und Aktivieren von Perl-, Ruby- und Bash -Dynamic -Sprachen auf Gentoo LEMP

Installieren Sie FCGIWRAP und Aktivieren von Perl-, Ruby- und Bash -Dynamic -Sprachen auf Gentoo LEMP

Dieses Tutorial bezieht sich streng mit der Ehemaligen in der LEMP -Installation auf Gentoo und behandelt andere erweiterte Probleme mit Server, z. B. dynamische Skriptsprachen wie Perl oder Bash oder Ruby durch FCGIWRAP -Gateway, und bearbeiten Sie die Konfigurationsdateien von Nginx Virtual Hosts, um dynamische Inhalte mithilfe zu erhalten .Pl, .rb Und .CGI Skripte.

Installieren Sie FCGiWrap mit Perl, Ruby und Bash

Anforderungen

  1. LEMP -Stack auf Gentoo - https: // www installiert.Tecmint.com/install-lemp-in-gentoo-linux/

Schritt 1: Aktivieren Sie FCGIWRAP auf Gentoo LEMP

Fcgiwrap ist ein Teil von Nginx Fastcgi Common Gateway Interface die andere dynamische Skriptsprachen wie Perl oder Bash- oder Ruby -Skripte verarbeiten, arbeitet durch Verarbeitung von Anforderungen, die von Nginx über TCP- oder UNIX -Sockets empfangen werden, unabhängig von Zurück Kunden.

1. Beginnen wir zuerst mit der Installation Fccgiwrap Verarbeiten Sie auf Gentoo Linux mit dem folgenden Befehl.

# Emerge-Made www-misc/fcgiwrap
Installieren Sie das FCCGiWrap -Paket

2. Standardmäßig liefert das FCGiWrap -Paket keines drin Skripte auf Gentoo, um den Prozess zu verwalten. Nachdem die Pakete kompiliert und installiert wurden, erstellen Sie Folgendes drin Skripte, mit denen Sie den FCGIWRAP -Prozess mit drei Ansätzen verwalten können: Entweder des Prozesses mithilfe mit Verwendung UNIX -Domain -Sockets oder verwenden lokal TCP -Steckdosen oder beides gleichzeitig verwenden.

Verwenden von TCP Socket Skript

Erstellen Sie eine Init -Datei auf /etc/init.D/ Pfad mit dem folgenden Dateiinhalt.

# Nano /etc /init.D/FCGIWRAP

Fügen Sie den folgenden Dateiinhalt hinzu.

#!/sbin/runscript ip = "0.0.0.0 "port =" 12345 "start () eebegin" starten fcgiWrap -Prozess ... "/usr/sbin/fcgiwrap -s TCP: $ ip: $ port & tcp_sock =" netstat -tulpn | Grep fcgiwrap "echo" Socket Details: $ tcp_sock "eend $? "Fehler wurden beim Starten des fcgiwrap -Prozesses" stop () eebegin "aufgetaucht, um den FCGiWrap -Prozess zu stoppen ..." pid = "ps a | grep fcgiwrap | grep tcp | cut -d" -F1 "Kill -s 1 $ pid tcp_sock =" netstat -tulpn | grep fcgiwrap "Wenn test $ tcp_sock = 2> /dev /null; dann echo "fcgiWrap -Prozess erfolgreich gestoppt" tcp_sock = "netstat -atulpn | grep $ port", wenn test $ tcp_sock = 2> /dev /null; dann echo "Keine offene FCGIWRAP -Verbindung gefunden ..." sonst echo "warten, um FCGiWrap Offene Verbindungen zu schließen ... bitte überprüfen!"echo" Socket Details: $ tcp_sock "fi eend $? "Fehler wurden beim Stoppen des FCGIWRAP -Prozesses aufgetaucht ..." status () eebegin "Status fcgiWrap -Prozess…" tcp_sock = "netstat -atulpn | grep $ port" Wenn test $ tcp_sock = 2> /dev /null; Dann wird der FCGIWARP -Prozess "fcgiWrap -Prozess, der nicht" sonst echo "ausgeführt wird, ausgeführt!"echo -e" Socket Details: \ n $ tcp_sock "fi eend $? "Es wurden Fehler aufgetreten, als sie den FCGIWRAP -Prozess stoppen ..."
Verwenden von TCP Socket Skript

Wie Sie sehen können, enthält die Skriptdatei zu Beginn zwei Variable IP Und Hafen. Ändern Sie diese Variablen mit Ihren eigenen Bedürfnissen und stellen Sie sicher 12345 - entsprechend ändern.

Verwendung 0.0.0.0 Auf der IP -Variablen können der Prozess eine IP -Bindung und das Anhören von IP (außerhalb von außen zugänglich) ermöglicht 127.0.0.1, Es sei denn, Sie haben andere Gründe wie das remote -Einrichten von FCGiWrap -Gateway auf einem anderen Knoten für Leistung oder Lastausgleich.

3. Nach dem Erstellen der Datei die Ausführungsberechtigungen anhängen und den Daemon -Prozess mithilfe von Start-, Stopp- oder Statusschalter verwalten. Der Statusschalter zeigt Ihnen relevante Socket -Informationen wie z. B IP-Port Kombinieren Sie es hört und falls eine aktive Verbindung initialisiert. Auch wenn der Prozess aktive Verbindungen in hat ZEIT WARTET Geben Sie an, dass Sie es erst neu starten, wenn alle TCP -Verbindungen schließen.

# Chmod +x /etc /init.d/fcgiwrap # service starten fcgiwrap #/etc/init.D/FCGIWRAP -Status
Starten Sie den FCGiWrap -Service
Verwenden von UNIX -Socket -Skript

Wie bereits vorgestellt, kann FCGiWrap gleichzeitig mit beiden Sockets ausgeführt werden, wodurch der Name des zweiten Skripts geringfügig an ändert fcgiwrap-unix-socket, Um sicherzustellen, dass beide gleichzeitig gestartet und ausgeführt werden können.

# Nano /etc /init.D/FCGIWRAP-UNIX-SOCTT

Verwenden Sie den folgenden Dateiinhalt für den UNIX -Socket.

#!/sbin/runscript socK_detail = "ps a | grep fcgiwrap-unix | head -1" start () eebegin "starten fcgiwrap-unix-socket-Prozess…"/usr/sbin/fcgiwrap -s unix:/run/fcgiwrap-uninix.Socke & Schlaf 2 /bin /chown nginx: nginx /run /fcgiwrap-unix.SOCK SLEEP 1 SOCK = "LS -AL /RUN /FCGIWRAP -UNIX.Socken "echo" Socket Details: $ sock "eend $? "Fehler wurden beim Starten des fcgiwrap -Prozesses" stop () eebegin "aufgetaucht, um FCGiWrap -unix -socket -Prozess zu stoppen ..." pid = "ps a | grep fcgiwrap | grep unix | cut -d" -F1 "rm -f /run /fcgiwrap-unix.Sock Kill -S 1 $ PID Echo "FCGiWrap -Prozess erfolgreich gestoppt" #Killall/usr/sbin/fcgiwrap sleep 1 echo "Socket Details: $ sock" eend $? "Fehler wurden beim Stoppen des FCGIWRAP-Prozess.Socke; Dann wird Echo "Prozess mit Socket gestartet: $ sock_detail" else echo "fcgiwrap -Prozess nicht ausgeführt!"fi eend $? "Es wurden Fehler aufgetreten, als sie den FCGIWRAP -Prozess stoppen ..."
Verwenden von UNIX -Socket -Skript

4. Gehen Sie erneut, dass diese Datei ausführbar ist und die gleichen Dienstschalter verwenden: Start, stoppen oder Status. Ich habe den Standardpfad für diesen Socket festgelegt /run/fcgiwrap-unix.Socke Systempfad. Starten Sie den Prozess und überprüfen Sie ihn mithilfe Status Schalter oder Liste /laufen Verzeichnisinhalte und lokalisieren Sie den Socket oder verwenden Sie sie ps -a | Grep fcgiwrap Befehl.

# Chmod +x /etc /init.d/fcgiwrap-unix-socket # service starten fcgiwrap-unix-socket #/etc/init.D/FCGIWRAP-UNIX-SOCTET STATUS # PS -A | Grep fcgiwrap
Starten und überprüfen Sie FCGiWrap

Wie bereits erwähnt, kann FCGiWrap mit gleichzeitigen TCP- und UNIX -Sockeln ausgeführt werden. Wenn Sie jedoch keine externen Gateway -Verbindungen benötigen UNIX Domain Socket Nur, da es Interprozesskommunikation verwendet, die schneller als die Kommunikation über TCP -Loopback -Verbindungen ist und weniger TCP -Overhead verwendet.

UNIX Domain Socket

Schritt 2: Aktivieren Sie CGI -Skripte auf Nginx

5. Damit Nginx Perl- oder Bash -Skripte über eine schnelle gemeinsame Gateway -Schnittstelle analysieren und ausführen kann.

Ein Beispiel wird unten (localhost) dargestellt, das Perl- und CGI -Skripte auf allen in Root Path platzierten Dateien aktiviert (/var/www/localhost/htdocs/) mit .Pl Und .CGI Erweiterung mit FCGIWRAP -TCP -Sockeln für den Standard -Root -Dokumentpfad, den zweiten Speicherort verwendet UNIX -Domain -Sockets, mit einem Index.Pl Datei und der dritte Speicherort wird verwendet TCP -Steckdosen mit einem Index.CGI Datei.

Platzieren Sie den folgenden Inhalt oder nur einige Teile davon in die gewünschte virtuelle Host -Konfigurationsdatei, die Sie dynamischen Perl- oder Bash -Skripte mit UNIX- oder TCP -Sockeln unter verschiedenen Stellen aktivieren möchten, indem Sie sich unter verschiedenen Stellen ändern fastcgi_pass Argument -Erklärung.

# nano/etc/nginx/seites-verfügbare/localhost.Conf

Bearbeiten Lokalhost.Conf Aussehen wie in der Vorlage unten.

Server Listen 80; server_name localhost; Access_log/var/log/nginx/localhost_access_log main; ERROR_LOG/VAR/LOG/NGINX/localhost_error_log info; root/var/www/localhost/htdocs/; Ort / autoIndex on; Indexindex.HTML -Index.HTM -Index.PHP;  ## Php -fpm Gateway ### Standort ~ \.php $ try_files $ uri = 404; integrieren/etc/nginx/fastcgi.conf; FASTCGI_PASS 127.0.0.1: 9001;  ## fcgiWrap Gateway auf allen Dateien unter Root mit TCP -Sockeln ### Standort ~ \.(pl | cgi | rb) $ fastcgi_index Index.CGI -Index.PL; integrieren/etc/nginx/fastcgi.conf; FASTCGI_PASS 127.0.0.1: 12345;  ## FCGiWrap -Gateway auf allen Dateien unter Root Second -Ordner mit Index.PL Verwenden Sie Unix Sockets ### Standort /Sekunde Indexindex.PL; root/var/www/localhost/htdocs/; Ort ~ \.(pl | cgi | rb) $ include/etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/fcgiwrap-unix.Socke; fastcgi_param script_filename $ document_root $ fastcgi_script_name;  ## FCGiWrap -Gateway auf allen Dateien unter Root Third Ordner mit Index.CGI mit TCP -Sockeln ### Standort /dritter Indexindex.CGI; Ort ~ \.(pl | cgi | rb) $ include/etc/nginx/fastcgi.conf; FASTCGI_PASS 127.0.0.1: 12345; 

6. Nachdem Sie Bearbeitung nginx beendet haben Lokalhost.Conf, oder Ihre spezifische virtuelle Host -Konfigurationsdatei, wechseln Sie zu Ihrem Standard -Dokument -Root -Pfad des Website -Standarddokument.

# CD/var/www/localhost/htdocs # mkdir zweites Drittel

Erstellen Index.Pl Datei auf dem zweiten Speicherort mit folgenden Inhalten.

# nano/var/www/localhost/htdocs/zweiter/index.Pl

Fügen Sie diesen Inhalt hinzu, um Umgebungsvariablen zu erhalten.

#!/usr/bin/perl print "content-type: text/html \ n \ n"; drucken <Ein Perl -CGI -Index am zweiten Ort mit Env -Variablen  Html print "content-type: text/html \ n \ n"; foreach meine $ keys (sortieren Sie Keys %env) print "$ keys = $ env $ keys
\ n "; beenden;

Dann erstellen Index.CGI Datei auf dem dritten Speicherort mit folgenden Inhalten.

# nano/var/www/localhost/htdocs/dritten/index.CGI

Fügen Sie diesen Inhalt hinzu, um Umgebungsvariablen zu erhalten.

#!/bin/bash echo content-Typ: text/html echo "" Katze << EOF  Bash script 
 

Ein Bash -CGI -Index am dritten Ort mit Env -Variablen

Eof env cat << EOF EOF

7. Machen Sie bei der Bearbeitung beide Dateien ausführbar, starten Sie den Nginx -Server neu und stellen Sie sicher, dass beide FCGIWrap -Sockets ausgeführt werden.

# chmod +x/var/www/localhost/htdocs/second/Index.PL # CHMOD +X/VAR/www/localhost/htdocs/dritten/Index.CGI # Service Nginx Neustart # Service FCGIWRAP START # Service FCGIWRAP-UNIX-SOCKET START

Legen Sie als nächstes Ihren lokalen Browser bei der folgenden URL um.

http: // localhost http: // localhost/Second/http: // localhost/dritte/

Das Ergebnis sollte wie auf den folgenden Screenshots erscheinen.

Überprüfen Sie das CGI -Verzeichnis Eine Perl -CGI -Indexseite Eine Bash -CGI -Indexseite

8. Wenn alles vorhanden und korrekt konfiguriert ist, können Sie beide FCGiWrap -Daemons automatisch starten, nachdem Sie die folgenden Befehle ausgeben (falls Sie NGINX konfiguriert haben, um beide CGI -Sockets zu verwenden).

# RC-update fügen Sie FCGIWRAP-Standard hinzu

Schritt 3: Aktivieren Sie die Ruby -Unterstützung auf FCGIWRAP

9. Wenn Sie dynamische Ruby -Skripte auf Nginx FCGI ausführen müssen, müssen Sie installieren Rubin Interpreter auf Gentoo mit dem folgenden Befehl.

# auftauchen -maskieren Sie Ruby
Installieren Sie Ruby Interpreter

10. Nachdem das Paket zusammengestellt und installiert wurde, wechseln Sie zu Nginx Standorte verfügbar und bearbeiten Lokalhost.Conf Datei, indem Sie die folgenden Aussagen vor der letzten Curly -Klammer anhängen "", Dies aktiviert die Unterstützung, um Ruby -Skripte an einem vierten Standort unter Standard -Dokument -Root -Pfad zu führen, das von Nginx localhost bedient wird.

# nano/etc/nginx/seites-verfügbare/localhost.Conf

Verwenden Sie die folgenden Nginx -Direktiven.

## FCGiWrap Gateway auf allen Dateien unter Root Fourth Ordner mit Index.RB unter TCP -Sockeln ### Standort /Vierter Indexindex.RB; Ort ~ \.rb $ include/etc/nginx/fastcgi.conf; FASTCGI_PASS 127.0.0.1: 12345;  ## Letzte Curly -Klammer, die die Definitionen nginx Server ## schließt
Aktivieren Sie die Ruby -Unterstützung bei FCGIWRAP

11. Um die Konfiguration zu testen, erstellen Sie nun das vierte Verzeichnis unter /var/www/localhost/htdocs Pfad erstellen Sie ein ausführbares Ruby -Index -Skript mit .rb Erweiterung und fügen Sie den folgenden Inhalt hinzu.

# Mkdir/var/www/localhost/htdocs/viertes # nano/var/www/localhost/htdocs/vierten/index.rb

Ruby Index.RB -Beispiel.

#!/usr/bin/ruby puts "http/1.0 200 OK "Puts" Inhaltstyp: text/html \ n \ n "Puts" Ruby Skript "setzt"
"Setzt"

Ein Ruby -CGI -Index am vierten Standort mit Env -Variablen

"System ('Env')

12. Nachdem Sie Ausführungsberechtigungen in der Datei hinzugefügt haben, starten Sie Nginx -Daemon neu, um Konfigurationen anzuwenden.

# chmod +x/var/www/localhost/htdocs/vierten/index.RB # Service Nginx Neustart

Öffnen Sie Ihren Browser und navigieren Sie zur URL http: // localhost/viertes/, Dies sollte Ihnen den folgenden Inhalt darstellen.

Ruby CGI -Indexseite

Das wars Sie vorerst, dass Sie Nginx so konfiguriert haben Mit aktiven Schalen unter Ihrem System ausgeführt werden, kann jedoch die statische Barriere erweitern, die durch statische HTML auferlegt wird, wodurch Ihre Website dynamische Funktionen hinzufügt.