【问题标题】:Is it possible to have multiple websites, with different domain names, on the same Rails application?是否可以在同一个 Rails 应用程序上拥有多个具有不同域名的网站?
【发布时间】:2019-11-05 20:25:26
【问题描述】:

我有几个不同的小型网站,对于每个网站,我都有一个爱好级别的托管计划,它提供的带宽/存储空间比其中任何一个单独需要的都要多。此外,每次我对我使用的堆栈进行更改时,例如当我开始使用新版本的 gem 时,我都必须分别更新它们,并且我必须为它们中的每一个运行单独的测试。还有每个都有相同的表,例如 Admin 和 Error。

所以我开始考虑是否可以将它们合并到一个应用程序中,也许可以使用不同的控制器文件夹,这些文件夹被不同的域名视为根目录。任何人都有从同一代码库托管不同网站的经验吗?这甚至可能吗?

更新: 为了添加更多上下文,我想在一台服务器上托管整个内容,可能使用一个数据库,但具有多个控制器文件夹,每个文件夹代表不同的网站和不同的域。例如,我目前有 smallapp.com 和 lilsite.com,我为两者支付相同的托管计划(这超出了他们的需求),并且它们都有相同的 Error 模型,我每当我开始使用新的 gem 版本时更新两者。他们也使用相同的 gems 和库。理想情况下,我应该有一个名为superapp 的应用程序,它只托管同一托管计划的一个实例,共享一个 SSL 证书,该应用程序将有两个名为 smallapplilsite 的控制器文件夹。路由“www.smallapp.com”会以某种方式指向 /smallapp/home.html 路径,反之亦然。 smallapp.com 和 lilsite.com 上的用户都可以在同一个数据库中创建错误,但他们永远无法查看对方控制器中的文件。

【问题讨论】:

  • 如果模型/控制器或多或少相同,您可以查看Apartment gem 将您的站点拆分为多个单独的站点。但是,一旦代码中存在一些差异,您最好还是将它们作为单独的应用程序保留。管理单个更改将变得非常麻烦。您可以考虑将应用程序的一部分移动到微服务中,每个单独的应用程序都可以利用这些微服务。例如用于管理 cmets 或登录。

标签: ruby-on-rails dns routes namespaces hosting


【解决方案1】:

如果不了解完整的上下文,是的,很难提供最佳解决方案,但这是可能的。

是的@bo-oz 是正确的,您可以为此使用 Apartment gem。我们目前在我工作的地方使用它。

您也可以只有 2 台服务器部署在相同的存储库/代码库中。

具体来说,您可以有 2 个 Heroku 服务器部署在同一个 github 存储库中。然后有2个独立的域。部署时,您只需将两台服务器都部署在您的主分支之外。

【讨论】:

  • 有趣。您知道是否可以有 2 个单独的域,但在同一台服务器上?
【解决方案2】:

这是可能的。

  1. 所有域都必须指向同一个 IP 地址,即您的服务器地址。为此,您需要更改域 DNS 设置。

  2. Web 服务器(例如 Nginx)必须将所有请求(来自所有域)定向到同一个 Rails 应用程序。

  3. 在 Rails 应用程序中,路由必须基于域指向不同的控制器。 request.domain 在“routes.rb”文件中可用。有关更多信息,请参阅此问题Rails routing to handle multiple domains on single application

请记住,来自不同域的请求不会共享同一个会话。这可能不是你想要的。

【讨论】:

  • 1.不一定是真的:同一台服务器可以分配多个 IP,Nginx 在多个服务器块中使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多