Я недавно обновил приложение от 3 до 4.2.7 и теперь мы, имеющие вопросы по производственной среде:Rails 4 модернизации производство Nginx вопросы
- активов обслуживаются как текст/html вместо их соответствующие заголовки css/js.
- (может быть связано) Предварительно скомпилированные активы в подкаталогах не найдены, что означает, что
/cssfile.css
загружен успешно, а/subdir/cssfile.css
- нет.
В ходе обновления не было изменений в конфигурационных файлах nginx. Изменения в конфигурации/окружающей среды/production.rb являются следующие:
+ config.eager_load = true
- config.serve_static_assets = false
+ config.serve_static_files = false
- config.assets.compress = true
+ config.assets.js_compressor = :uglifier
+ config.assets.css_compressor = :sass
На развертывание config.assets.css_compressor = :sass
вызвало проблемы, так что я удалил его и прекомпиляция успешно закончил, не знаю, почему это произошло, так как я где-то читал, что в Rails 4 по умолчанию используется css_compressor: sass.
Вот Nginx конфигурация, используемая на сайте:
upstream SITENAME {
server unix:/home/deploy/SITENAME/shared/pids/unicorn.sock;
}
server {
listen 80;
server_name production.SITENAMEart.com;
root /home/deploy/SITENAME/current/public;
access_log /var/log/nginx/SITENAME.access.log main;
client_max_body_size 64M;
location ~ ^/assets/ {
expires max;
add_header Cache-Control public;
add_header ETag "";
break;
}
location ~ ^/(assets)/ {
root /home/deploy/SITENAME/current/public;
gzip_static on;
expires max;
add_header Cache-Control public;
}
location/{
try_files $uri @SITENAME;
}
location @SITENAME {
include proxy.conf;
proxy_pass http://SITENAME;
}
# stats url
location /nginx_stats {
stub_status on;
access_log off;
#allow SOME.IP.ADD.RESS;
#deny all;
}
}
server {
listen 443;
server_name production.SITENAMEart.com;
root /home/deploy/SITENAME/current/public;
access_log /var/log/nginx/SITENAME.access.log main;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/wildcard.SITENAMEart.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/wildcard.SITENAMEart.com.key.unsecure;
ssl_client_certificate /usr/local/nginx/conf/ssl/geotrust.crt;
location ~ ^/assets/ {
expires max;
add_header Cache-Control public;
add_header ETag "";
break;
}
location/{
try_files $uri @SITENAME;
proxy_set_header X-Forwarded-Proto https;
}
location @SITENAME {
include proxy.conf;
proxy_pass http://SITENAME;
proxy_set_header X-Forwarded-Proto https;
}
# stats url
location /nginx_stats {
stub_status on;
access_log off;
}
}
Что меня удивляет больше всего, что релиз был тщательно протестирован на постановке перед развертыванием производства и имеет Nginx конфигурацию - не появились там никаких проблем.