2013-09-12 4 views
0

Я пытаюсь развернуть приложение rails4 (ruby-2.0.0) на свой сервер. Почти все мои активы предварительно скомпилированы и обслуживаются nginx.рельсы откат к конвейеру активов

Один js.erb генерирует динамический html-список, получая модели из моей базы данных. Этот актив нельзя предварительно скомпилировать, поскольку он должен оставаться динамическим.

Я за исключением этого актива от asset.precompile и включил

config.assets.compile = true 

падать обратно в трубопровод активов, для этого одного актива.

В моем местном производстве env все работает, но на моем сервере (nginx, unicorn) откат материнской линии не будет работать. Я получить простое сообщение об ошибке 404

журнал ошибок Nginx:

2013/09/13 08:54:54 [error] 27442#0: *58 open() "/XXX/current/public/assets/rails_admin/rails_admin_switchable-051203ae1d7aca2c08092e5c92bcdf15.js" failed (2: No such file or directory), client: XXX, server: , request: "GET /assets/rails_admin/rails_admin_switchable-051203ae1d7aca2c08092e5c92bcdf15.js HTTP/1.1", host: "XXX", referrer: "http://XXX/admin" 

единорога и рельсы не показывают каких-либо ошибок.

Любые идеи, как я могу это решить?

лучше, Franz

+0

Не могли бы вы отправить сообщения об ошибках, которые вы получаете? – Jesper

+0

Я добавил журнал ошибок – user2772200

+0

Вы уверены, что запрос даже достиг Rails? Мне кажется, что nginx пытается обслуживать статический актив и не находит его. – Jesper

ответ

1

Похоже, ваше определение Nginx сервер не правильно интегрирован с сервером приложений. Он должен быть настроен для передачи запроса, который не соответствует физическому файлу на сервере приложений.

Вот стандартная конфигурация для приложения рельсов, живущих в /app с Nginx через интеграцию единорог/UNIX-сокета:

upstream app_server { 
    server unix:/tmp/nginx.socket fail_timeout=0; 
    } 

    server { 
    listen <%= ENV["PORT"] %>; 
    server_name _; 
    keepalive_timeout 5; 

    # path for static files 
    root /app/public; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app_server; 
    } 

    # Rails error pages 
    error_page 500 502 503 504 /500.html; 
    location = /500.html { 
     root /app/public; 
    } 
    } 

Если трубопровод актива компилирует /app/public/assets вы должны быть хорошо идти.

+0

Спасибо, это именно то, что я искал. Моя конфигурация proxy_pass была испорчена. – user2772200

Смежные вопросы