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

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

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

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

破碎的图像

奇怪的是, /myapp/current/public/assets中有一个.svg文件,它在浏览器中完美显示,在下图中是显示的路径 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 } 

这是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' 

结束

这是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 

/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; } } 

这是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: 

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

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

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

我在这里错过了什么吗?

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

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

提前致谢

好的,如果有人遇到类似的问题你可能想要查看config.assets.compile在我的情况下,我只需要从false更改config / environments / production.rb config.assets.compile ,我将其更改为true现在一切正常……我只花了两天时间搞清楚:D

请注意, public/assets是资产管道放置其内容的地方。 如果这是针对静态资产的,我会将它们放在app/assets/images中以便使用资产管道,或者选择其他目录名称。

我正在使用html的img标签来提供图像资源,如下所示

AdminLTE Logo

只需将其改为以下即可。

<%= image_tag 'AdminLTELogo.png' , alt: "AdminLTE Logo", class: "brand-image im %>

干杯。