生产环境中使用Apache+Phusion Passenger部署Rails出错。

4

最近我一直在尝试将我的Ruby on Rails应用程序使用Apache和Passenger(不使用RVM)部署到生产环境中,但一直没有成功。当我在浏览器中打开时,会出现以下错误:

We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.

当我在终端输入tail /var/log/apache2/error.log时,会得到以下结果:

 /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb/ruby-lex.rb:230:in `catch'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb/ruby-lex.rb:230:in `each_top_level_statement'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb.rb:485:in `eval_input'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb.rb:395:in `block in start'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb.rb:394:in `catch'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/2.2.0/irb.rb:394:in `start'
  /home/gre_stag/.rbenv/versions/2.2.2/bin/irb:11:in `<main>'


[ 2015-08-07 12:33:23.9794 4936/7f1db502e700 age/Cor/Req/CheckoutSession.cpp:252 ]: [Client 1-1] Cannot checkout session because a spawning error occurred. The identifier of the error is cfaf3a49. Please see earlier logs for details about the error.

在 /etc/apache2/sites-available/depot.conf 文件中,我有以下代码:
<VirtualHost *:80>
    PassengerRuby /home/gre_stag/.rbenv/versions/2.2.2/bin/irb
    ServerName depot.local
    ServerAlias www.depot.local
    ServerAdmin webmaster@localhost
    PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
    DocumentRoot /home/gre_stag/RoR/workspace/depot/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /home/gre_stag/RoR/workspace/depot/public>
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

我不确定“PassengerRuby”的值是什么意思。这是我第一次使用Apache,希望能得到任何帮助。 更新: /var/log/apache2/error.log
home/gre_stag/RoR/workspace/Agile_web_dev/depot: An error occured while starting up the preloader.
  Error ID: 78043345
  Error details saved to: /tmp/passenger-error-zWC057.html
  Message from application: YAML syntax error occurred while parsing /home/gre_stag/RoR/workspace/Agile_web_dev/depot/config/database.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Error: (<unknown>): mapping values are not allowed in this context at line 25 column 11 (RuntimeError)
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/railties-4.2.1/lib/rails/application/configuration.rb:115:in `rescue in database_configuration'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/railties-4.2.1/lib/rails/application/configuration.rb:98:in `database_configuration'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/railtie.rb:117:in `block (2 levels) in <class:Railtie>'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/lazy_load_hooks.rb:44:in `each'
  /home/gre_stag/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'

gemifile:

source 'https://rubygems.org'

gem 'rails', '4.2.1'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bcrypt', '~> 3.1.7'
# Use Unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'sqlite3'

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end
group :production do
  gem 'mysql2'
end
end
2个回答

1
你应该使用 Ruby 二进制文件,而不是 irb。
PassengerRuby /home/gre_stag/.rbenv/versions/2.2.2/bin/irb 更改为 PassengerRuby /home/gre_stag/.rbenv/versions/2.2.2/bin/ruby

谢谢您的回答,我已经尝试了,但是它没有起作用。只有 tail /var/log/apache2/error.log 发生了变化:config.ru:1:in 'new' config.ru:1:in '<main>' /usr/share/passenger/helper-scripts/rack-preloader.rb:107:in 'eval' /usr/share/passenger/helper-scripts/rack-preloader.rb:107:in 'preload_app' /usr/share/passenger/helper-scripts/rack-preloader.rb:153:in '<module:App>' /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in '<module:PhusionPassenger>' /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in '<main>' - Gregory_ynwa
通过调用“bundle”检查您使用的宝石是否已全部安装。此外,如果您可以显示来自Apache日志文件的更多行,则会更有帮助。 - ecleel
我更新了我的帖子,包括Gemfile和Apache日志文件的错误。 - Gregory_ynwa
我在 .yaml 文件中遇到了一个错误,我进行了修复,但现在我收到了“应用程序接收到不完整的响应”的消息。 - Gregory_ynwa
1
我认为您错过了生成“secret_missing_key”的步骤。请参考此链接:https://dev59.com/714b5IYBdhLWcg3wYAf6。 - ecleel

0
问题是在"production"环境下缺少了"secret_key_base",我按照Demi Magus的指南here解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接