導入中に発生した問題の集合


今週は、ガストン設計の中間プレゼンテーションのために実行されるWebサービスを一時的にデモします.バックエンドを担当し、導入中に発生した問題と解決策を記録し、後続の作業で改善すべき点を考慮します.
環境:Java 11,Spring Boot 2.6.x, AWS EC2 Amazon Linux, Docker
問題発生日:2022.04.19.(火)

EC 2にアップロードされたサーバのシャットダウンの問題


詳細手順は前の位置と同じです.
ローカル環境のIntelliJでSpringBootを構築し、Dockerfileとしてイメージし、私のDocker Hubに正常にアップロードします.
その後、新しく作成したAWS EC 2にdockerをインストールし、Docker Hubにアップロードしたイメージを引き出して実行した結果、サーバーは正常に動作した.
問題はこの後、私がsshでEC 2に接続した端末が閉鎖され、サーバーが死んだことです.

EC 2でjarファイルを直接実行するのではなく、Docker環境でイメージ化されたバックエンドプロジェクトを実行しているため、問題が発生していると推測されます.
// 문제가 발생했던 기존 실행 명령어
$ sudo docker run -p 8080:8080 songs4805/{image 명}
この場合、-p(ポート)オプションを指定する以外に、他のオプションが保留されていない場合は、実行時にSpringBootに関するログが私の端末に表示されます.ただし、端末をオフにすると、Docker環境の特性上、サーバも同時にオフになり、サーバがハングアップします.
そのため、Docker Containerがフロントではなくバックグラウンドで実行されていることを確認してください.したがって、実行時に-dオプションを追加します.
// -d 옵션을 추가하자(detach)
$ sudo docker run -d -p 8080:8080 songs4805/{image 명}
端末を閉じてもサーバーが死んでいないことを確認できます.

H 2データベースのリモート接続の問題


組長は、プレゼンテーションの際にはデータベーステーブルの値も表示したいとして、EC 2で実行されるH 2データベースに接続したいと話しています.
h2 remote connections ('weballowothers') are disabled on this server
chromeウィンドウから次のエラーメッセージが表示され、接続できません.これは、application.ymlで次の設定を変更することで解決できます.
spring:
  h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
しかし、常識的に言えば、このような方式は実際の運営環境では絶対にできない.これは、パブリケーションが終了すると、すべてのサーバが閉じられ、EC 2インスタンスが削除されるためです.

HTTPS→HTTPリクエスト問題


まずバックエンドを配置し、urlをフロントエンドを担当するチームメンバーに伝えます.その後、Reactによって作成されたフロントエンドは、Github Pagesの導入中に発生した問題です.
配置されたWebサイトでBackend APIを呼び出すと、Mixedコンテンツに関連するネットワークエラーメッセージが表示されます.
これは、Github Pagesの導入時にHTTPSに設定されて変更できない問題です.バックエンドでHTTPSを考えずに操作したためです.
ユーザーがHTTPSが提供するページにアクセスすると、Webサーバとの接続はTLSを使用して暗号化され、ほとんどの傍受やメールブロック攻撃を回避します.純テキストHTTPを用いてコンテンツをインポートするHTTPSページをハイブリッドコンテンツページと呼ぶ.このようなページは部分的に暗号化されているだけで、傍受者とメッセージブロック攻撃者が暗号化されていないコンテンツにアクセスできるようにします.これにより、ページが安全ではありません.
ハイブリッドコンテンツ-Webセキュリティ|MDN
時間があまりない場合に,さらにBackendでssl証明書を行う経験がないことから,今後解決すべき問題を決定し,フロントエンドでhttpを用いて配布する解決策を見つけた.

FreenomからDNSを取得


https://www.freenom.com/en/index.html?lang=en
DNSを無料で提供するサイトで、ここから受け取った後、Github Pagesはcustom domainに登録し、https設定を閉じて配布します.
ここまでの問題ではありません.Github Pagesはwww.で始まるDNSを推奨しているので、正常に呼び出すことができません.
したがって、対応するDNS設定をFreenomに追加し、Github Docs - Manage a custom domainのGithub IPアドレスを追加し、wwwを追加する必要があります.


その後、端末は、nslookup www.{DNS 주소}コマンドにより、Github IPアドレスが正しいかどうかを検証し、設定が完了すると、DNSを使用して配信されるサイトに接続することができる.