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:
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!
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.
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.
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.