使用Passenger/Capistrano部署到Nginx服务器后未显示的图像

Dau*_*ell 1 capistrano ruby-on-rails passenger nginx asset-pipeline

嗨我正在将我的第一个Rails应用程序部署到Ubuntu 16服务器上,Capistrano除了图像没有在生产环境中显示外,一切顺利.

在生产服务器上,映像位于此路径中: /myapp/current/public/assets

但是,如果我在浏览器中看到这个,我的破碎图像链接给了我这个(见图片),这是标题图像的断开链接.

破碎的图像

奇怪的是,有一个.svg文件在/myapp/current/public/assets浏览器中完美显示,下图是显示的路径 svg文件

这是我的 Capfile

# Load DSL and set up stages
 require "capistrano/setup"

# Include default deployment tasks
require "capistrano/deploy"


set :rbenv_type, :user # or :system, depends on your rbenv setup
set :rbenv_ruby, '2.3.1'


require 'capistrano/rbenv'

require 'capistrano/bundler'
require 'capistrano/rails'


# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Run Code Online (Sandbox Code Playgroud)

这是 config/deploy.rb

# config valid only for current version of Capistrano
lock '3.6.1'

set :application, 'myapp'
set :repo_url, 'git@github.com:DadiHall/myapp.git'


 # Default deploy_to directory is /var/www/my_app_name
 set :deploy_to, '/home/deploy/myapp'


 set :linked_files, %w{config/database.yml config/secrets.yml}
 set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

 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

 after :publishing, 'deploy:restart'
 after :finishing, 'deploy:cleanup'
Run Code Online (Sandbox Code Playgroud)

结束

这里是 environments/production.rb

Rails.application.configure do

config.cache_classes = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier


 # Do not fallback to assets pipeline if a precompiled asset is missed.
 config.assets.compile = false

 config.assets.digest = true
 config.assets.initialize_on_precompile = false

 # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb


 config.log_level = :debug

 config.i18n.fallbacks = true

 config.active_support.deprecation = :notify

 config.log_formatter = ::Logger::Formatter.new

 config.active_record.dump_schema_after_migration = false

Braintree::Configuration.environment = :sandbox
Braintree::Configuration.merchant_id = ENV['merchant_id']
Braintree::Configuration.public_key = ENV['public_key']
Braintree::Configuration.private_key = ENV['private_key']

end
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/sites-enabled/default我有以下几行

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name mydomain.com;
    passenger_enabled on;
    rails_env    production;
    root         /home/deploy/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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是nginx错误日志

 [ 2016-09-28 06:25:02.4500 1594/7f900ee89700 age/Sha/ApiServerUtils.h:794 ]:  Log file reopened.
 [ 2016-09-28 09:45:43.7508 1597/7f2326502700 age/Cor/CoreMain.cpp:819 ]:   Checking whether to disconnect long-running connections for process 1978,  application /home/deploy/hlinreykdal/current/public (production)
App 21337 stdout: 
App 21405 stdout: 
[ 2016-09-28 10:30:31.0631 1597/7f2326502700 age/Cor/CoreMain.cpp:819 ]:  Checking whether to disconnect long-running connections for process 21405,  application /home/deploy/hlinreykdal/current/public (production)
App 23240 stdout: 
App 23308 stdout: 
[ 2016-09-28 10:41:40.1769 1597/7f2326502700 age/Cor/CoreMain.cpp:819 ]: Checking whether to disconnect long-running connections for process 23308, application /home/deploy/hlinreykdal/current/public (production)
App 24329 stdout: 
App 24397 stdout: 
Run Code Online (Sandbox Code Playgroud)

我试过bundle exec rake assets precompile没有运气.

我已经nginx一次又一次地部署并重新启动,没有运气

我已经尝试了几乎所有关于堆栈溢出的类似问题的答案,但似乎没有任何工作.

我在这里错过了什么吗?

我确定这个问题与资产管道有关,但我不确定如何修复它.

任何人都可以看看这个并告诉我.

提前致谢

Dau*_*ell 7

好吧,如果有人遇到了类似的问题,你可能要检查出config.assets.compile在我来说,我只有到config /环境/ production.rb改变 config.assets.compilefalse,我改成了true现在一切工作....这只是我花了两几天来弄清楚:D