2016-12-30 23 views
1

私はwt(ウィット)のhello worldの例をビルドしましたが、これをGoogle Cloudインスタンスにデプロイしようとしています。それはローカルで正常に動作するようです(したがって、必要なすべてのライブラリ依存関係があります)。ただし、サーバーに展開することはできません。Googleクラウドに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トラフィックを許可します。

私は、root以外のユーザーが1024以下、だけでなく、無駄にポート上で公開できるようにするために

setcap 'cap_net_bind_service=+ep' ~/hello 

を試してみました。

提案がありますか?

乾杯、マイク・

答えて

1

あなたが指定したIPアドレスをリッスンすることができない場合は、次のいずれかの可能性が高い真である:

1)Webサーバなど何かが()は既にその時に聞いていますアドレス80番、または

2)使用しているIPアドレスがマシンのネットワークインターフェイスの1つに割り当てられていません。

ポート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-address 10.150.0.4 --http-port 80は、10.150.0.4が内部IPである場合にも動作します。これはより安全なようですが、これが生産品質であるかどうかはわかりません。 – Mike

+0

すべてのネットワークインターフェイスでリッスンしているWebサーバーについて心配する必要はありません。とにかく、Webサーバーをインターネットに接続することで、誰もがアクセスできるようになります。しかし、httpではなくhttpsを使うことがより重要だと思います。 httpsを使用するのは、特にセットアップ時間だけで済むLet's Encrypt証明書を使うことができるので、今日は本当に簡単です。 wthttpdの新しいバージョンがWtアプリに接続され、opensslを使用すると、すべてのセキュリティチェックがパスされます。また、一般にアクセス可能にする必要のないポートをブロックするためにファイアウォールを使用します。 – Wes

関連する問題