Monit + RVM + Thin unter OSX / Linux

7

Nachdem ich stundenlang versucht habe (und auch Gott und Bluepill auszuprobieren), habe ich beschlossen, meine Frage hier zu stellen, weil ich völlig ahnungslos bin, wie ich dieses Problem lösen kann.

Ich habe eine Rails-App. Ich möchte Thin als meinen App-Server verwenden. Ich möchte Monit verwenden, um meine Thin-Instanzen zu überwachen. Ich benutze RVM, um meine Ruby-Versionen als meinen lokalen Benutzer zu verwalten.

Ich habe die folgende Monit-Datei eingerichtet, die vermutlich tun würde, was ich will, tut es aber nicht:

%Vor%

Wenn ich einfach start program in die Befehlszeile kopiere (außerhalb von Monit), funktioniert es. Dasselbe gilt für stop program , um danach die Thin-Instanz zu stoppen. Es über Monit laufen zu lassen, scheint jedoch nicht zu funktionieren.

Wenn Sie es im -v verbose-Modus ausführen, erhalten Sie Folgendes:

%Vor%

Was mich zu der Annahme verleitet, dass Thin niemals initialisiert wird. Läuft Monit als root oder etwas? Ursache, wenn es dann tut, wird es offensichtlich nicht die richtigen Edelsteine ​​installiert haben, da ich RVM und nicht das "System" Ruby verwende. Ich bin derzeit auf OSX (wird aber irgendwann auf Linux umstellen) - weiß jemand, was die Ursache dafür sein könnte? Und wenn Monit über root ausgeführt wird, wie kann ich RVM unabhängig davon verwenden? Oder könnte ich Monit sagen, dass er die Start / Stop-Programme als Michael:staff ausführen soll (ich nehme an, dass es auf OSX wäre?)

Jede Hilfe wird sehr geschätzt!

    
Michael van Rooijen 03.05.2011, 00:15
quelle

3 Antworten

11

monit löscht die Umgebung und führt auch keine Shell für Ihren Befehl aus (geschweige denn einen interaktiven). Ich finde, ich muss etwas tun wie:

%Vor%

als Monit-Startbefehl.

    
Mark Aufflick 24.05.2011, 23:27
quelle
7

Eine weitere Option, die ich in der RVM Google-Gruppe gefunden habe, ist wie folgt:

%Vor%

su - user führt die Shell des Benutzers als Login-Shell aus, also wenn Die Shell des Benutzers ist bash, es wird dazu führen, dass ~ / .bash_profile ausgeführt wird Umgebungsvariablen sollten die gleichen wie unmittelbar nach diesem Benutzer sein eingeloggt.

Wir brauchen den Pfad für su, sonst wäre monitrc nicht in der Lage, das su ausführbar zu finden.

    
Francois 22.11.2011 19:48
quelle
4

Besser wäre es, einen RVM-Wrapper zu verwenden, um eine benutzerdefinierte ausführbare Datei für Thin zu erstellen. Es erstellt die richtigen Umgebungsvariablen, um den richtigen Ruby und die richtigen Edelsteine ​​zu verwenden, und startet dann dünn. Lesen Sie mehr darüber und verwenden Sie es mit Gott hier: Ссылка . Es sollte das gleiche mit monit funktionieren

Um den Wrapper zu erstellen:      rvm wrapper ruby@gemset bootup thin

Ändern Sie dann start program und stop program , um die gerade erstellte ausführbare Datei zu verwenden.

    
Chris Slade 20.08.2011 07:16
quelle

Tags und Links