Пассажир + Апач + Рубин

После запуска

sudo service apache2 restart

Я имею

[Thu Dec 04 15:30:37 2014] [warn] module passenger_module is already loaded, skipping
Syntax error on line 274 of /etc/apache2/apache2.conf:
Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in          the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

В конце apache.conf у меня есть: (эти строки я получил после passenger-install-apache2-module)

LoadModule passenger_module /home/ruslan/.rvm/gems/r$
<IfModule mod_passenger.c>
 PassengerRoot /home/ruslan/.rvm/gems/ruby-2.1.5/gem$
 PassengerDefaultRuby /home/ruslan/.rvm/gems/ruby-2.$
</IfModule>

В /etc/apache2/mods-available/passenger.conf:

<VirtualHost *:80>
    ServerName www.rackexample.com
    DocumentRoot /home/ruslan/blog/public
    <Directory /home/ruslan/blog/public>
        Allow from all
        Options -MultiViews
        # Uncomment this if you're on Apache >= 2.4:
        #Require all granted
    </Directory>
</VirtualHost>

В /etc/apache2/sites-enabled/mysite у меня тоже самое:

<VirtualHost *:80>
    ServerName www.rackexample.com
    DocumentRoot /home/ruslan/blog/public
    <Directory /home/ruslan/blog/public>
        Allow from all
        Options -MultiViews
        # Uncomment this if you're on Apache >= 2.4:
        #Require all granted
    </Directory>
</VirtualHost>

Кроме того, если я открою URI у меня есть:

Внутренняя ошибка сервера

Сервер обнаружил внутреннюю ошибку или неверную конфигурацию и не смог выполнить ваш запрос.

Пожалуйста, свяжитесь с администратором сервера, [адрес не указан] и сообщите им время, когда произошла ошибка, и все, что вы могли сделать, что могло привести к ошибке.

Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера.

Сервер Apache/2.2.22 (Debian) на порту 146.148.7.236, порт 80

В чем может быть проблема? (Я использую Debian на консоли разработчика Google, если это важно)

Я также заметил ту же проблему здесь, но я не могу найти разницу.

UPD: я удалил строку в конце apache.conf, которая содержит

LoadModule passenger_module

И теперь у меня есть эта ошибка:

ruslan@olga-blog:~$ sudo service apache2 restart
Syntax error on line 273 of /etc/apache2/apache2.conf:
Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

Итак, я вижу в конце журнала Apache с хвостом -f -n 100 /var/log/apache2/error.log ( Fir 05 - это сегодня, поэтому это последние журналы):

[Fri Dec 05 03:00:07 2014] [error] [client 180.153.195.33] Premature end of script headers:
[Fri Dec 05 03:20:20 2014] [error] [client 76.14.162.37] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /tmUnblock.cgi
App 10140 stderr: [ 2014-12-05 03:46:21.5488 10221/0x00000000e1d2f0(Worker 1) utils.rb:84 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 10221, thread 0x00000000e1d2f0(Worker 1)):
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:462:in `validate_secret_key_config!'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:195:in `env_config'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/engine.rb:510:in `call'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:144:in `call'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler.rb:455:in `block (3 levels) in start_threads'
[Fri Dec 05 03:46:21 2014] [error] [client 180.153.196.169] Premature end of script headers:
App 10140 stderr: [ 2014-12-05 04:26:21.9010 10221/0x00000000e1d2f0(Worker 1) utils.rb:84 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 10221, thread 0x00000000e1d2f0(Worker 1)):
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:462:in `validate_secret_key_config!'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:195:in `env_config'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/engine.rb:510:in `call'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/application.rb:144:in `call'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 10140 stderr: from /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/lib/phusion_passenger/request_handler.rb:455:in `block (3 levels) in start_threads'
[Fri Dec 05 04:26:21 2014] [error] [client 171.13.14.23] Premature end of script headers:

UPD2: я добавил секретный ключ в my_app/config/secrets.yml

Удалить файл журнала и создать его

sudo rm -rf /var/log/apache2/error.log
sudo touch /var/log/apache2/error.log

Перезапустите Apache и снова получите эту ошибку:

ruslan@olga-blog:~/blog$ sudo service apache2 restart
Syntax error on line 273 of /etc/apache2/apache2.conf:
Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

И журнал пуст с

tail -f -n 100 /var/log/apache2/error.log

