Назад | Перейти на главную страницу

Правильный пассажир + разрешения Apache для исправления ошибки «Нет такого файла или каталога - config / environment.rb»

У меня проблема с невозможностью запуска Passenger из-за, по-видимому, распространенной проблемы, в которой Passenger утверждает: нет такого файла или каталога - config / environment.rb.

Я искал в Интернете повсюду, и это, похоже, проблема, связанная с разрешениями. Насколько я понимаю, Passenger работает как владелец config.ru и файла config / environment.rb. В моем случае этот владелец - «админ». Я запускаю корень приложения в домашнем каталоге пользователя-администратора. Итак, я считаю, что у меня установлены правильные разрешения, используя: sudo chown -R admin:admin /home/admin/www и sudo chmod -R 755 /home/admin/www

где корень приложения находится по адресу: / home / admin / www / app

Вот мой файл конфигурации виртуального сервера:

 <VirtualHost *:80>
    ServerName track.example.com
    DocumentRoot /home/admin/www/app/current/public
    <Directory /home/admin/www/app/current/public>
    Options FollowSymLinks
    AllowOverride none
    Order allow,deny
    Allow from all
    </Directory>
    PassengerResolveSymlinksInDocumentRoot on
    RailsBaseURI /
    PassengerAppRoot /home/admin/www/app
    RailsEnv production   
    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Я использую Ubuntu 12.0.4, Rails 3.2.8, Ruby 1.9.3, Passenger 3.0.18, Apache 2

Спасибо за вашу помощь.

Ваш PassengerAppRoot неправильно. Вы указали /home/admin/www/app но ваше приложение на самом деле в /home/admin/www/app/current. Вот почему Пассажир не может его найти.

Решение - исправить конфигурацию.

    PassengerAppRoot /home/admin/www/app/current

Всякий раз, когда у меня возникают проблемы, которых я не понимаю, я обычно перезагружаю новый диск на своем линоде и быстро выполняю минимальную установку, чтобы проверить, работает ли мой список шагов. Иногда другие мои действия на сервере могут вызывать проблемы, поэтому важно, чтобы установка с минимальным набором параметров работала, прежде чем я буду рассматривать другие факторы.

Что касается Passenger, вы не можете на 100% полагаться на генерируемые им сообщения об ошибках. Иногда вам может не хватать файла index.html или файла представления, но если вы читаете ошибку Passenger, это как будто вы напутали десять разных вещей.

Недавно я заставил Passenger работать с нуля, поэтому вот список того, что я сделал:

  • Не касался ничего в отношении разрешения (кроме того, что вы сделали - я только что сделал шаг CHOWN; шага CHMOD нет).
  • Не пришлось трогать config.ru или config / environment.rb
  • Удален tmp с помощью rm -rf /tmp/*
  • Я установил из гемфайла (не из архива); побежал gem install passenger cmd (со свопом 2 ГБ).
  • Прогнал passenger-install-apache2-module cmd. В конце Passenger даст 5 строк кода для вставки в httpd.conf. Сделал это.

Конфигурация Virtualhost выглядит так:

<VirtualHost *:80>
    ServerName www.domain.com
    DocumentRoot /var/www/html/app/public
    <Directory /var/www/html/app/public>
        Allow from all
        Options -MultiViews
    </Directory>
</VirtualHost>

Перезагрузите apache и все!

Passenger - это модуль для Apache, работающий как часть процесса Apache. Это означает, что у пользователя Apache должны быть разрешения для проекта. Из Документация для пассажиров Apache:

Вам также может потребоваться настроить права доступа к файлу / папке. Убедитесь, что следующие папки доступны для чтения и исполнения Apache:

* this public folder.

* the application’s config folder.

* all parent folders. That is, /webapps/rackapp and /webapps must also be readable and executable by Apache.