部署 Rails 在 production 环境下无法有 Bootstrap 效果,求解!

arc_start · 2015年08月10日 · 最后由 jing 回复于 2015年08月24日 · 2532 次阅读

ubuntu 14.2/ rails 4.2.3/ nginx1.8 下面是自己找到但是不知道怎么解决的问题,..,还有能顺便问一下,production 的数据库在哪里吗?

#production log :

 INFO -- : Started GET "/assets/application-65b769ffba7fc8241ae208caa71b7abc6eb684e9de2deb560360a8247ce58133.css" for 127.0.0.1 at 2015-08-10 18:39:53 +0800
F, [2015-08-10T18:39:53.688201 #30521] FATAL -- : 
 ActionController:: **RoutingError (No route matches [GET] "/assets** /application- 65b769ffba7fc8241ae208caa71b7abc6eb684e9de2deb560360a8247ce58133.css"):
  actionpack (4.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (4.2.3) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.3) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.3) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.3) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.3) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.3) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.4) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.3) lib/rails/engine.rb:518:in `call'
  railties (4.2.3) lib/rails/application.rb:165:in `call'
  passenger (5.0.15) lib/phusion_passenger/rack/thread_handler_extension.rb:94:in `process_request'
  passenger (5.0.15) lib/phusion_passenger/request_handler/thread_handler.rb:149:in `accept_and_process_next_request'
  passenger (5.0.15) lib/phusion_passenger/request_handler/thread_handler.rb:110:in `main_loop'
  passenger (5.0.15) lib/phusion_passenger/request_handler.rb:415:in `block (3 levels) in start_threads'
  passenger (5.0.15) lib/phusion_passenger/utils.rb:111:in `block in create_thread_and_abort_on_exception'

还有能顺便问一下,production 的数据库在哪里吗?

打开 config/database.yml 看看 production 那一块

@blacktulip 意思是部署后文件会再这里产生是嘛?谢谢拉~ production: adapter: mysql2 encoding: utf8 database: Hack pool: 5 username: root password: "123456" socket: /var/run/mysqld/mysqld.sock

#2 楼 @arc_start 不是的...数据库是存放数据的地方,部署后文件是拷到服务器的某个目录里面

#3 楼 @blacktulip 我是再本机部署,因为刚开始学,如果我部署再本机,那么部署的数据库文件会再部署的 app 中嘛?

#4 楼 @huacnlee rake 拉,但是还是一样的...

你 nginx 有把 root 指向 public 目录吗?

#7 楼 @msg7086 有哦!一脸迷茫,能告诉我下部署的数据库再哪里吗..?

#8 楼 @arc_start 数据库你装在哪就在哪。一般是随系统安装的,比如 MySQL 的话,数据文件会存放在/var/lib/mysql里,配置会存放在/etc/mysql/里,运行时端口会存放在/var/run/mysqld里。数据库文件一般不建议直接在服务器间转移,特别是你这样还在提问阶段的人,绝对不要这样做。

这个问题当年也折腾得我够呛。哈哈

#11 楼 @diguage 那你也该告诉我下怎么解决.css 无特效吧……

#12 楼 @arc_start @huacnlee @blacktulip 已经回答了啊。如果 CSS 无特效,可能的原因如下:

  1. CSS 文件没有加载;
  2. CSS 的选择器写的不对;
  3. 浏览器不兼容;

大概就这几种情况,你仔细检查一下。

#12 楼 @arc_start 上面写了 RoutingError 了,所以就是你本地 assets 文件没有生成,或者 nginx 因为不知道什么原因而把 assets 打到后端了。

直接 NoPoint 了,楼主上面已经告诉你解决方案了

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