新手问题 [已经解决] production 环境无法显示 bootstrap 中的 CSS 样式

fengfans · 2019年08月20日 · 最后由 fengfans 回复于 2019年08月22日 · 2426 次阅读

同一个模板,添加了 bootstrap 的样式,但是在开发模式正常显示,在开发模式就不显示,现在一点思路都没有,请各位大神指点。需要什么文件请给个提示。

系统环境: Capistrano+Nginx + Passenger + Rails

如果是 404 的话,可能是没有在启动服务前跑 RAILS_ENV=production rails assets:precompile

使用的是 capistrano 的部署任务,你说的这个命令执行了,但是 RAILS_ENV=production 在任务执行过程中没有出现,修改哪个 文件去加上它呢?请提示。

你是用什么部署的?puma?thin?还是别的?css 这些静态文件压缩完要用 nginx 来请求,或者在 rails 项目里面有一个配置文件,要改一下。

这个文件里面 you_rails/config/environments/production.rb 改如下配置 config.public_file_server.enabled = true

估计 nginx 的问题,nginx 配置贴出来看看。

nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
#
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

mod-http-passenger.conf

### Begin automatically installed Phusion Passenger config snippet ###
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
#passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1/wrappers/ruby
#passenger_ruby /usr/bin/passenger_free_ruby;
passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1@rails5new/wrappers/ruby;
### End automatically installed Phusion Passenger config snippet ###

bt.conf-----站点的配置

server {
    listen 80;
    server_name 117.50.82.115;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /home/ubuntu/bt/current/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1/wrappers/ruby;
}
mengmeng 回复

试了,不行。

fengfans 回复

那我方了。

你 f12 先看看是不是 bootstrap.css 没加载上,你试试手动把 public/assets 清空 重新 cap 一下

@yfscret 不行,是不是 asset Pipeline 设置 的问题。

上图为生产模式

下图为开发模式

按照 ruby on rails guides 中 的 asset pipeline 的要求设置,就好用了。主要是启用 asset pipeline,按生产环境要求配置即可。谢谢各位大神。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号