我對Rails應用程序比較陌生,但我有一個本地工作的Rails應用程序,我試圖部署到共享在DreamHost上託管服務器。我已經關注了所有wiki和stackoverflow的問題,但是對此的回答仍然無法解決。當在Rails應用程序中將Rails應用程序部署到Dreamhost時出現'意外的文件結束'
我使用Capistrano進行部署,並且已經制定出所有問題以便成功部署工作。然而,當我去訪問任何不是網站上的靜態資源,我招呼着一個「內部服務器錯誤」,並從客運此錯誤:
Internal server error
Passenger encountered the following error:
The application spawner server exited unexpectedly: Unexpected end-of-file detected.
Exception class:
PhusionPassenger::Rack::ApplicationSpawner::Error
Backtrace:
# File Line Location
0 /dh/passenger/lib/phusion_passenger/rack/application_spawner.rb 134 in `start'
1 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 253 in `spawn_rack_application'
2 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 132 in `lookup_or_add'
3 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 246 in `spawn_rack_application'
4 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 82 in `synchronize'
5 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 79 in `synchronize'
6 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 244 in `spawn_rack_application'
7 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 137 in `spawn_application'
8 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 275 in `handle_spawn_application'
9 /dh/passenger/lib/phusion_passenger/abstract_server.rb 357 in `__send__'
10 /dh/passenger/lib/phusion_passenger/abstract_server.rb 357 in `server_main_loop'
11 /dh/passenger/lib/phusion_passenger/abstract_server.rb 206 in `start_synchronously'
12 /dh/passenger/helper-scripts/passenger-spawn-server 99
我可以SSH到服務器和手動運行'rails s'來獲得運行在3000端口上的服務器,並且所有工作都很好。
這裏是我的environment.rb:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
LoLItemDb::Application.initialize!
# potential fix for Dreamhost shared resources
# from: http://stackoverflow.com/a/3214748/189292
require 'rubygems'
require 'rubygems/gem_runner'
ENV['GEM_PATH'] = '/home/gravitydev/ruby/gems:/usr/lib/ruby/gems/1.8'
Gem.clear_paths
deploy.rb:
user = "XXXXXXXXX"
domain = "XXXXXXXXX.com"
database = "mysql.XXXXXXXXX.com"
set :application, "XXXXXXXXX"
set :rails_env, "production"
set :use_sudo, false
# set rake to be verbose for capistrano
# http://stackoverflow.com/questions/7071126/how-can-i-run-rake-with-trace-within-capistrano
set :rake, "#{rake} --trace"
# here we set a custom paths to commands since on Dreamhost
# servers the user path is a bit different
set :bundle_cmd, "/home/#{user}/.gems/bin/bundle"
require 'bundler/capistrano'
# redirect path for whenever, and use bundler to execute it
set :whenever_command, "/home/#{user}/.gems/bin/bundle exec whenever"
require 'whenever/capistrano'
# configure credentials
set :user, user
set :password, "XXXXXXXXX"
# configure git
default_run_options[:pty] = true # Must be set for the password prompt
# from git to work
set :repository, "[email protected]:XXXXXXXXX/XXXXXXXXX.git" # Your clone URL
set :deploy_to, "/home/#{user}/#{domain}"
set :scm, "git"
set :scm_passphrase, "XXXXXXXXX" # The deploy user's password
set :scm_verbose, true
set :git_shallow_clone, 1
# configure deploy location
set :deploy_to, "/home/#{user}/#{domain}"
# setup web server
server domain, :app, :web, :db, :primary => true
#server domain, :app, :web
#role :db, database, :primary => true
# for SSH
# see: http://wiki.dreamhost.com/Capistrano
set :chmod755, "app config db lib public vendor script script/* public/disp*"
# if you want to clean up old releases on each deploy uncomment this:
after "deploy:restart", "deploy:cleanup"
# run the all "LoL" tasks to refresh the database
#after "deploy:restart", "lol:all"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# for Passenger
namespace :deploy do
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
和Gemfile中: 源 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'bundler'
gem 'rake'
gem 'sqlite3'
gem 'haml'
gem 'nokogiri'
gem 'json'
gem 'whenever'
gem 'execjs'
gem 'therubyracer', :platforms => :ruby
gem 'mysql2'
gem 'rack'
gem 'RedCloth', '4.2.9'
gem 'jquery-rails'
gem 'capistrano'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
最帖子似乎表明寶石的路徑是不正確的,但我已經通過搜索找到了我可以找到的每個配置更改Google和來自Dreamhost的文檔。任何幫助是極大的讚賞!
這使我在,即使它是不是最終答案的正確方向。請參閱http://stackoverflow.com/a/11385960/189292我做了什麼來解決這個問題。謝謝回覆! – gdavis 2012-07-08 19:50:35