部署小型 Rails 应用程序-有什么建议?

部署小型 Rails 应用程序-有什么建议?

我们一直在为学校期末项目开发一个小型的 Ruby On Rails(ruby 1.8、rails 3.0.1)系统;在开发过程中,我们一直在混合使用我们的开发机器和 LAN 上的 Linux 服务器(运行 WEBrick)进行测试。对于部署,我们获得了一个运行 Debian squeeze/sid 的 VPS,以及自由的部署选项(换句话说:“自己想办法” :))。

该网站的流量不会很大,因此运行 WEBrick 部署可能会有效 - 但感觉不对,考虑到这是一个学习项目,我们希望至少半正确地做一些事情。另外,我们需要 gzip 压缩因为 rails 应用程序的一部分是 json webservice,它将提供适量的数据 - 据我所知,ruby 服务器通常不支持这一点。

过去几天,我一直在谷歌上搜索各种选项,哇,竟然有这么多!我唯一先排除的是 Apache,主要是因为我想尝试一些新的东西,部分是因为它感觉有点...笨重的

我现在正在调查切诺基+薄的,这似乎不错,但如果有更合适的,我非常乐意听取建议。我碰到过 lighttpd、hiawata 和 nginx 服务器,也看到过 mongrel、passenger 和 unicorn ruby​​ 服务器的提及 - 肯定有很多可能的排列组合!

为了测试,我们目前设置了 SSH 隧道并使用 etc/hosts 来映射应用程序名称.local改为 127.0.0.1 - 注册正确的域名和在防火墙上打洞将在稍后进行。这主要意味着 httpd 在端口 80 上运行,但由于 SSH 隧道,Host:HTTP 请求标头的一部分包含隧道端口号。

为了将这些胡言乱语变成合适的帖子,这里有一些问题:

  1. 在另一个 httpd“前端”后面使用 Thin ruby​​ 服务器时,单个实例是否可以处理(无需排队)多个并发 rails 请求,还是只能在用作前端时才可以这样做?我们应该在不同的端口上使用它们的池吗?
  2. 我们目前将 rails 应用程序放在 /var/rails/ 中应用程序名称以及符号链接 /var/rails/应用程序名称/public 到 /var/www/应用程序名称,并将所有所有权归于www-data。这种布局合理吗?
  3. 系统中存在一些框架控制的 302 重定向,尤其是用户授权。直接连接到 WEBrick 或 Thin 时,一切如预期。通过 Cherokee 连接时,出于某种原因,隧道端口号会从响应Location:标头中删除。知道为什么会发生这种情况吗?
  4. 每当切诺基重新启动时,第一的向 rails 应用发出的请求出现“502 bad gateway”HTTP 错误,可能是因为 Thin 服务器是按需启动的。有什么方法可以消除这个初始 502 错误吗?

答案1

目前最佳实践的方法是使用卡皮斯特拉诺(弗拉德)和乘客使用 nginx / apache(nginx 更快,apache 更常见)。我用这样的设置运行了一些中等流量的站点,运行很顺畅。
一些注意事项:
-Ruby 企业版更快。
- Ruby 1.92 更快
- 如果你的内存受限(VPS),请使用 nginx

至于您的问题:
1. 是的,可以。2
. 使用 capistrano,将内容放入当前目录并发布目录(以允许回滚)。为什么要使用符号链接?公共属于应用程序。3
. 那是切诺基虫
4. 将薄层作为单独的工序,置于某些工序监督员的监督下。

相关内容