2014-10-15 1 views
0

그래, 비슷한 문제에 관한 게시물이 몇 개 있다는 것을 알고 있지만 2/3 일 동안이 문제를 해결하기 위해 노력했으며 단서가 없습니다. 나는이 튜토리얼을 사용하여 Rails 3.2.8에서 응용 프로그램을 개발하고이를 디지털 오션 서버에 배포했다. https://gorails.com/deploy/ubuntu/12.04 Nginx/Passenger/Capistrano의 레일 앱 : 자산이 작동하지 않습니다.

Nginx 및 Passenger가 설치된 서버에 Capistrano 3.1.0으로 배치하는 작업이 포함된다. Ruby는 rvm의 관리자입니다.

어떤 일이 : -되지 않는 주요 JS에 의해 propably 인한 작동하지 않는 경로를 (삭제/파괴 - 를로드하지 JS - CSS는 application.css 제외하고, (작업이 파일을 코딩 기본적인 CSS) 를로드하지 로드) - 응용 프로그램은 개발 환경에서 잘 작동

나는 시도했다 : - 다음, 개발 환경에 미리 컴파일 자산 생산 로 밀어 - ssh를 으로 연결, 프로덕션 환경에 자산을 사전 컴파일 - nginx를 의 여러 설정 옵션을 시도 - - production.rb 의 여러 설정 옵션을 시도 - 자산 생성하고 후/현재/공공에 있는지 검사를 다시 시작의 nginx : 각

을 시도 sudo service nginx restart 후 나는 것 같아요 구성 문제가 될 수는 있지만 혼자서 발견 할 가능성은 매우 낮습니다. (이것은 내가 직접 배포 한 첫 번째 응용 프로그램이므로) 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

설정/환경/production.rb :

config.serve_static_assets = false 
    config.assets.compress = true 
    config.assets.compile = false 
    config.assets.digest = true 

    config.assets.precompile += ['grid.css'] 
    config.assets.precompile += ['anything-slider.css'] 
    config.assets.precompile += ['nivo-slider.css'] 
    config.assets.precompile += ['jPlayer.css'] 
    config.assets.precompile += ['lightbox.css'] 
    config.assets.precompile += ['reset.css'] 
    config.assets.precompile += ['anything-slider.js'] 
    config.assets.precompile += ['jplayer.playlist.min.js'] 
    config.assets.precompile += ['jquery-1.11.0.min.js'] 
    config.assets.precompile += ['jquery-ui.js'] 
    config.assets.precompile += ['jquery.jplayer.min.js'] 
    config.assets.precompile += ['jquery.js'] 
    config.assets.precompile += ['jquery.mousewheel.js'] 
    config.assets.precompile += ['jquery.nivo.slider.pack.js'] 
    config.assets.precompile += ['lightbox.min.js'] 
    config.assets.precompile += ['nivo-slider.js'] 
    config.assets.precompile += ['populate_jplayer.js'] 
    config.assets.precompile += ['quickstand.js'] 
    config.assets.precompile += ['script.js'] 
    config.assets.precompile += ['tooltipsy.js'] 

구성/application.rb :

config.assets.enabled = true 
config.assets.initialize_on_precompile = false 

Capfile :

# Load DSL and Setup Up Stages 
require 'capistrano/setup' 

# Includes default deployment tasks 
require 'capistrano/deploy' 

# Includes tasks from other gems included in your Gemfile 
# 
require 'capistrano/bundler' 
require 'capistrano/rails' 
# require 'capistrano/rails/assets' 
# require 'capistrano/rails/migrations' 

require 'capistrano/rvm' 
set :rvm_type, :user 
set :rvm_ruby_version, '2.1.3' 

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined. 
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } 
을/etc/nginx를/사이트 사용/기본

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

     server_name porinstinto.com; 
     passenger_enabled on; 
     rails_env production; 
     root   /home/deploy/porinstinto/current/public; 

     location ~* ^/assets/ { 
     # Per RFC2616 - 1 year maximum expiry 
     # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 
      expires 1y; 
      add_header Cache-Control public; 

     # Some browsers still send conditional-GET requests if there's a 
     # Last-Modified header or an ETag header even if they haven't 
     # reached the expiry date sent in the Expires header. 
      add_header Last-Modified ""; 
      add_header ETag ""; 
      break; 
     } 

     # redirect server error pages to the static page /50x.html 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
} 

application.js

// 
//= require jquery 
//= require jquery_ujs 
//= require anything-slider 
//= require jplayer.playlist.min 
//= require jquery-ui 
//= require jquery.jplayer.min 
//= require jquery.mousewheel 
//= require jquery.nivo.slider.pack 
//= require lightbox.min 
//= require nivo-slider 
//= require populate_jplayer 
//= require quickstand 
//= require script 
//= require tooltipsy 
//= require_tree . 

application.css

* 
*= require anything-slider 
*= require grid 
*= require jPlayer 
*= require lightbox 
*= require nivo-slider 
*= require reset 
*= require_self 
*= require_tree . 
*/ 

UPDATE : I 디스코 Capistrano 프리 컴파일이 비어있는 응용 프로그램 .css 및 .js 파일을 생성하고 있습니다. 나는 개발시 자산을 미리 컴파일하고 업로드하려고 시도했지만 Capistrano가 배포 후에 다시 사전 컴파일 된 것으로 보이고 자산이 빈 파일에 겹쳐 쓰여진 것처럼 보입니다.

단서가 있습니까?

+0

Nginx 로그를 확인하십시오. 자산에 대한 요청을 볼 수 있습니까? 그 요청은 정확합니까 (철자법, 경로)? Nginx가 404를 돌려주고 있습니까? – Substantial

+0

/var/log/nginx/error.log가 비어 있습니다. tail -f log/production.log가 자산을 요청하지 않는 것으로 보입니다 ... –

+0

213.27.137.58 at 2014-10-15 07:07:41 -0400 처리 중 EntriesController # index 처리 중 HTML로 표현 렌더링 된 레이아웃/_next_concert.html.haml (1.0ms) 렌더링 된 레이아웃/_social_network.html.haml (2.1ms) . . . 렌더링 된 레이아웃/_notices.html.haml (0.3ms) 렌더링 된 레이아웃/_copyright.html.haml (1.0ms) 59 초에 200 OK 완료 (조회수 : 45.2ms | ActiveRecord : 5.8ms) ' –

답변

0

나는 결국이 문제를 신중하게 연구하고이를 바탕으로이 문제를 해결했습니다. question.

항상 Capistrano를 사용하여 앱을 배포 할 때 애셋을 컴파일 할 때 RVM에 간접적 인 참조가있을 때이를 조사하기 시작했습니다. 그래서, 나는 그것이 수있는 몇 가지 루비 버전 충돌 무뢰한

$ rvm use 
Using /home/deploy/.rvm/gems/ruby-2.1.3 

: 프로덕션 서버에서 RVM에 의해 사용

$ ruby -v 
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux] 

찾을 루비 버전 :

개발 환경의 루비 버전을 발견하셨습니까? RVM의 Chaged 루비 버전 :

$ rvm install 1.9.3 
$ rvm use 1.9.3 
$ rvm --default 1.9.3 
그런 다음 새 설정을 사용하여 자산을 모든 보석을 설치하고 미리 컴파일 할 필요

:

$ bundle Install 
$ RAILS_ENV=production bundle exec rake assets:precompile 

자산 파일 application.js 및 application.css 성공적으로 모두와 함께 만들어 콘텐츠 및 웹 응용 프로그램을 다시 시작할 때 모두 잘 작동했습니다!

관련 문제