Проблема с пассажиром: "такой файл не загружается" - /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
из пути, если он существует.