Проблема с пассажиром: «нет такого файла для загрузки» - / config / environment - PullRequest
5 голосов
/ 29 апреля 2010

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

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

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

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

РЕДАКТИРОВАНИЕ: См. Ниже ответ, на который я наткнулся.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

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

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

пользовательские www-данные; # для того, чтобы nginx не запускался от имени root

passenger_default_user www-data; # аналогично для пассажира

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

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

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

1 голос
/ 29 апреля 2010

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

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

...