使用Nginx,Passenger和Capistrano部署Rails应用

问题描述 投票:0回答:0

我正在部署我的第一个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应用程序连接时,我需要帮助。 数据库配置正确。

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, '[email protected]: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)这些都是我的配置文件。 请告诉我哪里出了问题

提前致谢!

ruby-on-rails nginx capistrano passenger digital-ocean
© www.soinside.com 2019 - 2024. All rights reserved.