🔥TIL#11. AWSへのサービスの導入


Today I learned

  • AWS
    1-1. AWS EC2
    1-2. AWS RDS
    1-3. 準備
  • OurPlay WASをサポートする

    1. AWS


    Amazon Webサービスは、サービスを開発する環境(アプリケーション、データベース...)WEBに配信されるサービスとして、様々な機能を提供しています.AWSのフレキシブルコンピューティングクラウド(EC 2)とリレーショナル・データベース・サービス(RDS)を使用して、開発した最初のプロジェクトの成果をWEBに導入します.

    1-1. AWS EC2


    EC 2は、ユーザーが独自のアプリケーションまたはサービスを実行することをサポートするサービスである仮想マシンです.この仮想マシンはOurPlay WASを実行します.
    AWSにアカウントがある場合は、AWSにおけるEC 2 Instanceの作成方法について説明します.

    AWSに接続してEC 2サービス画面に入ると、上記の画面が表示されます.画面中央の[インスタンスを開始](Start Instance)ボタンで新しいインスタンスを作成できます.

    最初はプロジェクト環境を選択します.私はubuntu環境で開発したので、作成するインスタンスを選択してもubuntuです.

    AMIを選択すると、上記のような「選択タイプ」画面が表示され、開発をテストするために使用されるので、プリファレンスとして選択します.

    ここで、[サブネット]セクションを開き、最初のアイテムを選択します.「予期せぬ終了の防止」を確認し、次の手順に進みます(他の課金オプションを無効にします).

    ストレージステージを設定し、テスト用Instanceなのでdefaultにします.
    次のステップはTag設定です.これはコストの管理、AMIポリシー権限の指定などの機能で、Instanceに必要なkey値とvalue値を入力してスキップします.

    「セキュリティ・グループの設定」フェーズでは、http/http接続を許可するためにセキュリティ・ルールを追加する必要があります.上の図に示すように、「カスタムTCP」、「ポート範囲」が8000、「ソース」が「位置無関係」の場合、http/http接続は任意の場所で許可されます.

    最後のステップとして、これまでに設定した内容が正しいかどうかを確認すると、生成プロセスに進みます.
    [開始](Start)をクリックするとkey-pairが受信されます.これはEC 2接続用のファイルなので、よく管理してください.インスタンスを起動すると、AWS EC 2画面にそのインスタンスのステータスが表示されます.
    では、TerminalからEC 2 instanceに接続しましょう.接続する前に、sshに接続するにはダウンロードしたpemファイルの権限を変更する必要があります.そのため、次のコマンドを使用してファイルの権限を変更してください.
    chmod 400 xxxx.pem
    次にssh接続を使用してみます.以下に示します.
    ssh -i {발급받은 pem 파일} ubuntu@{인스턴스 public IP or DNS}
    
    # ubuntu 위치는 우리가 만든 AMI 이름이다.

    正常に接続されている場合、端末入力部の情報は以下のように変更されます.

    1-2. AWS RDS


    リレーショナル・データベース・サービス(RDS)は、AWSにおけるRDB環境の確立および設定をサポートするサービスである.OurPlay WASはMySQLを使用するため、RDSにアクセスしてデータベースを作成し、作成したデータベースの接続アドレス(EndPoint)をEC 2のOurPlay WAS設定情報に入れて、EC 2とRDSバインドすることができる.まずはAWS RDSページへ.

    上の画面には私が作成したデータベースがあります.右上の[データベースを作成](Create Database)ボタンから作成を開始します.

    私はMySQLに基づいて開発したので、MySQLを選びました.

    バージョンとテンプレート、識別子、およびログインするID/Passwordを入力します.IDはroot、Passwordはセキュリティのために複雑なモードを推奨します.
    データベースを作成したら、接続します.Terminalで次のコマンドを実行します.
    mysql -h {RDS endpoint} -u root -p
    Passwordが正常に入力されている場合は、RDSに接続できます.
    注意事項
    データベースを作成するときは、「パラメータグループ」の設定を忘れないでください.
    文字セット*の値をutf 8 mb 4に設定すると、ハングルクラックの問題を回避できます.基本パラメータグループを使用するとハングルが破壊されます

    1-3. OurPlay WASを起動する準備ができています


    EC 2とRDSの準備が完了し,残りは開発したOutplay WAS sourceをEC 2のInstanceに導入して実行する.以下の作業を行った.
  • minicondaをインストールし、仮想環境を作成します.
  • 「git clone」コマンドを使用してソースファイル
  • をインポート
  • requirement.txtのパッケージインストール
  • OurPlays WASを実行する
  • 上記の過程で.gitignoreターゲットファイル(my settings.py,db uploader.py)とフォルダ(data/)は、ローカルpcにあるコンテンツをEC 2 Instanceとして入れる必要があります.
    そのため、ファイルやフォルダをEC 2 Instanceにアップロードする方法を探していたところ、Ubuntuが提供する「scp」という機能を知りました.使い方は以下の通りです.
    # scp 명령어 구조
    scp -i {발급받은 pem 파일} -r {local path} ubuntu@{인스턴스 public IP or DNS}:{remote path}
    
    # 내 작업 기준
    scp -i jinybear.pem -r ~/ourplays/14-folder/data/ [email protected]:~/14-folder/
    上がフォルダの場合、ファイルは「-r」オプションを削除できます.EC 2 Instanceからダウンロードしたい場合は、以下の手順に従います.
    scp -i {발급받은 pem 파일} -r ubuntu@{인스턴스 public IP or DNS}:{remote path} {local path}
    OurPlay WASを実行した後、postmanで要求テスト結果が正常であることを確認します.しかし、もう一つあります.これは、shellを閉じたり、端末セッションを閉じたりしても、WASは実行を継続する必要があることを意味します.
    (通常、shellまたはTerminalを閉じると終了します)
    バックグラウンドで実行する必要があるため、関連する機能を検索すると「nohup」コマンドが見つかり、次のように実行されます.
    nohup python manage.py runserver 0:8000 &
    
    # nohup {WAS 실행 명령} &
    ちょうど私と協力したフロンテンド開発者から連絡があり、フロンテンド側の改善作業にOurPlay WASと連動できるかどうかを尋ねられました.EC 2 Instanceの「public ip」を教えていただき、私たち二人で満足のいく会話ができました.^^