2012-05-30 3 views
5

Ho configurato un server web OSX per un'applicazione di binari in esecuzione su nginx. Quando inizio manualmente il server, l'applicazione rotaie funziona bene, ma quando ho riavviato il server ottengo sempre il messaggio di errore del passeggeronginx, passenger, rails: nessun file da caricare --bundler

Nessun file da caricare --bundler

Credo che ha a che fare qualcosa con il Daemon lancio ho creato manualmente:

# /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> 

come vedete, io uso MyUser come nome utente nel plist. Il server nginx viene avviato dopo l'avvio e viene eseguito come MyUser, ma viene visualizzato questo messaggio di errore.

Quando si riavvia sulla riga di comando utilizzando sudo nginx -s stop && nginx, tutto funziona correttamente.

Qualche idea, perché?

modificare

mia nginx.conf assomiglia a questo:

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

È installato effettivamente il bundler? Come viene installato Ruby? –

+0

tutto funziona quando avvio manualmente nginx, il problema è che nginx non si avvia correttamente all'avvio della macchina. quindi sì, è installato bundler. Ruby installato usando homebrew/rvm. – tmaximini

+0

Sembra un problema di ambiente. Come appare il tuo nginx.conf? –

risposta

0

I miei 2 centesimi: provare a impostare la variabile d'ambiente GEM_HOME nella configurazione nginx.

+0

purtroppo questo non aiuta – tmaximini

0

Provare a impostare passenger_default_user e passenger_default_group nel nginx.conf.

Il valore predefinito è nessuno, il che potrebbe aver causato problemi.

Fare riferimento a Phusion Passenger users guide per ulteriori dettagli.

+0

grazie, ma non ha aiutato, ho aggiornato il mio conf nginx nel post originale – tmaximini

+0

in realtà penso che il nginx.conf è ok perché se inizio manualmente funziona. Penso che il problema sia dovuto a /Library/LaunchDaemons/org.nginx.ngnx.plist – tmaximini

0

Hai usato sudo quando hai installato rubygems o bundler? Se è così, prova a reinstallarli localmente.

+0

che sono installati localmente ... – tmaximini

0

Ho riscontrato questo problema anche con bundler. In certi ambienti, se eseguo bundle w/sudo otterrò l'errore che si sta vedendo e se lo eseguo senza sudo funzionerà correttamente.

Credo che sia perché le tue variabili $PATH e $GEM_HOME non sono impostate b/c l'ambiente di shell dell'utente (probabilmente bash) non è caricato. Forse si dovrebbe cambiare il vostro comando a qualcosa di simile:

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

Se questo non funziona, hai provato a prendere la chiave UserName dal vostro daemon lancio e vedere cosa succede?

+0

grazie, proverò a farlo domani ... – tmaximini

+0

hmm ora nginx non si avvia più quando avvio il server ... – tmaximini

+0

potresti provare ad aggiungere un demone che fa/bin/bash -l -c 'echo $ PATH >> somelogfile.log' e controlla il contenuto del file di log –