2016-12-30 127 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