Die meisten Ruby-Anwendungsserver führen nur einen einzigen Ruby-Prozess aus (und Ruby hat eine globale Interpreter-Sperre, die Multithreading ziemlich sinnlos macht), was bedeutet, dass es nur eine Anfrage gleichzeitig bedienen kann. Um es gelinde auszudrücken, das wird Ihnen keine sehr gute Leistung bringen.
Dafür gibt es zwei Möglichkeiten: Entweder Sie führen mehrere Ruby-Anwendungsserver aus und legen einen Load-Balancer oder Reverse-Proxy davor, z. Nginx oder Apache vor einem Paket von Mongrels oder Thin Servern (die Anzahl der Prozesse, die Sie ausführen, spiegelt die Anzahl der Anfragen wider, die Sie parallel bearbeiten können). Oder Sie führen Passenger aus, ein Apache- oder Nginx-Modul, das einen Pool von Anwendungen verwaltet, die dynamisch wachsen und bei Änderungen der Auslastung verkleinert werden können. Die erste Option bietet Ihnen mehr Konfigurationsoptionen, aber die zweite Option ist einfacher zu verwalten. Welches du willst, hängt von deinem Anwendungsfall ab.
Natürlich gibt es auch andere Lösungen, aber sie sind für spezifischere Anwendungsfälle. Sie können zum Beispiel eine sehr performante Anwendung schreiben und sie mit Thin bereitstellen - aber Sie müssen eine ereignisgesteuerte Anwendung schreiben. Sie können keine Rails-App bereitstellen und die gleiche Leistung erwarten.
Bevor Phusion Passenger es Rails erlaubt hat, mit Apache und nginx zu hosten, war der Einsatz einer Rails-App beängstigend und schwierig. Apache ist ein sehr ausgereifter Webserver, der leicht skalierbar und konfigurierbar ist, um viele Bedürfnisse zu erfüllen. (nginx ist nicht so ausgereift, aber sehr effizient, auch sehr konfigurierbar und eine großartige Alternative zu Apache für das Hosten von Schienen.) Wirrick und Mongrel sind großartig für die Entwicklung, aber wenn Sie kein Experte sind, ist es schwierig, sie für den Produktionseinsatz einzurichten .
Sie können das technisch, aber normalerweise nicht, weil das bei der Bereitstellung statischer Dateien wie css oder images einen erheblichen Mehraufwand verursacht.
Es gibt eine Reihe von Möglichkeiten, wie Sie eine Rails-App bereitstellen können, ohne Apache einzubeziehen, aber Apache ist der beliebteste Server in der Umgebung, der ausgereifteste Server in der Umgebung und der stabilste und skalierbarste Server. WEBrick und Mongrel haben beide ihre eigenen Vorzüge, aber Apache ist nur die Standardannahme für Webserver und der Pfad des geringsten Widerstandes in den meisten Fällen.
Tags und Links ruby ruby-on-rails