1.基本情况
按照 gorails 中的最新教程配置部署,https://gorails.com/deploy/ubuntu/18.04#nginx-passenger 服务器:阿里云 ubuntu18.04,nginx + passenger + rails5.2.2 + ruby2.6.1,postgresql 客户端:Mac,ruby2.6.1 + rails5.2.2 + postgresql ,用 capistrano 部署成功,没有报错。客户端本地能访问“Yay! You’re on Rails!”页面
2.问题
通过 ip 访问服务器,页面显示如下错误——“We're sorry, but something went wrong. The issue has been logged for investigation. Please try again later.”
3.诉求
希望知道从何入手排错,让 ip 访问能出来 rails 页面。
4.passenger 和 nginx 都正常启动
5.nginx/error.log日志如下
deploy@rails-server-02:~$ sudo less /var/log/nginx/error.log
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:291:in `block in require'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:257:in `load_dependency'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:291:in `require'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:378:in `block in require_or_load'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies/interlock.rb:14:in `block in loading'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/concurrency/share_lock.rb:151:in `exclusive'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies/interlock.rb:13:in `loading'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:37:in `load_interlock'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:356:in `require_or_load'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/active_support.rb:48:in `block in require_or_load'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/active_support.rb:16:in `allow_bootsnap_retry'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/active_support.rb:47:in `require_or_load'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:334:in `depend_on'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/active_support.rb:82:in `depend_on'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies.rb:246:in `require_dependency'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:478:in `block (2 levels) in eager_load!'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:477:in `each'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:477:in `block in eager_load!'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:475:in `each'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:475:in `eager_load!'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/engine.rb:356:in `eager_load!'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/application/finisher.rb:69:in `each'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/initializable.rb:32:in `instance_exec'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/initializable.rb:32:in `run'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `call'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
App 6137 output: /home/deploy/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/
App 6137 output: initializable.rb:60:in `run_initializers'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/railties-5.2.2.1/lib/rails/application.rb:361:in `initialize!'
App 6137 output: /home/deploy/sunapp/releases/20190322110922/config/environment.rb:5:in `<top (required)>'
App 6137 output: config.ru:3:in `require_relative'
App 6137 output: config.ru:3:in `block in <main>'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `instance_eval'
App 6137 output: /home/deploy/sunapp/shared/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `initialize'
App 6137 output: config.ru:1:in `new'
App 6137 output: config.ru:1:in `<main>'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:101:in `eval'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:101:in `preload_app'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:189:in `block in <module:App>'
App 6137 output: /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:380:in `run_block_and_record_step_progress'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:188:in `<module:App>'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
App 6137 output: /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'
[ E 2019-03-22 19:35:29.0967 5713/Tm age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /home/deploy/sunapp/current: The application encountered the following error: ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
Error ID: 39d94ccc
Error details saved to: /tmp/passenger-error-H9rG5G.html
[ E 2019-03-22 19:35:29.1032 5713/T9 age/Cor/Con/CheckoutSession.cpp:276 ]: [Client 1-3] Cannot checkout session because a spawning error occurred. The identifier of the error is 39d94ccc. Please see earlier logs for details about the error.
(END)
6.Gemfile:
source 'https://gems.ruby-china.com'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.1'
gem 'bundler', '1.17.3'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.2'
# Use postgresql as the database for Active Record
gem 'pg'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
# Easy installation and use of chromedriver to run system tests with Chrome
gem 'chromedriver-helper'
end
gem 'capistrano', '~> 3.11'
gem 'capistrano-rails', '~> 1.4'
gem 'capistrano-passenger', '~> 0.2.0'
gem 'capistrano-rbenv', '~> 2.1', '>= 2.1.4'
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
7.database.yml
# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
# gem install pg
# On OS X with Homebrew:
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# gem install pg
# Choose the win32 build.
# Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: sunapp_development
# The specified database role being used to connect to postgres.
# To create additional roles in postgres see `$ createuser --help`.
# When left blank, postgres will use the default role. This is
# the same name as the operating system user that initialized the database.
username: zeke
# The password associated with the postgres role (username).
# password:
# Connect on a TCP socket. Omitted by default since the client uses a
# domain socket that doesn't need configuration. Windows does not have
# domain sockets, so uncomment these lines.
#host: localhost
# The TCP port the server listens on. Defaults to 5432.
# If your server runs on a different port number, change accordingly.
#port: 5432
# Schema search path. The server defaults to $user,public
#schema_search_path: myapp,sharedapp,public
# Minimum log levels, in increasing order:
# debug5, debug4, debug3, debug2, debug1,
# log, notice, warning, error, fatal, and panic
# Defaults to warning.
#min_messages: notice
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: sunapp_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: sunapp_production
username: deploy
password: 123456
进展:
服务器端/.rbenv-vars 中的 SECRET_KEY_BASE 配置错了,我放上的是教程里的,后来看了下视频,原来是要开发机生成再粘贴到服务端。 方法是:在 mac 下的 sunapp 下执行 bundle exec rails secret
/home/deploy/myapp/.rbenv-vars nano .rbenv-vars
现在出来这个页面了