0

Я предварительно скомпилировал активы на производстве, но приложение не может загрузить активы. Мое приложение развертывается на AWS EC2Активы, не рендеринговые в производственных рельсах

enter image description here

я проверил на сервере в общественных/активов папке он application.css присутствует. enter image description here но все же он говорит ошибку 404.

Моя конфигурация production.rb является

enter image description here

Мои настройки nginx.conf являются: enter image description here

+0

Какие среды «производство» (Heroku, AWS, и т.д.) –

+0

Развернуто на AWS ec2 – Prem

+0

Какова конфигурация вашего веб-сервера (nginx?)? – phillyslick

ответ

0

404 основан на этой линии в вашей конфигурации: config.serve_static_files = true. Это может быть неправильное имя в зависимости от версии вашего рельса. Я считаю, что установка называется config.serve_static_assets в Rails до версии 5.

Если у вас нет сервера (nginx/etc), вы хотите, чтобы этот параметр был истинным. В противном случае вам нужно перенастроить ваш сервер, чтобы указать на ваш/общедоступный каталог, и убедитесь, что rake assets:precompile успешно работает.

+0

У меня есть сервер nginx на ec2. Должен ли я сделать это правдой или ложью? – Prem

+0

Установите значение false. «true» означает, что рельсы будут обслуживать файлы, «false» означает что-то другое (nginx) будет обслуживать файлы. Но вы также должны убедиться, что ваша конфигурация nginx указывает на «общедоступную» директорию вашего приложения rails. – RipTheJacker

+0

Большое спасибо @RiptheJacker. Я проверил файл nginx.conf и указал корень с правильным общедоступным путем, и он решил проблему. – Prem

0

У меня была такая же проблема

набор config.assets.compile = True

Это работает для меня.

+0

Пробовал, но не работал. – Prem

0

Проблема в том, что моя конфигурация в nginx корневого пути была неправильной. поэтому активы не указывали на неправильный путь.

Я изменил в nginx.conf:

от root /home/deploy/appname/public к root /home/deploy/appname/current/public

И в production.rb

config.serve_static_assets = true в config.serve_static_assets = false

0

Я сделал то же самое, как вы:

root /home/deploy/appname/public root => /home/deploy/appname/current/public 

И это работает для меня. С уникальной разницей, что я оставил конфигурации/production.rb файл так:

config.public_file_server.enabled = true 

config.assets.compile = true 

Я использую Rails 5.

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