Images non affichées après le déploiement avec Passenger / Capistrano vers le serveur Nginx

Bonjour, je déploie ma première application Rails sur le serveur Ubuntu 16 à l’aide de Capistrano tout s’est bien passé, sauf que les images ne s’affichent pas dans l’environnement de production.

Sur le serveur de production, les images se trouvent dans ce chemin: /myapp/current/public/assets

Mais si je regarde cela dans le navigateur, mes liens avec les images brisées me le permettent (voir image), il s’agit d’un lien cassé pour l’image de l’en-tête.

images cassées

la chose étrange est qu’il y a un fichier .svg dans /myapp/current/public/assets qui apparaît parfaitement dans le navigateur, dans l’image ci-dessous est le chemin affiché fichier svg

c’est mon 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 } 

Ceci est le config/deploy.rb

 # config valid only for current version of Capistrano lock '3.6.1' set :application, 'myapp' set :repo_url, '[email protected]: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' 

fin

Voici les 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 precomstackd asset is missed. config.assets.comstack = false config.assets.digest = true config.assets.initialize_on_precomstack = false # `config.assets.precomstack` 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 

Dans le /etc/nginx/sites-enabled/default j’ai les lignes suivantes

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

c’est le journal d’erreur 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: 

J’ai essayé de bundle exec rake assets precomstack avec un peu de chance.

J’ai déployé et redémarré nginx encore et encore, sans aucune chance

J’ai essayé presque toutes les réponses à des questions similaires sur le débordement de stack, mais rien ne semble fonctionner.

Est-ce que j’ai râté quelque chose?

Je suis sûr que ce problème a quelque chose à voir avec le pipeline des actifs, mais je ne sais pas comment le résoudre.

Quelqu’un peut-il s’il vous plaît jeter un oeil à cela et me conseiller.

Merci d’avance

Ok, si quelqu’un rencontre un problème similaire, vous pouvez consulter le config.assets.comstack Dans mon cas, je n’ai eu qu’à changer le config.assets.comstack config / config.assets.comstack / production.rb config.assets.comstack de false , je l’ai changé en true et maintenant tout fonctionnait …. Il ne m’a fallu que deux jours pour le comprendre: D

Notez que public/assets est l’endroit où le pipeline d’actifs met ses affaires. Si cela concerne les actifs statiques, je les placerais dans app/assets/images pour utiliser le pipeline de ressources ou choisir un autre nom de répertoire.

J’utilisais la balise img de html pour servir des images comme suit

AdminLTE Logo

Il suffisait de changer pour suivre et cela a fonctionné.

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

À votre santé.