Saturday 14 January 2017

Nginx Cgi Binary Options

Ich bin stecken Einstellung meiner nginx, um mit benutzerdefinierten CGI-Programme (mit xmlrpc-c-Bibliothek) arbeiten. Ich versuche mit fcgiwrap / spawn-fcgi wie folgt: Wichtiger Teil der nginx. conf-Datei wäre Ive versucht sowohl Soceket-Dateien und ipv4 / portnumber Kombinationen, aber ich habe Fehler: Ich bekomme auch 502 Bad Gateway manchmal, wenn ich mess around mit Optionen. Ive versucht jede Kombination, die ich google (einschließlich Änderung der Datei /etc/nginx/fastcgi. conf) (beachten Sie, gibt es separate Abschnitte in nginx. conf für php cgi und für meine Testprogramme, php funktioniert gut) Ich bin stecken und weiß nicht, wie Um es zu konfigurieren, bin ich etwas aus diesem Teil besonders fehlen: in nginx. conf schnellcgiparam SCRIPTFILENAME / usr / share / nginx / html / cgi-bin / test / fastcgiscriptname desnt Arbeit, berichtet Fehler unter Fastcgiparam SCRIPTFILENAME / usr / share / nginx / Html / cgi-bin / test / myprog es funktioniert Ich habe mehr als ein Programm, wie man die ausführbare Datei nicht festgelegt werden (wie myprog oben) Anfänger Guide Dieser Leitfaden gibt eine grundlegende Einführung in nginx und beschreibt einige einfache Aufgaben, die getan werden kann damit. Es wird angenommen, dass nginx bereits auf dem Lesegerät installiert ist. Ist dies nicht der Fall, lesen Sie bitte die Seite Installing nginx. Diese Anleitung beschreibt, wie man nginx startet und stoppt, seine Konfiguration lädt, erklärt die Struktur der Konfigurationsdatei und beschreibt, wie man nginx für statische Inhalte konfiguriert, wie man nginx als Proxy-Server konfiguriert und wie man es verbindet Eine FastCGI-Anwendung. Nginx hat einen Masterprozess und mehrere Workerprozesse. Der Hauptzweck des Masterprozesses besteht darin, die Konfiguration zu lesen und zu bewerten sowie Worker-Prozesse zu halten. Arbeitsprozesse führen die eigentliche Bearbeitung von Anfragen durch. Nginx verwendet ereignisbasierte Modell - und OS-abhängige Mechanismen zur effizienten Verteilung von Anforderungen unter Arbeitsprozessen. Die Anzahl der Worker-Prozesse wird in der Konfigurationsdatei festgelegt und kann für eine gegebene Konfiguration festgelegt oder automatisch an die Anzahl der verfügbaren CPU-Kerne angepasst werden (siehe Workerprozesses). Die Funktionsweise von nginx und seinen Modulen wird in der Konfigurationsdatei bestimmt. Standardmäßig wird die Konfigurationsdatei nginx. conf genannt und im Verzeichnis / usr / local / nginx / conf platziert. / Etc / nginx. Oder / usr / local / etc / nginx. Starten, Stoppen und Zurückladen der Konfiguration Um nginx zu starten, führen Sie die ausführbare Datei aus. Sobald nginx gestartet ist, kann es durch Aufrufen der ausführbaren Datei mit dem Parameter - s gesteuert werden. Verwenden Sie die folgende Syntax: Wenn das Signal eine der folgenden Optionen sein kann: Stoppen Sie schnelles Herunterfahren beenden graceful shutdown reload erneutes Laden der Konfigurationsdatei Wiedereröffnung der Protokolldateien Zum Beispiel, um nginx Prozesse mit dem Warten auf die Arbeitsprozesse zu beenden, um aktuelle Anforderungen zu beenden, zu beenden, Kann folgender Befehl ausgeführt werden: Dieser Befehl sollte unter demselben Benutzer ausgeführt werden, der nginx gestartet hat. Änderungen in der Konfigurationsdatei werden erst dann angewendet, wenn der Befehl zum Neuladen der Konfiguration an nginx gesendet oder neu gestartet wird. Um die Konfiguration neu zu laden, führen Sie Folgendes aus: Sobald der Masterprozess das Signal zum Neuladen der Konfiguration erhält, überprüft es die Syntaxgültigkeit der neuen Konfigurationsdatei und versucht, die darin enthaltene Konfiguration anzuwenden. Wenn dies ein Erfolg ist, startet der Masterprozess neue Worker-Prozesse und sendet Nachrichten an alte Worker-Prozesse und fordert sie zum Herunterfahren auf. Ansonsten rollt der Masterprozess die Änderungen zurück und arbeitet mit der alten Konfiguration weiter. Alte Worker-Prozesse, die einen Befehl zum Herunterfahren erhalten, stoppen, neue Verbindungen zu akzeptieren und weiterhin aktuelle Anforderungen zu warten, bis alle derartigen Anforderungen bedient werden. Danach beendet der alte Arbeiter den Ausgang. Mit Hilfe von Unix-Tools wie dem kill-Dienstprogramm kann auch ein Signal an nginx-Prozesse gesendet werden. In diesem Fall wird ein Signal direkt an einen Prozess mit einer gegebenen Prozess-ID gesendet. Die Prozess-ID des nginx-Masterprozesses wird standardmäßig im Verzeichnis / usr / local / nginx / logs bzw. / var / run an die nginx. pid geschrieben. Wenn beispielsweise die Master-Prozess-ID 1628 ist, um das QUIT-Signal zu senden, was zu einer graziösen Abschaltung von nginxs führt, führen Sie aus: Zum Abrufen der Liste aller laufenden nginx-Prozesse kann das Dienstprogramm ps beispielsweise wie folgt verwendet werden: Weitere Informationen zum Senden von Signalen an nginx finden Sie unter Steuern von nginx. Konfigurationsdateien Struktur nginx besteht aus Modulen, die durch in der Konfigurationsdatei angegebene Direktiven gesteuert werden. Richtlinien werden in einfache Richtlinien und Blockrichtlinien unterteilt. Eine einfache Anweisung besteht aus dem Namen und den Parametern, die durch Leerzeichen getrennt sind, und endet mit einem Semikolon (). Eine Blockrichtlinie hat die gleiche Struktur wie eine einfache Anweisung, aber statt des Semikolons endet sie mit einem Satz von zusätzlichen Anweisungen umgeben von Klammern (). Wenn eine Block-Direktive innerhalb von Klammern andere Anweisungen haben kann, wird sie als Kontext (Beispiele: Ereignisse, http, Server und Ort) bezeichnet. Direktiven, die außerhalb der Kontexte in der Konfigurationsdatei abgelegt werden, gelten als Hauptkontext. Die Ereignisse und die HTTP-Richtlinien befinden sich im Hauptkontext, dem Server in http. Und Standort im Server. Der Rest einer Zeile nach dem Zeichen gilt als Kommentar. Serving Static Content Eine wichtige Aufgabe des Web-Servers ist es, Dateien (wie Bilder oder statische HTML-Seiten) zu versorgen. Sie implementieren ein Beispiel, in dem je nach Anforderung Dateien aus verschiedenen lokalen Verzeichnissen ausgeliefert werden: / data / www (die HTML-Dateien enthalten können) und / data / images (mit Bildern). Dies erfordert das Editieren der Konfigurationsdatei und das Einrichten eines Serverblocks innerhalb des http-Blocks mit zwei Ortsblöcken. Zuerst erstellen Sie das Verzeichnis / data / www und legen Sie eine index. html-Datei mit beliebigem Textinhalt hinein und erstellen das Verzeichnis / data / images und platzieren einige Bilder darin. Öffnen Sie anschließend die Konfigurationsdatei. Die Standardkonfigurationsdatei enthält bereits mehrere Beispiele des Serverblocks, meist kommentiert. Bisher kommentieren alle diese Blöcke und starten einen neuen Server-Block: Im Allgemeinen kann die Konfigurationsdatei mehrere Server-Blöcke enthalten, die durch Ports, auf denen sie hören, und durch Servernamen unterscheiden. Sobald nginx entscheidet, welcher Server eine Anforderung verarbeitet, prüft er die im Anforderungsheader angegebene URI mit den Parametern der im Serverblock definierten Standortrichtlinien. Fügen Sie dem Serverblock den folgenden Standortblock hinzu: Dieser Standortblock gibt das / Präfix im Vergleich zum URI aus der Anfrage an. Für übereinstimmende Anforderungen wird der URI dem Pfad hinzugefügt, der in der Root-Direktive angegeben ist, dh auf / data /, um den Pfad zu der angeforderten Datei im lokalen Dateisystem zu bilden. Wenn es mehrere passende Ortungsblöcke gibt, wählt nginx diejenige mit dem längsten Präfix. Der obige Ortsblock liefert das kürzeste Präfix der Länge eins und nur dann, wenn alle anderen Standortblöcke keine Übereinstimmung liefern, wird dieser Block verwendet. Als nächstes fügen Sie den zweiten Standortblock hinzu: Es ist eine Übereinstimmung für Anfragen beginnend mit / images / (location / entspricht auch solchen Anforderungen, hat aber kürzere Präfix). Die resultierende Konfiguration des Serverblocks sollte wie folgt aussehen: Dies ist bereits eine funktionierende Konfiguration eines Servers, der auf dem Standardport 80 aufhört und auf dem lokalen Rechner unter localhost / erreichbar ist. Als Antwort auf Anfragen mit URIs beginnend mit / images /. Sendet der Server Dateien aus dem Verzeichnis / data / images. Beispielsweise sendet nginx als Antwort auf die Anfrage localhost / images / example. png die Datei /data/images/example. png. Wenn diese Datei nicht existiert, sendet nginx eine Antwort, die den Fehler 404 anzeigt. Anfragen mit URIs, die nicht mit / images / beginnen, werden auf das Verzeichnis / data / www abgebildet. Beispielsweise sendet nginx als Antwort auf die Anfrage localhost / some / example. html die Datei /data/www/some/example. html. Um die neue Konfiguration zu übernehmen, starten Sie nginx, wenn es noch nicht gestartet ist oder senden Sie das Reload-Signal an den nginxs master Prozess, indem Sie ausführen: Falls etwas nicht wie erwartet funktioniert, können Sie versuchen, den Grund in access. log und Error. log-Dateien im Verzeichnis / usr / local / nginx / logs oder / var / log / nginx. Einrichten eines einfachen Proxy-Servers Eine der häufigen Einsatzmöglichkeiten von nginx ist die Einrichtung als Proxy-Server, dh ein Server, der Anfragen empfängt, an die Proxy-Server weiterleitet, Antworten von ihnen abruft und an die Clients sendet. Wir konfigurieren einen Basis-Proxy-Server, der Anfragen von Bildern mit Dateien aus dem lokalen Verzeichnis und alle anderen Anfragen an einen Proxy-Server sendet. In diesem Beispiel werden beide Server auf einer einzigen nginx-Instanz definiert. Definieren Sie zunächst den Proxy-Server, indem Sie der Konfigurationsdatei nginxs einen weiteren Serverblock mit folgendem Inhalt hinzufügen: Dies ist ein einfacher Server, der den Port 8080 überwacht (zuvor wurde die Listenrichtlinie nicht angegeben, da der Standardport 80 war Verwendet) und ordnet alle Anfragen an das Verzeichnis / data / up1 im lokalen Dateisystem zu. Erstellen Sie dieses Verzeichnis und legen Sie die Datei index. html hinein. Beachten Sie, dass die Root-Direktive im Serverkontext platziert wird. Diese Root-Direktive wird verwendet, wenn der für die Anforderung einer Anforderung ausgewählte Standortblock keine eigene Root-Direktive enthält. Als nächstes verwenden Sie die Server-Konfiguration aus dem vorherigen Abschnitt und ändern, um es eine Proxy-Server-Konfiguration. In dem ersten Standortblock setzen Sie die proxypass-Direktive mit dem Protokoll, dem Namen und dem Port des im Parameter angegebenen Proxy-Servers (in unserem Fall localhost: 8080): Wir werden den zweiten Standortblock ändern, Das / images / prefix zu den Dateien im Verzeichnis / data / images, um es den Anforderungen von Bildern mit typischen Dateierweiterungen anzupassen. Der modifizierte Ortsblock sieht wie folgt aus: Der Parameter ist ein regulärer Ausdruck, der alle URIs mit der Endung. gif erfüllt. Jpg Oder. png. Ein regulärer Ausdruck sollte vorangestellt werden. Die entsprechenden Anforderungen werden dem Verzeichnis / data / images zugeordnet. Wenn nginx einen Standortblock auswählt, um eine Anforderung zu bedienen, prüft er zuerst Standortrichtlinien, die Präfixe angeben, den Speicherort mit dem längsten Präfix und überprüft dann reguläre Ausdrücke. Wenn es eine Übereinstimmung mit einem regulären Ausdruck gibt, wählt nginx diesen Speicherort oder ansonsten wählt er den zuvor erinnerten aus. Die resultierende Konfiguration eines Proxy-Servers sieht folgendermaßen aus: Dieser Server filtert Anfragen, die mit. gif enden. Jpg Oder. png und ordnen Sie sie dem Verzeichnis / data / images zu (durch Hinzufügen von URI zum Parameter root directives) und übergeben Sie alle anderen Anforderungen an den oben konfigurierten Proxy-Server. Um eine neue Konfiguration anzuwenden, senden Sie das Reload-Signal an nginx wie in den vorherigen Abschnitten beschrieben. Es gibt viele weitere Richtlinien, die verwendet werden können, um eine Proxy-Verbindung weiter zu konfigurieren. Einrichten von FastCGI Proxying nginx kann verwendet werden, um Anfragen an FastCGI-Server weiterzuleiten, auf denen Anwendungen mit verschiedenen Frameworks und Programmiersprachen wie PHP ausgeführt werden. Die grundlegendste nginx Konfiguration, zum mit einem FastCGI Bediener zu arbeiten, beinhaltet das Verwenden der Fastcgipass Direktive anstatt der proxypass Direktive und Fastcgiparam Direktiven, zum der Parameter festzusetzen, die an einen FastCGI Bediener übergeben werden. Angenommen, der FastCGI-Server ist auf localhost: 9000 zugänglich. Nehmen Sie die Proxy-Konfiguration aus dem vorherigen Abschnitt als Basis, ersetzen Sie die proxypass-Direktive durch die Fastcgipass-Direktive und ändern Sie den Parameter an localhost: 9000. In PHP wird der Parameter SCRIPTFILENAME für die Bestimmung des Skriptnamens verwendet und der Parameter QUERYSTRING wird zum Übergeben von Anforderungsparametern verwendet. Die resultierende Konfiguration würde sein: Dies wird einen Server einrichten, der alle Anfragen leitet, außer für Anforderungen für statische Bilder an den proxierten Server, der auf localhost arbeitet: 9000 durch das FastCGI-Protokoll. Nginx 1.4.x auf Unix-Systemen Diese Dokumentation behandelt die Installation und PHP mit PHP-FPM für einen Nginx 1.4.x HTTP-Server konfigurieren. Diese Anleitung wird davon ausgehen, dass Sie Nginx aus der Quelle erstellt haben und daher alle Binärdateien und Konfigurationsdateien unter / usr / local / nginx liegen. Wenn dies nicht der Fall ist und Sie Nginx durch andere Mittel erhalten haben, wenden Sie sich bitte an das raquo Nginx Wiki, um dieses Handbuch in Ihr Setup zu übersetzen. In diesem Leitfaden werden die Grundlagen der Konfiguration eines Nginx-Servers für die Verarbeitung von PHP-Anwendungen und deren Bereitstellung auf Port 80 behandelt. Es wird empfohlen, die Nginx - und PHP-FPM-Dokumentation zu studieren, wenn Sie Ihre Einrichtung über den Umfang dieser Dokumentation hinaus optimieren möchten. Bitte beachten Sie, dass in dieser Dokumentation die Versionsnummern durch eine 039x039 ersetzt wurden, um sicherzustellen, dass diese Dokumentation in Zukunft korrekt bleibt, ersetzen Sie diese ggf. durch die entsprechenden Versionsnummern. Es wird empfohlen, dass Sie die Nginx Wiki raquo Installations-Seite besuchen, um Nginx auf Ihrem System zu erhalten und zu installieren. Beziehen und entpacken Sie die PHP-Quelle: Konfigurieren und bauen Sie PHP. Dies ist, wo Sie anpassen PHP mit verschiedenen Optionen, wie die Erweiterungen aktiviert werden. Ausführen ./configure --help für eine Liste der verfügbaren Optionen. In unserem Beispiel machen wir eine einfache Konfiguration mit PHP-FPM und MySQL Unterstützung. Beziehen und Verschieben von Konfigurationsdateien an die richtigen Speicherorte Es ist wichtig, dass wir Nginx davon abhalten, Anfragen an das PHP-FPM-Backend weiterzugeben, wenn die Datei nicht vorhanden ist, so dass wir eine willkürliche Skriptinjektion verhindern können. Wir können dies beheben, indem Sie die cgi. fixpathinfo-Direktive auf 0 in unserer php. ini-Datei. Wenn ich versucht habe, PHP-7.0.1 zu installieren, bekam ich folgende Warnung in Schritt 3: configure: WARNUNG: nicht erkannte Optionen: --with-mysql und andere Installationsanleitung haben möglicherweise ähnliche Probleme beim Konfigurieren mit MySQL-Unterstützung (ext / mysql ) In PHP 7. Die Erweiterung wurde in der aktuellen Version abgelehnt, dann könnten Sie ext / mysqli oder ext / pdomysql verwenden, zum Beispiel, konfigurieren Sie PHP 7.x mit: ./configure --enable-fpm --with-mysqli Building Von der Quelle ist nicht einfach, wenn etwas ein bisschen anders ist, und ich hatte eine harte Zeit mit einigen Verzeichnis-und Konfigurationsoptionen. Ich habe im Internet herumgewirbelt, bis ich diese Seite gefunden habe, die aus dem Chinesischen übersetzt wurde. Kein anderer hatte die Lösung. Ich konnte nicht php fpm zu starten, bis ich das Verzeichnis geändert (Item 2.ERROR: nicht globalisieren). Ich hatte andere Probleme aufgeführt, aber ich war in der Lage, sie zu lösen. Bitte löschen Sie dieses nicht, es ist sehr nützliche Info. Der ursprüngliche Aufstellungsort (es ist auf Chinesisch, nicht meine Aufstellungsort, aber ich möchte Gutschrift geben): (dort ist einige mehr dort, können Sie zur Seite gelangen) 1. configure: Störung. Xml2-config nicht gefunden Bitte überprüfen Sie Ihre libxml2 Installation. Apt-get install libxml2-dev 2.Warning: Erklärung von PEARInstaller. Download () sollte mit amp PEARDownloader kompatibel sein. Download (params) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar/PEAR/Installer. php on line 43 Warnung: Deklaration von PEARPackageFileParserv2. Parse () sollte mit PEARXMLParser kompatibel sein. Parse (data) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar/PEAR/PackageFile/ Parser / v2.php auf Zeile 113 PEAR ArchiveTar - bereits installiert: 1.3.13 PEAR ConsoleGetopt - bereits installiert: 1.3.1 PEAR StructuresGraph - bereits installiert: 1.0.4 Warnung: Deklaration von PEARTaskReplace. Init () sollte mit PEARTaskCommon kompatibel sein. Init (xml, fileAttributes, lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. Phar / PEAR / Task / Replace. php auf Zeile 31 PEAR XMLUtil - bereits installiert: 1.2.3 Warnung: Deklaration von PEARTaskWindowseol. Init () sollte mit PEARTaskCommon kompatibel sein. Init (xml, fileAttributes, lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. Phar / PEAR / Task / Windowseol. php auf Leitung 76 Warnung: Deklaration von PEARTaskUnixeol. Init () sollte mit PEARTaskCommon kompatibel sein. Init (xml, fileAttributes, lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. PHAR / PEAR / Task / Unixeol. php auf Zeile 76 PEAR PEAR - bereits installiert: 1.9.5 1.ERROR: Konnte die Konfigurationsdatei /usr/local/etc/php-fpm. conf nicht öffnen: Keine solche Datei oder Verzeichnis (2 ) ERROR: konnte die Konfigurationsdatei /usr/local/etc/php-fpm. conf nicht laden ERROR: FPM-Initialisierung fehlgeschlagen Php-fpm. conf kopiert Dateien aus der Quelldatei an diesen Speicherort. Cp /root/php-7.0.0alpha1/sapi/fpm/php-fpm. conf /usr/local/etc/php-fpm. conf 2.ERROR: Die Datei / usr / local / NONE / etc / php-fpm kann nicht globalisiert werden. d /.conf (ret 2) von /usr/local/etc/php-fpm. conf an Zeile 125. FEHLER: Konnte Datei nicht laden /usr/local/etc/php-fpm. conf FEHLER: FPM-Initialisierung fehlgeschlagen Bearbeiten /usr/local/etc/php-fpm. conf Dokument eingeführt. conf Teil, ändern Sie den richtigen Pfad include / usr / local / etc / php-fpm. d /. Conf Wenn kein Verzeichnis /usr/local/etc/php-fpm. d vorhanden ist, erstellen Sie das Verzeichnis. 3.WARNUNG: Nichts entspricht dem Includemuster /usr/local/etc/php-fpm. d/.conf aus /usr/local/etc/php-fpm. conf an Zeile 125. ERROR. Kein Pool definiert mindestens einen Pool-Abschnitt muss in der Konfigurationsdatei angegeben werden FEHLER: Fehler beim Nachbearbeiten der Konfiguration ERROR: FPM-Initialisierung fehlgeschlagen cp conf. default conf 4.ERROR: pool www kann nicht gid für group nobody erhalten FEHLER: FPM-Initialisierung fehlgeschlagen Conf öffnen Sie Dateien, Benutzer und Gruppe Benutzer in nginx Standardeinstellungen, in der Regel der Standard ist www-Daten.


No comments:

Post a Comment