一个项目包含多个应用程序?

问题描述:

是否可以从一个Cloud9 IDE项目中运行多个rails应用程序?例如,我有以下结构...一个项目包含多个应用程序?

MyApp的(C9项目)

  • MyApp的-API(轨道/葡萄)
  • MyApp的的Web(滑轨)

当我通过终端在C9中运行rails server -p $PORT -b $IP,在各自的应用程序目录(即MyApp-API,MyApp-Web)中,它们似乎都在运行。但是,当我执行cURL请求或尝试直接浏览时,我无法按预期方式到达路由。

我认为这是因为我使用相同的端口/ IP配置运行rails服务器。

Cloud9没有(还)将多个端口暴露给外部。一种可行的方法是在您的应用程序前放置一个小型逆向代理,如HAProxyNginx。您可以在任意端口上运行您的不同应用程序,并让代理在$PORT上进行侦听。然后配置代理以转发给您的应用,例如基于路径。

+0

谢谢,我最终决定最终将应用分成两个独立的项目。 – Jason 2014-10-02 13:16:19

+0

请您详细解释一下吗?我面临同样的问题比杰森,我不知道如何安装/配置ngix代理api请求在不同的端口(例如15001)? – Doum 2015-01-08 15:35:18

仅当您将API part放置在app/controllers/api/posts_controller.rb例如。 并为它设置route,例如域myapp.com/api/posts.json或子域(api.myapp.com/posts.json)

+0

这将使这两个应用程序一个应用程序。我想让他们分开。 – Jason 2014-10-01 17:22:43

+0

然后你应该为每个应用程序运行2个独立的web服务器(独角兽,美洲狮等)进程,并配置nginx(apache)来处理对应用流的url请求。 – itsnikolay 2014-10-01 17:24:34

+0

我的问题更多地涉及如何使用Cloud9 IDE实现此目的。如果C9提供了备用调试端口,我相信我的配置可以在不需要另一层(即独角兽,美洲狮等)的情况下实现。 – Jason 2014-10-01 17:28:52

看起来像这样做是不能做到的。 C9显然只暴露一个端口。我将最有可能需要打破应用分成不同的项目...

How to use grunt serve in Cloud9 IDE?

从技术上讲,我可以如不同的本地端口上运行的应用程序的API:

rails server -p 15001 -b $IP 

然后我可以通过cURL请求连接到它,或让Web应用程序通过该端点连接到它。

这有点痛苦,但至少有一个解决方法。