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

Я исследовал эту проблему и нашел ссылки на похожие проблемы тут и там, но ни одна из них еще не привела к решению. Я установил 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 ответа

Решение

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

Соответствующие строки из 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, который я пропустил.

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

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

Другие вопросы по тегам