Wie starte ich mehrere kleine Ruby (Rack) -Apps auf einem Server?

8

Ich möchte mehrere (& gt; 2) kleine Rack-basierte Apps auf meinem VPS-Server ausführen, auf dem bereits eine große Rails-App läuft.

Die Rails-App verwendet das traditionelle Paar "Unicorn + nginx" und benötigt die meisten RAM-Ressourcen, die ich auf meiner VPS-Maschine habe.

Ich habe versucht, für jede App ähnliche Unicorn-Konfigurationen hinzuzufügen, und das hat mich zu der Unzulänglichkeit der RAM-Ressourcen geführt.

Meine Frage ist also: Ist es möglich, einen kleinen, kniffligen, Speicher sparenden Server einzurichten, mit dem alle Sinatra-Apps gleichzeitig laufen können?

UPDATE: falls es darauf ankommt, ist mir die Leistung egal. Diese Apps sind nicht dazu gedacht, ernsthafte Aufgaben zu erledigen.

UPDATE2: Ein Ansatz, der auf Sockets basiert, die mit Nginx geteilt werden, wird gegenüber dem mit Ports bevorzugt.

Danke!

    
Stanislav Pankevich 25.08.2012, 21:48
quelle

1 Antwort

5

Ich habe diese Frage selbst untersucht und ich glaube, ich habe eine Lösung gefunden, die es mir ermöglicht, auf einem Webserver alle meine kleinen Apps gleichzeitig laufen zu lassen.

Es basiert auf RackStack Noch-nicht-ein-Juwel, erstellt von Remi Taylor ( @remi auf Github) Ссылка .

RackStack wurde von Rack :: Builder inspiriert, was auch für eine solche Aufgabe gut geeignet scheint - RackStack geht einfach in die gleiche Richtung weiter und abstrahiert die "Stack" -Funktionalität auf eine Weise, die ich sehr schön und praktisch fand / p>

Hier ist eine Demonstration von RackStack, die aus zwei Beispiel-Apps (Sinatra und Rack) besteht: Ссылка . Um Stack-App-Verhalten auf einem echten Server nachzuahmen, habe ich meine / etc / hosts-Datei so modifiziert, dass localhost2-Host auf 127.0.0.1 zeigt.

Ich starte Thin Server und führe dann Anfragen auf localhost oder localhost2 aus: Die Anfragen an 'localhost' werden von FirstApp an 'localhost2' von SecondApp geliefert.

Ich kann jetzt keine Probleme erkennen, die auftreten können, wenn ich meine Apps auf einem echten Server testen werde, aber jetzt scheint mir dieser Ansatz genau das zu sein, wonach ich gesucht habe: Ich stelle mir vor, dass Nginx dies auf einem echten Server tun wird Übergeben Sie Anfragen an alle Hosts, die mit meinen Rack-Apps verknüpft sind, an einen Socket, der vom Thin-Server gehört wird. RackStack erfüllt also nur die Anforderungen, die an die Apps in meinem Stack adressiert sind.

Irgendwelche Vorschläge, Verbesserungen dieses Schemas oder Alternativen werden noch geschätzt!

    
Stanislav Pankevich 26.08.2012, 21:47
quelle

Tags und Links