Установка Ruby on Rails: невозможно получить доступ к файлу журнала - PullRequest
3 голосов
/ 19 января 2012

Я настраиваю Ruby on Rails впервые; на моем сервере я создал и загрузил приложение rails по умолчанию. Я могу просмотреть страницу по умолчанию («Добро пожаловать на борт! Вы едете на Rails»), но когда я нажимаю на ссылку «Просмотр среды приложения», появляется ошибка 500.

(Вы можете просмотреть здесь .)

Я хотел бы узнать больше об ошибке, но файл журнала ("log / production.log") пуст. Глядя на мой журнал Apache, я нахожу:

Ошибка Rails: невозможно получить доступ к файлу журнала. Пожалуйста, убедитесь, что /var/www/rails/myapp/log/production.log существует и является chmod 0666. Уровень журнала был повышен до WARN, а выходной поток направлен на STDERR. пока проблема не будет устранена.

Итак, я действительно хочу, чтобы мой журнал ошибок Ruby on Rails работал.

Я знаю, что эта проблема была опубликована несколько раз раньше, но я перепробовал все, что смог найти, поэтому вот что я пробовал:

  1. Создан файл "log / production.log", установите для владельца значение www-data, установите chmod 0666.
  2. Установите владельца папки «log» на www-data, установите chmod 0666.
  3. Дважды проверил настройки моей производственной среды, чтобы установить config.log_level = :info.
  4. Проверено, что Apache использует пользователя www-data ("etc / apache2 / envvars"):

    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data
    
  5. "etc / apache2 / mods-available / passenger.conf" имеет пользовательский набор по умолчанию для Пассажира:

    <IfModule mod_passenger.c>
      PassengerRoot /usr
      PassengerRuby /usr/bin/ruby
      PassengerDefaultUser www-data
    </IfModule>
    
  6. Владелец "config.ru" и "configs / environment.rb" является www-data

  7. Мой виртуальный хост настроен соответственно:

    DocumentRoot /var/www/rails/myapp/public
    RackBaseURI /
    RackEnv production
    PassengerMaxPoolSize 4
    

Уже прочитал и попробовал все исправления, предложенные в этих местах:

(Это все, что я могу вспомнить, пытаясь сейчас ...)

Некоторые мои настройки среды:

  • Ubuntu 11.10 работает на Amazon EC2
  • Apache 2.2.20
  • RVM 1.10.2
  • Ruby 1.9.3p0
  • Рельсы 3.1.3

1 Ответ

1 голос
/ 20 января 2012

Эта проблема теперь решена, хотя сама причина проблемы не совсем ясна.

У меня были некоторые странные проблемы с конфигурацией Apache & Passenger (также известный как ModRails).Существовали два модуля: один, который, казалось, поставлялся в комплекте с Apache (?) И один, который я получил через passenger-install-apache2-module.Когда я указал на предварительно установленную, у меня возникла эта проблема с журналированием.Когда я указал на тот, который был развернут с помощью passenger-install-apache2-module, у меня возникла совершенно другая проблема, в которой Пассажир мог аварийно завершить работу с segfault (см. Мой пост по ServerFault здесь .)

.Я полностью стер свой сервер и выполнил чистую установку всего из базовой Ubuntu AMI (запуск на Amazon EC2 сделал это достаточно просто.) После переустановки я запустил passenger-install-apache2-module и настроил Apache для загрузки развернутого им модуля.На этот раз модуль не вылетел, но появилась ошибка журнала.Я установил chmod 755 в корне моего приложения на Rails, убедился, что существует файл production.log и что у него есть как минимум chmod 0666 привилегии.И вуаля, проблема исчезла.

TL; DR Сделал новую установку, убедился, что я использовал последний модуль Passenger, и мои права доступа к файлам были установлены правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...