2012-05-30 12 views
5

Ich habe einen OSX-Webserver für eine Rails-Anwendung eingerichtet, die auf nginx läuft. Wenn ich den Server manuell starten, funktioniert die Rails-Anwendung in Ordnung, aber wenn ich den Server neu starten erhalte ich immer die Fehlermeldung Passagiernginx, passagier, rails: keine zu ladende Datei --bundler

Keine solche Datei zu laden --bundler

Ich denke, es hat etwas mit dem Auflegungs Daemon zu tun einrichten ich manuell:

# /Library/LaunchDaemons/org.nginx.ngnx.plist 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>nginx</string> 
    <key>UserName</key> 
    <string>MyUser</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/usr/local/Cellar/nginx/1.0.11/sbin/nginx</string> 
     <string>-g</string> 
     <string>daemon off;</string> 
    </array> 
    <key>KeepAlive</key> 
    <true/> 
    <key>NetworkState</key> 
    <true/> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
</dict> 
</plist> 

wie Sie sehen, ich MyUser als Name in dem plist verwenden. Der Nginx-Server startet nach dem Start und läuft als MyUser, aber ich bekomme diese Fehlermeldung.

Wenn ich es in der Befehlszeile mit sudo nginx -s stop && nginx neu starten, funktioniert alles einwandfrei.

Irgendwelche Ideen warum?

bearbeiten

meine nginx.conf wie folgt aussieht:

env GEM_HOME=/usr/local/rvm/gems/[email protected]/gems; 
worker_processes 1; 

events { 
    worker_connections 1024; 
} 

http { 
    include mime.types; 
    default_type application/octet-stream; 
    sendfile on; 
    keepalive_timeout  60 60; 
    send_timeout   120; 

    recursive_error_pages on; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    gzip on; 
    gzip_http_version 1.1; 
    gzip_comp_level 4; 
    gzip_proxied any; 
    gzip_vary on; 
    gzip_min_length 1100; 
    gzip_buffers 32 16k; 

    #server_tokens off; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_requests 0; 

    passenger_default_user eveadmin; 
    passenger_default_group staff; 
    passenger_root /usr/local/rvm/gems/[email protected]/gems/passenger-3.0.12; 
    passenger_ruby /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby; 


    server { 
    listen 8444; 
    #server_name intranet.local; 
    root /Users/eveadmin/rails/intranet/public; 
    passenger_enabled on; 
    rails_env development; 
    } 
} 

error i get

+0

Ist der Bundler tatsächlich installiert? Wie ist Ruby installiert? –

+0

alles funktioniert, wenn ich nginx manuell starte, das Problem ist, dass nginx nicht korrekt startet, wenn die Maschine bootet. also ja, Bundler ist installiert. installierter Rubin mit homebrew/rvm. – tmaximini

+0

Es klingt wie ein Umweltproblem. Wie sieht deine nginx.conf aus? –

Antwort

0

Meine 2 Cent: Versuchen Sie, die GEM_HOME Umgebungsvariable in Ihrer nginx Konfigurationseinstellung.

+0

leider hilft das nicht – tmaximini

0

Versuchen Sie, passagier_default_user und passagier_default_group in Ihrer nginx.conf einzurichten.

Der Standardwert ist niemand, was Ihre Probleme verursacht haben könnte.

Weitere Informationen finden Sie unter Phusion Passenger users guide.

+0

danke, aber es hat nicht geholfen, ich aktualisierte meine nginx conf in der ursprünglichen post – tmaximini

+0

eigentlich ich denke, die nginx.conf ist in Ordnung, denn wenn ich manuell beginne, funktioniert es. Ich denke das Problem liegt an der /Library/LaunchDaemons/org.nginx.ngnx.plist – tmaximini

0

Haben Sie sudo bei der Installation von Rubygems oder Bundler verwendet? Wenn dies der Fall ist, versuchen Sie, sie lokal neu zu installieren.

+0

sie sind lokal installiert ... – tmaximini

0

Ich habe dieses Problem auch mit Bundler erlebt. In bestimmten Umgebungen, wenn ich Bündel mit Sudo laufen lasse, erhalte ich den Fehler, den du siehst und wenn ich ihn ohne Sudo laufen lasse, dann funktioniert es gut.

Ich glaube, dass es daran liegen kann, dass Ihre $PATH und $GEM_HOME Variablen nicht gesetzt sind b/c Ihre Benutzer Shell-Umgebung (wahrscheinlich bash) ist nicht geladen. Vielleicht sollten Sie Ihren Befehl so etwas wie dies ändern:

/bin/bash -l -c '/usr/local/Cellar/nginx/1.0.11/sbin/nginx' 

Wenn das nicht funktioniert, haben Sie versucht, die Benutzername Schlüssel aus Ihrer Start-Daemon zu nehmen und sehen, was passiert?

+0

danke ich werde das morgen versuchen ... – tmaximini

+0

hmm jetzt nginx startet nicht mehr, wenn ich den booten Server ... – tmaximini

+0

können Sie versuchen, einen Daemon hinzuzufügen, der/bin/bash -l -c 'echo $ PATH >> somelogfile.log' ausführt und den Inhalt der Protokolldatei überprüft –