Проблема с пассажиром: нет такого файла для загрузки /config/environment

Я изучал этот вопрос и находил здесь и там ссылки на похожие проблемы, но ни одна из них пока не привела к решению. Я установил пассажира (2.2.11) и nginx (0.7.64), и когда я запускаю все и нажимаю URL-адрес Rails, я получаю страницу с ошибкой, информирующую меня об ошибке загрузки:

нет такого файла для загрузки -- /path/to/app/config/environment

Судя по тому, что я нашел в Интернете, это какая-то ошибка пользователя/разрешений, но я перепробовал все логические исправления: я убедился, что /config/environment.rb принадлежит не root, а пользователь веб-приложения. Я пытался установить для пассажира_по умолчанию_пользователя, я пытался отключить пассажир_пользователь_выключения. Я даже пытался настроить пользователя nginx, хотя это не должно иметь большого значения. Я получил несколько разных результатов, но на самом деле ничего не сработало. Я надеюсь, что у кого-то может быть волшебная комбинация настроек и разрешений для этого. Я могу попробовать вернуться к более ранней версии Passenger, потому что раньше у меня никогда не было этой проблемы; хотя прошло немного времени с тех пор, как я настроил Passenger.

Спасибо за любые предложения.

EDITED: См. Ниже ответ, на который я наткнулся.


person Masonoise    schedule 28.04.2010    source источник
comment
Вы должны переместить решение вашего вопроса в его собственный ответ, а затем пометить ответ как принятый.   -  person Steve Madsen    schedule 29.04.2010


Ответы (2)


Естественно, мне потребовалось всего лишь опубликовать вопрос, чтобы наткнуться на ответ. Чтобы предоставить информацию для всех, кто ищет эту проблему, я опубликую здесь некоторые подробности.

Соответствующие строки из nginx.conf:

user www-data; # in order to have nginx not run as root

passenger_default_user www-data; # likewise for passenger

root /opt/foo/app/current/public;

Ключевым моментом на этом этапе является убедиться, что файлы приложения принадлежат www-data, в частности config/environment.rb, потому что, по-видимому, Passenger смотрит на своего владельца, чтобы определить, от кого работать. Это может означать, что запись passenger_default_user не имеет значения? Но в любом случае хорошо иметь его как документацию о намерениях.

Наконец, убедитесь, что все родительские каталоги вашего приложения доступны для www-data — в моем случае установка системы по умолчанию оставила каталог 0700, который я пропустил.

person Masonoise    schedule 15.04.2011
comment
Как насчет настройки PassengerUser, как указано в документация? - person JJD; 01.06.2012

Modern Passenger предпочитает Rack рельсам. Если в вашем приложении Rails есть config.ru, Passenger попытается загрузить его как приложение Rack. Это может вызвать проблемы. В частности, ваше сообщение об ошибке относится к config/environment - обратите внимание на отсутствие расширения .rb, типичного для приложения Rails.

Попробуйте переместить config.ru в сторону, если он существует.

person Steve Madsen    schedule 28.04.2010
comment
Спасибо за идею — я видел заметку о предпочтениях Rack в другом месте, но это простое старое приложение Rails. Отсутствие расширения .rb мне тоже показалось странным, и я пока нигде не нашел этому объяснения... - person Masonoise; 29.04.2010