2014-10-01 100 views
0

是否可以從一個Cloud9 IDE項目中運行多個rails應用程序?例如,我有以下結構...一個項目包含多個應用程序?

MyApp的(C9項目)

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

當我通過終端在C9中運行rails server -p $PORT -b $IP,在各自的應用程序目錄(即MyApp-API,MyApp-Web)中,它們似乎都在運行。但是,當我執行cURL請求或嘗試直接瀏覽時,我無法按預期方式到達路由。

我認爲這是因爲我使用相同的端口/ IP配置運行rails服務器。

回答

0

Cloud9沒有(還)將多個端口暴露給外部。一種可行的方法是在您的應用程序前放置一個小型逆向代理,如HAProxyNginx。您可以在任意端口上運行您的不同應用程序,並讓代理在$PORT上進行偵聽。然後配置代理以轉發給您的應用,例如基於路徑。

+0

謝謝,我最終決定最終將應用分成兩個獨立的項目。 – Jason 2014-10-02 13:16:19

+0

請您詳細解釋一下嗎?我面臨同樣的問題比傑森,我不知道如何安裝/配置ngix代理api請求在不同的端口(例如15001)? – Doum 2015-01-08 15:35:18

0

僅當您將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

0

看起來像這樣做是不能做到的。 C9顯然只暴露一個端口。我將最有可能需要打破應用分成不同的項目...

How to use grunt serve in Cloud9 IDE?

從技術上講,我可以如不同的本地端口上運行的應用程序的API:

rails server -p 15001 -b $IP 

然後我可以通過cURL請求連接到它,或讓Web應用程序通過該端點連接到它。

這有點痛苦,但至少有一個解決方法。

相關問題