Ich fragte mich: "Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?"
Was ist ein Server? Die Geschichte. Der Server ist ein Server in englischer Sprache, dh er liefert und stellt bereit. Laut IT-Glossar ist ein Server ein anderer in einem Computernetzwerk. Ein Computer, der dem Computer seine eigenen Funktionen, Dienste, Daten usw. zur Verfügung stellt. Wenn wir eine Webseite durchsuchen, fragen Sie den Server von unserem PC aus: "Ich möchte diese Seite sehen!". Dann gibt der Server eine Seite mit der Aufschrift "Ja, das!" Zurück. Jetzt können Sie die fröhliche Webseite sehen. Normalerweise verfügt jede Servermaschine oder Serversoftware über eine feste Funktion oder einen festen Dienst, der nach außen bereitgestellt werden soll, sowie über ein unterstütztes Datenformat oder -protokoll (Kommunikationsvereinbarung). Dann heißt es "○○ Server" mit den Arten von Funktionen, die bereitgestellt werden sollen, wie "DB-Server", "Webserver" und "Anwendungsserver".
Die Rolle des Webservers besteht darin, Inhaltsanforderungen vom Browser zu empfangen und eine Antwort an den Browser zurückzugeben. Wenn es sich bei der Anforderung zu diesem Zeitpunkt um statischen Webinhalt handelt (Inhalt, der denselben Anzeigeinhalt anzeigt, sofern er nicht aktualisiert wurde, z. B. HTML-, CSS- und Bilddateien), verarbeitet der Webserver ihn und gibt eine Antwort zurück. Bei dynamischen Webinhalten, bei denen eine Verarbeitung erforderlich ist, um den Anzeigeinhalt für jeden Client zu ändern, sendet der Webserver eine Anforderung an den Anwendungsserver. Anschließend wird das vom Anwendungsserver zurückgegebene Ergebnis als Antwort zurückgegeben. Bekannte Webserver sind Nginx und Apache.
Der Anwendungsserver führt die von uns erstellte Anwendung aus. Die vom Webserver gesendete Anforderung wird vom Anwendungsserver an die Anwendung übertragen, und das von der Anwendung verarbeitete Ergebnis wird an den Webserver zurückgegeben. Bei der Entwicklung in einer lokalen Umgebung wird nur der Anwendungsserver eingerichtet. In der Produktionsumgebung ist die Verarbeitung statischer Inhalte jedoch häufig belastet, wenn der Webserver vor der Anwendung platziert wird.
Typische Rails-Anwendungsserver sind Unicorn, Thin, Rainbows, Puma usw. Die vom Webserver gesendete Anforderung wird vom Anwendungsserver an die Rails-Anwendung übertragen, und das von der Rails-Anwendung verarbeitete Ergebnis wird an den Webserver zurückgegeben. Richten Sie für die Entwicklung in einer lokalen Umgebung nur einen Anwendungsserver für Rails wie Puma ein (der normalerweise in der Entwicklungsumgebung ausgeführt wird). Andererseits wird in der Produktionsumgebung der Webserver häufig vor der Rails-Anwendung platziert, um die Last der statischen Inhaltsverarbeitung zu tragen. Auf diese Weise kann der Webserver mehrere Anwendungen gleichzeitig verarbeiten, Assets schnell rendern und viele der bei jeder Anforderung auftretenden Vorgänge ausführen.
Rack Lassen Sie uns hier auf Rack eingehen. Das Rack wechselt zwischen dem Ruby-Framework und dem Anwendungsserver und fungiert als Verbindung zwischen diesen. Bei Verwendung von Rack konvertiert der Server die gesendete HTTP-Anforderung in ein Formular, das von der Anwendung verstanden werden kann. Umgekehrt wird die Antwort von der App über Rack in HTTP konvertiert und an den Server zurückgegeben. Mit Rack können Sie Server und Frameworks frei kombinieren.
Ich werde den Inhalt bisher zusammenfassen. Der Webserver empfängt die vom Browser gesendete Anforderung und gibt eine Antwort an den Browser zurück, wenn es sich um statischen Webinhalt handelt. Wenn es sich bei der Anforderung jedoch um dynamischen Webinhalt handelt, wird sie nicht vom Webserver verarbeitet und an den Anwendungsserver gesendet. Anschließend informiert der Anwendungsserver die Anwendung über die Middleware. Wenn der Vorgang abgeschlossen ist, werden die Ergebnisse in umgekehrter Reihenfolge an den Browser zurückgegeben.
Unterschied zwischen Webserver und Anwendungsserver IT-Glossar Unterschiede zwischen Webserver und Anwendungsserver bei der Rails-Entwicklung (Übersetzung)
Recommended Posts