うちの自宅サーバが逝ってしまって、ポートフォリオが見れなくなってしまったので、DockernizeしてGCEにとりあえずコンテナとして放り込んでおこうと移植した際に遭遇した事象
Websocketだけ見れない
元の構成はこんな感じ
今回移行先となる、GCEの無料枠プラン(物理メモリ500MBちょい)だと非力すぎて、uWSGIをEmperorで動かす利点がほぼないため、dockerfiles/django-uwsgi-nginxで公開されてるDockerfileを借りることにしました
しかし、Djangoの方はさくっと移行終わったものの、WebSocketだけ、KeyError:'HTTP_SEC_WEBSOCKET_KEY'
が出てhandshakeでこける
1 | uwsgi.websocket_handshake(env['HTTP_SEC_WEBSOCKET_KEY'], env.get('HTTP_ORIGIN', '')) |
結論:uWSGIをSSLサポート付きでbuildする必要があった
dockerfiles/django-uwsgi-nginxのままだとSSLサポートが有効になっておらず、SSLサポート付きでbuildしてやる必要がありました
以下、やったことメモ
1 | ENV CFLAGS="-I/usr/local/opt/openssl/include" |
1 | RUN apt-get install -y libssl-dev |