部署 用 SPA 的框架开发的应用如何和 Rails 的 Server 一起部署到同一台服务器?

stephen · 2015年12月20日 · 最后由 stephen 回复于 2016年01月06日 · 2687 次阅读

用户的管理后台,用 rails 开发,没进行前后端分离,但是现在尝试把用户后台进行前后端分离。 但是由于这个后台访问量少,可以把 rails server 部署到同一台服务器?或者把前端放在 public 目录下?

直接扔 public 就好了 不过既然是后台 还是隐蔽点比较好

rails server 启动的时候选一下端口就可以了。

rails s -b 0.0.0.0 -p 3001

@jasl rails 4.2 直接摆在 public 下,开发环境下没问题,但是生产环境发生错误

ActionController::RoutingError (No route matches [GET] "/"):

#3 楼 @stephen 你要设置 nginx 让他直接处理,而不是转发给 Rails,生产环境 Rails 本身不处理 Public 里的静态文件这个本身也是 Rails 的默认行为

配置方式形如:https://github.com/jasl/a_rails_start_up_omakase/blob/master/lib/generators/conf/templates/nginx.conf.erb#L33-L42

@jasl 已经按照设置好 nginx

location ~* ^(/assets|/vendors|build.js|index.html|favicon.ico) {
    expires 1d;
    add_header Cache-Control public;

    # Some browsers still send conditional-GET requests if there's a
    # Last-Modified header or an ETag header even if they haven't
    # reached the expiry date sent in the Expires header.
    add_header Last-Modified "";
    add_header ETag "";
}

但是访问还是报错 404,

ActionController::RoutingError (No route matches [GET] "/"):

是不是路由还要设置?

@jasl 现在目前出现一个问题: 用 www.x.com 访问出现ActionController::RoutingError (No route matches [GET] "/"):错误, 用 www.x.com/index.html 访问就没问题。

index index.html;

  location / {
    try_files $uri @app;
  }

  location @app {
    proxy_pass http://jiancan;
    break;
  }

  location ~* ^(/(resources|vendors)/|/index.html|/build.js|/favicon.ico) {
    root /home/ubuntu/www/jiancan/current/public;
    expires 1d;
    add_header Cache-Control public;

    add_header Last-Modified "";
    add_header ETag "";
    break;
  }
需要 登录 后方可回复, 如果你还没有账号请 注册新账号