Server Deploy


1.EC 2インスタンスの作成/接続

  • 会員が入力した画面で「≪インスタンスの起動|Start Instance|emdw≫」ボタンをクリックします.
  • AMI選択画面でUbuntuを検索し、18.04選択
  • を選択する.
  • エンティティタイプを選択し、エンティティを選択して[レビューして開始]ボタン
  • をクリックします.
  • モードウィンドウからパリティコード生成が見られる.新しい鍵ペアを作成し、任意の鍵ペア名を作成します.パリティコード
  • をダウンロード
  • インスタンス起動ボタン
  • をクリックします.
  • インスタンスの名前
  • を入力します.
  • 接続ボタンをクリックすると、sshリモート接続でインスタンスに接続されたアドレスが表示されます.このとき必要なのは、先ほど作成した鍵ペアファイル
  • である.
  • 3-4のタブで、SSHクライアントは
  • をクリックします.
  • .誰もがpemファイルにアクセスできる場合、インスタンスは鍵対ファイルダウンロードパス
  • に移動して接続を拒否します.
    $ chmod 400 키페어파일명
  • 権限は400で、所有者の読み取り権限のみが付与されます.
  • それから最後のsshで始まるクリップボードをコピーして、端末を入力してタッチスクリーンAWSで作成したインスタンスに接続します!
  • 2.EC 2インスタンスでのサーバの実行


    2.1インスタンスでの開発環境の構築

    $ sudo apt update
    // nvm install
    $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
    $ nano ~/.bash_profile
  • .bash profileコンテンツの追加
  • export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This load$
  • を保存し、エディタ
  • を終了します.
    アプリケーション
  • 修正ファイル
  • $ source ~/.bash_profile
    // 잘 설치되었는지 nvm 버전확인
    $ nvm --version
    $ nvm install node
    $ sudo apt install npm
    // git에 있는 코드 클론받기 위해 git 설정
    $ git config --global user.name "깃헙유저명"
    $ git config --global user.email "깃헙이메일"
    // keygen 생성하고 암호설정. 깃헙사이트에다 ssh키를 추가해준다
    $ git clone 깃헙코드경로
    // 위와 같이 깃헙 설정 잡아주고 클론해야 아무 문제없이 가져온다
    // 해당 서버폴더로 이동 후 서버구동
    $ cd im-sprint-pratice-deploy/server && npm start
    // 1024번 포트 아래론 관리자 권한으로 실행해야 하기에
    $ sudo npm start
  • のWebサイトに接続してみましたが、接続できません.なぜならawsはセキュリティグループ
  • を設定していないからです.

    2.2セキュリティグループの設定


    セキュリティ・グループは、
  • インスタンスの仮想ファイアウォールおよびインスタンスのトラフィックです.
  • インバウンド:入力インスタンスのトラフィック
  • アウト局:インスタンスから流出する流量
  • インバウンド規則は、EC 2インスタンスへのトラフィックに適用される.
  • インバウンド・ルールで許可されていないルールをフィルタして、インスタンス・アクセスを防止します.
  • EC 2インスタンスを作成する場合、デフォルトではSSH接続のSSHルールのみが作成されます.
  • セキュリティグループに入り、インバウンド・ルールを追加
  • タイプはHTTP、プロトコルはTCPポート番号は80、追加すればよい.
  • 2.3 PM2

  • ssh接続を使用する端末を強制的に終了するには、次の手順に従います.
  • ローカルsshプロセスが終了しました!
  • EC 2のノードプロセスが終了しました!
  • 最終的にノードとして動作するWebサーバも強豪です!
  • 端末が
  • であっても、サーバを常に実行させたい場合は?
    node app.js &
  • の後に記号を付けるだけでバックグラウンドで実行できます.
  • サーバポート番号は80です1024番ポート番号の下に問題があります.3番目の記事
  • を参照してください.
  • は、これらのコマンドではなく、プロセスを専門に管理するプログラムであり、PM 2
  • です.
  • node.jsで実行されるプログラムを管理し、バックグラウンドで
  • を実行できるようにする.
  • では、プログラムの変更時に自動的に再起動したり、プログラムの実行時にサーバを終了したりしたときに自動的に再実行する機能が提供されます.たとえば、
  • ホット・リカバリなどです.
  • サーバの実行に必要なログ管理は、より専門的であり、クラスタモードなどのマルチコアCPUを使用する
  • を選択することもできます.
  • をインストールし、バックグラウンドで
  • を実行します.
    $ npm install pm2 -g
    // 백그라운드 실행
    $ pm2 start 파일명
  • pm 2コマンド
  • pm2 stop
  • pm2 restart
  • pm2 ls
  • pm2 log
  • は、通常、pm 2 startコマンドを使用してプロセス実行後のログを表示中にエラーが発生します.これは、pm 2がプロセス実行時に管理者権限で実行できないため、
  • の問題が発生します.
  • authbindというパッケージ
  • を追加でインストールする必要があります.
    $ sudo apt-get update
    $ sudo apt-get install authbind
    $ sudo touch /etc/authbind/byport/80
    $ sudo chown ubuntu /etc/authbind/byport/80
    $ sudo chmod 755 /etc/authbind/byport/80
    $ authbind --deep pm2 update
  • 以前pm 2で開始したプロセス
  • を削除する.
    $ pm2 delete app.js
  • pm 2管理者権限
  • を付与
    $ authbind --deep pm2 start app.js
  • 上のコマンドラインで実行すると、pm 2 logコマンドも正しく実行されていることがわかります.
  • 3. app.jsバックグラウンド実行時エラー

    ubuntu@ip-172-31-14-21:~/im-sprint-practice-deploy/server$ node app.js &
    [2] 24950
    ubuntu@ip-172-31-14-21:~/im-sprint-practice-deploy/server$ node:events:371
          throw er; // Unhandled 'error' event
          ^
    
    Error: listen EACCES: permission denied 0.0.0.0:80
        at Server.setupListenHandle [as _listen2] (node:net:1302:21)
        at listenInCluster (node:net:1367:12)
        at Server.listen (node:net:1454:7)
        at Function.listen (/home/ubuntu/im-sprint-practice-deploy/server/node_modules/express/lib/application.js:618:24)
        at Object.<anonymous> (/home/ubuntu/im-sprint-practice-deploy/server/app.js:49:5)
        at Module._compile (node:internal/modules/cjs/loader:1101:14)
        at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
        at Module.load (node:internal/modules/cjs/loader:981:32)
        at Function.Module._load (node:internal/modules/cjs/loader:822:12)
        at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    Emitted 'error' event on Server instance at:
        at emitErrorNT (node:net:1346:8)
        at processTicksAndRejections (node:internal/process/task_queues:83:21) {
      code: 'EACCES',
      errno: -13,
      syscall: 'listen',
      address: '0.0.0.0',
      port: 80
    }
  • ソリューション
  • app.js内でポート番号を8080に変更し、8080ポートに接続するときに80ポート
  • に再接続します.
    $sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

    4.特定のポートを特定したい場合

    $sudo lsof -i :포트번호
  • ポートを終了したい場合は、
  • $sudo kill -9 해당포트PID