UPD3: ПОПРОБУЙТЕ: чистка способностей sudo libapache2-mod-passenger
sudo apt-get установить rubygems необходимая сборка apache2-prefork-dev libapr1-dev libssl-dev zlib1g-dev
sudo gem установить пассажир
пассажиро-установки-apache2-модуль
Вставьте вывод в конец apache2.conf (предыдущие строки о пассажире выше удалены)

LoadModule passenger_module /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53/buildout/apache2/mod$
   <IfModule mod_passenger.c>
     PassengerRoot /home/ruslan/.rvm/gems/ruby-2.1.5/gems/passenger-4.0.53
     PassengerDefaultRuby /home/ruslan/.rvm/gems/ruby-2.1.5/wrappers/ruby
   </IfModule>

Перезапустил apache снова и получил сообщение apache

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Зачем?

UPD4

sudo nano /etc/apache2/mods-available/passenger.conf

выглядеть пустым, почему?

UPD5:

apt-get install libapache2-mod-passenger

удалите строку LoadModule из apache.conf, перезапустите apache и сохраните

ruslan@olga-blog:~/blog$ sudo service apache2 restart

Syntax error on line 273 of /etc/apache2/apache2.conf:
Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

UPD6: команда sudo passenger-status показывает:

Version : 4.0.53
Date    : Fri Dec 05 10:34:32 +0000 2014
Instance: 1021
----------- General information -----------
Max pool size : 6
Processes     : 0
Requests in top-level queue : 0

----------- Application groups -----------
ruslan@olga-blog:~$ apachectl -t -D DUMP_MODULES|grep -i passenger
-bash: apachectl: command not found
ruslan@olga-blog:~$ apachectl configtest
-bash: apachectl: command not found

2 ответа

Решение

Я переустанавливаю все снова (пассажир только через рубины) и все работает нормально. Итак, это мое "как установить пассажир + apache + ruby":

  1. Установите Apache:

    sudo apt-get установить apache2

  2. Установить рвм

    \ curl -sSL https://get.rvm.io/ | bash -s стабильный

  3. Установите пассажира через рубины:

    жемчужина установить пассажира

  4. Запустите установщик Phusion Passenger

    пассажиро-установки-apache2-модуль

  5. Создайте приложение в стойке, как это

    в примере пассажирского документа

  6. Добавьте блок VirtualHost в /etc/apache2/sites-enabled/rack_app

  7. Создайте /etc/apache2/mods-enabled/passenger.conf с помощью PassengerRoot, PassengerDefaultRuby

  8. Создать /etc/apache2/mods-enabled/passenger.load с помощью блока LoadModule

    sudo a2ensite rack_app sudo a2enmod пассажирский sudo сервис apache2 перезагрузка

Повеселись!

Для получения более подробной информации смотрите комментарии в /etc/apache2/apache2.conf и документах Passenger Apache.

Я собираюсь сделать предположение на этот, я думаю, что проблема может быть здесь:

LoadModule passenger_module /home/ruslan/.rvm/gems/r$
<IfModule mod_passenger.c>
    PassengerRoot /home/ruslan/.rvm/gems/ruby-2.1.5/gem$
    PassengerDefaultRuby /home/ruslan/.rvm/gems/ruby-2.$
</IfModule>

В моем /etc/apache2/httpd.conf Я имею:

LoadModule passenger_module /Users/martin/.rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/passenger-4.0.21/buildout/apache2/mod_passenger.so
PassengerRoot /Users/martin/.rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/passenger-4.0.21
PassengerDefaultRuby /Users/martin/.rbenv/versions/1.8.7-p374/bin/ruby

$ в ваших строках будет либо потому, что ваше окно терминала недостаточно широкое, поэтому оно дает вам знать, что текст был усечен (поэтому вы можете иметь правильные настройки, но просто не скопировать их правильно - измените размер окна терминала или прокрутите вправо, чтобы проверить) или так было, когда вы запустили установщик пассажира apache и пошли копировать усеченный текст, а не полные строки, я рекомендую повторно запустить установщик мода apache и убедиться, что вы правильно захватили вывод и попробуйте это.

Надеюсь, что это так, и тогда это легко исправить.

Обновить

DocumentRoot "/Users/martin/Desktop/app_name/public"
<Directory "/Users/martin/Desktop/app_name/public">
    RailsEnv development
    Options -MultiViews
    AllowOverride all
    Allow from all
</Directory>

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

Некоторые команды, которые могут помочь при отладке:

apachectl configtest
cat /var/log/apache2/error_log

sudo passenger-status
apachectl -t -D DUMP_MODULES|grep -i passenger
Другие вопросы по тегам