2016-12-30 132 views
1

我已經構建了一個wt(witty)hello world示例,並且我試圖將這部署在Google Cloud實例上。它似乎在本地運行良好(因此它具有所有必需的庫依賴關係)。但是,我無法將其部署到服務器上。在谷歌雲上部署WT web應用程序

我想(用我的實際HTTP地址是從下面的例子不同)

./hello --docroot . --http-address 105.150.47.754 --http-port 80 

,但它響應與

Error (asio): bind : cannot assign requested address 

似乎用精細的工作(0.0.0.0/ 0)

雲實例允許HTTP tcp/80流量。

我已經試過

setcap 'cap_net_bind_service=+ep' ~/hello 

允許非root用戶在端口上發佈1024以下的,也無濟於事。

有什麼建議嗎?

乾杯,邁克

回答

1

如果您無法監聽指定的IP地址,執行下列操作之一可能是真:

1)東西(如Web服務器)在那個已在偵聽端口80上的地址或

2)您正在使用的IP地址未分配給本機的一個網絡接口。

在端口80上使用(0.0.0.0/0)告訴Wt Web服務器(wthttpd)監聽所有可用的本地接口。因此,使用該地址將與任何可用的網絡接口一起工作,該網絡接口分配有可用端口80的任何IP地址

+1

/hello --docroot。 --http-address 0.0.0.0 --http-port 80解決方案工作,但似乎不安全。有關風險的任何想法? – Mike

+1

其實./hello --docroot。 --http地址10.150.0.4 --http端口80也適用於其中10.150.0.4是內部IP。這似乎更安全,但不確定這是否是生產質量。 – Mike

+0

我不會過多擔心在所有網絡接口上監聽的Web服務器。無論如何,將網絡服務器放在互聯網上將使所有人都可以訪問網絡服務器。但是,我認爲使用https而不是http更重要。現在使用https非常簡單,尤其是因爲您可以使用Let's Encrypt證書,除了安裝時間以外,它只需花費一點費用。連接到Wt應用程序並使用openssl的更新版本的wthttpd會通過所有安全檢查。還可以使用防火牆來阻止無需公開訪問的端口。 – Wes