2010-04-28 15 views
5

Ho fatto ricerche su questo e ho trovato riferimenti a problemi simili qua e là, ma nessuno di essi ha ancora portato a una soluzione. Ho installato passeggero (2.2.11) e nginx (0.7.64) e quando avvio le cose e ho colpito un URL di Rails, ricevo una pagina di errore che mi informa di un errore di caricamento:Problema del passeggero: "nessun file da caricare" -/config/environment

nessun file da caricare -/path/to/app/config/environment

Da quello che ho trovato online questa sembra essere una sorta di errore utente/permessi, ma ho provato tutte le correzioni logiche: l'ho fatto sicuro che /config/environment.rb non è di proprietà di root, ma da un utente webapp. Ho provato a impostare passenger_default_user, ho provato a impostare passenger_user_switching off. Ho anche provato a impostare l'utente di nginx, anche se non dovrebbe importare molto. Ho ottenuto risultati diversi, ma in realtà non ha funzionato. Spero che qualcuno possa avere la magica combinazione di impostazioni e permessi per questo. Potrei provare a fare il backup di una versione precedente di Passenger, perché non ho mai avuto questo problema prima; è da un po 'che non installo Passenger.

Grazie per eventuali suggerimenti.

MODIFICATO: vedere sotto per la risposta in cui sono incappato.

+0

È necessario spostare la soluzione alla domanda alla propria risposta, quindi contrassegnare la risposta come accettata. –

risposta

2

Naturalmente, mi ci è voluto solo postare la domanda per imbattermi nella risposta. Per fornire informazioni a chiunque cerchi questo problema, pubblicherò alcuni dettagli qui.

Le linee rilevanti della nginx.conf:

utente www-data; # per avere nginx non eseguito come root

passenger_default_user www-data; # similmente per il passeggero

root/opt/foo/app/corrente/pubblico;

La chiave a questo punto è assicurarsi che i file dell'applicazione siano di proprietà di www-data, in particolare config/environment.rb perché apparentemente Passenger guarda il suo proprietario per determinare chi eseguire come. Questo potrebbe significare che la voce passenger_default_user è irrilevante? Ma è bello averlo lì come documentazione di intenti comunque, forse.

Infine, assicurati che le directory madri della tua app siano tutte raggiungibili da www-data - nel mio caso l'impostazione predefinita del sistema aveva lasciato una directory 0700, cosa che avevo perso.

+0

* PassengerUser * come indicato nella [documentazione] (http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengeruser_lt_username_gt)? – JJD

1

Il Passeggero moderno preferisce Rack to Rails. Se hai un config.ru nell'applicazione Rails, Passenger tenterà di caricarlo come applicazione Rack. Questo potrebbe causare problemi. In particolare, il tuo messaggio di errore si riferisce a config/environment - nota la mancanza dell'estensione .rb tipica di un'applicazione Rails.

Provare a spostare config.ru fuori mano se esiste.

+1

Grazie per l'idea - Ho visto anche una nota sulla preferenza di Rack altrove, ma questa è una semplice app Rails vecchia. La mancanza dell'estensione .rb mi è sembrata strana, e non ho ancora trovato alcuna spiegazione in merito ... – Masonoise

+0

Beh, ho provato e ora il mio server è al 100% statico ... – Antzi

Problemi correlati