Пассажир + Апач + Рубин
После запуска
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":
Установите Apache:
sudo apt-get установить apache2
Установить рвм
\ curl -sSL https://get.rvm.io/ | bash -s стабильный
Установите пассажира через рубины:
жемчужина установить пассажира
Запустите установщик Phusion Passenger
пассажиро-установки-apache2-модуль
Создайте приложение в стойке, как это
Добавьте блок VirtualHost в /etc/apache2/sites-enabled/rack_app
Создайте /etc/apache2/mods-enabled/passenger.conf с помощью PassengerRoot, PassengerDefaultRuby
Создать /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