使用nginx,passenger和capistrano部署Rails应用程序

我正在部署我的第一个rails应用程序。 我这样做有些麻烦。 我将描述我到目前为止所做的事情。

1)我通过gorails.com正确配置了所有内容

2)我正在尝试将其部署在Digital Ocean上

3)我进行了cap deploy production ,最终结果成功,中间有一些失败。

4)我启动了nginx服务器

5)在我的浏览器中它给了我500错误。

6)我检查了我的production.log ,它显示了它运行的所有迁移和种子。 它完美地创建了表格(正如我在我的数据库中检查过的那样)。

7)我检查了nginx error.log ,结果显示index.html缺失。

8)所以为了检查,我在公共目录中添加了index.html文件,浏览器正确显示了内容。

9)但是我的登陆页面是家庭控制器中的index.html.erb,所以在路径文件中我做了一些修改但是浏览器的输出没有变化。

10)我注意到error.log和production.log没有立即更新。 我不知道为什么。

11)我需要帮助让nginx显示我的index.html.erb文件并将其与rails app连接。 数据库配置正确。

12)我的nginx配置文件是:

 server { listen 80 default_server; server_name digital_ocean_ip; passenger_enabled on; rails_env production; root /home/myapp/myapp/current/public; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 

这里我的用户名和我的应用程序名称相同(/ myapp / myapp)

13)我的routes.rb文件是:

 Rails.application.routes.draw do root "public#index" get 'access/logout' get '/signup' => "users#signup" get '/register' => "users#signup" get '/login' => "access#login" get '/' => "home#index" resources :users do member do get :confirm_email end collection do post :search end end resources :books do collection do get :recent get :academic get :novels get :preparation end end resources :password_resets match '/users/show' => 'users#books', :via=> :get match ':controller(/:action(/:id))', :via => [:get,:post] get '*path' => redirect('404') end 

14)我的deploy.rb文件是:

 lock '3.4.0' set :application, 'myapp' set :repo_url, 'git@github.com:user_name/myapp.git' set :deploy_to, '/home/myapp/myapp' role :app, %w{Digitalocean_ip} role :web, %w{Digitalocean_ip} role :db, %w{Digitalocean_ip} set :linked_files, %w{config/database.yml} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} set :linked_dirs, fetch(:linked_dirs) + %w{public/uploads} set :assets_dependencies, %w(app/assets lib/assets vendor/assets Gemfile config/routes.rb) namespace :deploy do desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do execute :touch, release_path.join('tmp/restart.txt') end end desc 'Runs rake db:seed' task :seed => [:set_rails_env] do on primary fetch(:migration_role) do within release_path do with rails_env: fetch(:rails_env) do execute :rake, "db:seed" end end end end after :publishing, 'deploy:restart' after :finishing, 'deploy:cleanup' end 

15)我的production.rb文件是:

 set :stage, :production server 'Digitalocean_ip', user: 'myapp', roles: %w{web app db} 

16)这些都是我的配置文件。 请告诉我哪里出错了

提前致谢!