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


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

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

где корень приложения находится по адресу: / Главная / администратора / WWW / приложение

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

 <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

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


5
2017-11-16 04:13


Источник




Ответы:


Пассажир - это модуль для 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.

0
2017-11-16 05:04



ОК. Я изменил свои права и предоставил разрешения на чтение и выполнение групп www-data для всех папок и файлов из / home / on down, чтобы открыть все возможности для устранения неполадок. Я все еще получаю одно сообщение пассажира. Состояние пассажира показывает, что Пассажир действительно работает, а mysql тоже работает. Я коснулся файла /tmp/restart.txt, а также перезапустил Apache безрезультатно.


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

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

Недавно я получил Пассажира для работы с нуля, вот список того, что я сделал:

  • Ничего не трогало в отношении разрешения (кроме того, что вы сделали_I только что сделал шаг CHOWN, без шага CHMOD).
  • Не нужно было трогать config.ru или config / environment.rb
  • Очистить tmp, используя rm -rf /tmp/*
  • Я установил из gemfile (не tarball); побежал gem install passenger cmd (с заменой 2GB).
  • Рана passenger-install-apache2-module CMD. Пассажир даст 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 и все!


0
2017-09-04 13:06





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

Разрешение заключается в исправлении конфигурации.

    PassengerAppRoot /home/admin/www/app/current

0
2017-09-04 15:29