将Passenger/Capistrano部署到Nginx服务器后,未显示图像 [英] Images not showing after deployment with Passenger/Capistrano to Nginx server

查看:101
本文介绍了将Passenger/Capistrano部署到Nginx服务器后,未显示图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hi I'm deploying my first Rails app to Ubuntu 16 server using Capistrano everything went smooth except the images are not showing in the production environment.

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

On the production server the images are located in this path : /myapp/current/public/assets

但是,如果我在浏览器中看到它,我的损坏的图像链接就会给我这个(见图),这是标题图像的损坏的链接.

But if I look at this in the browser my broken images links gives me this(see picture), this is a broken link for the header image.

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

the strange thing is that there is a .svgfile in the /myapp/current/public/assets which is showing up perfectly in the browser, In the picture below is the path shown

这是我的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错误日志

this is the nginx Error log

 [ 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时没有任何运气.

I have tried bundle exec rake assets precompile with out any luck.

我已经部署并重新启动nginx,没有任何运气

I have deployed and restarted nginx again and again, with out any luck

在堆栈溢出的情况下,我几乎尝试过对类似问题的所有答案,但似乎没有任何效果.

I have tried almost every answer to similar questions here on stack overflow, but nothing seems to work.

我在这里想念东西吗?

我确定这个问题与资产管道有关,但是我不确定如何解决.

I'm sure this problem has something to do with the assets pipeline, but I'm not sure how to fix it.

任何人都可以看看这个并给我建议.

Can anyone please take a look at this and advise me.

预先感谢

推荐答案

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

Ok if anyone is experiencing a similar problem you might want to check out the config.assets.compile In my case I only had to change the config/environments/production.rb config.assets.compile from false, I changed it to true and now everything worked.... It only took me two days to figure it out :D

这篇关于将Passenger/Capistrano部署到Nginx服务器后,未显示图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