ruby-on-rails – 同一rails服务器上多个项目中的多个站点

我在网上搜索过,但我只能找到有关在多个站点之间共享代码以及将数据库分离到隔离模型的信息.这不是我想要的.

我想运行一个单独的rails服务器,一个DNS地址和一个端口 – http://myportal.com – 它将处理其他几个站点 – http://myportal.com/site1,http:// myportal. com / site2等

我希望每个站点都拥有自己的文件夹(和SCM存储库),它自己的数据库,它自己的路由 – 它拥有自己的一切.也就是说 – 我希望能够将每个站点作为独立站点开发 – 这意味着我需要能够以http:// localhost:3000而不是http:// localhost:3000 / site1运行site1站点.

在服务器上,根站点(响应http://myportal.com地址的站点应该是我运行服务器的站点,它应该知道其他站点绝对路径(将在不同的目录中)在服务器上,而不是在根站点的子目录中)并为它们提供路由信息 – 但它也应链接到其他站点routes.rb文件.这意味着如果我去地址http://myportal.com/ site1 / books / root站点应该处理http://myportal.com/site1,而site1应该处理/ books /.根站点不需要知道其他站点的内部路由结构.

这可能吗?现在我正在运行Windows Server 2008服务器上的gem(来自命令行的rails服务器)附带的rails服务器,但我愿意安装另一台服务器,如果这是完成我描述的目标所需要的.

提前致谢!

解决方法

如果配置正确,您应该可以使用Apache或Nginx以及可能的IIS执行此操作.我最熟悉Apache和灵活的 mod_rewritemod_proxy组件,可以促进这一点.

您的想法是将http://example.com/重写为http://example.com:3000/,将http://example.com/site2重写为http://example.com:3001/site2,依此类推.

使用Passenger和一些巧妙使用VirtualHost指令也可以做到这一点,但你可能不得不摆弄以获得适合你的配置.请记住,重写标头以在内部路由不会影响服务器发出的结果HTML.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...