aws EC2로 node.js 배포하기

2019-10-15

1. node.js로 서버 배포하기

마지막 프로젝트를 하며 간단한 채팅을 node.js로 만들었다. 간단하게 구현하는 건 어찌어찌 했는데,, 문제는 배포하는 것. 주변에 구현하면서 고생한 친구가 있어서 편하게 했다.



[STEP 1] 인스턴스 생성부터 - putty 설정까지

  1. aws ec2 인스턴스 생성
    프리티어만으로 체크한 후
    Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type 를 선택했다
    자동으로 선택되어 있는 t2.micro 로 했으며,
    관리하기 쉽게 보안그룹 이름을 내가 원하는 이름으로 변경함.
  2. pem 키 발급 (인증키임.. 재발급 불가라 잃어버리면 새로 인스턴스 생성해야함 ㅠ)
    알아보기 쉽게 키 페어 이름을 잘 적어준다
    외장하드나 개인이 보관하기 쉬운 파일에 저장하기
  3. puttygen.exe 로 ppk 키로 발급받기 LOAD 를 눌러 방금 발급받은 pem 키를 불러온다
    save private key 를 눌러 ppk키로 저장 (동일한 이름으로 하되, 확장자만 달라야 함. 다르면 서버에러)
  4. putty.exe를 실행 새로운 session을 만들고 저장한다
    주의: hostname과 이름을 만들고 ‘save’ 버튼을 눌러줘야 함.
    1. session 탭:
      HostName은 ec2-user@(ip주소)
    2. Connection - SSH - Auth 탭:
      ppk키를 저장해준다.
  5. putty에서 저장한 세션을 open


[STEP 2] git 클론 후 node js 배포하기

  1. 현재 ec2 인스턴스에 깃 설치

    sudo yum install git
    git init
    git config --global user.name "your username"
    git config --global user.email [your mail address]
    

    주의할 점: " "[ ] 를 무조건 써준다! 안써주면 인식을 못함!

  2. nvm 설치

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    
  3. nvm 활성화

    . ~/.nvm/nvm.sh
    
  4. node 설치

    nvm install node
    
  5. 설치 확인

    node -e "console.log('Running Node.js ' + process.version)"
    
  6. 깃에 배포용 repository 생성

  7. 해당 repository의 주소 복사 후 현재 ec2 인스턴스로 클론하기

    git clone + [repository 주소]
    
  8. node js 에서 연습했던 대로 서버 실행

  9. 하면 끝인 줄 알았지? 는 안됨!



노드서버 백그라운드 실행하기

  1. 일단 현재 채팅용 포트를 설정하지 않았음. AWS의 보안그룹으로 들어가서 ec2 인스턴스 생성시 만들었던 보안그룹으로 들어간다. 인바운드 탭에서 사용자지정TCP규칙 > 원하는 채팅포트 > 저장

  2. 위의 1번을 해결한다고 해도 완벽하게 해결되는 건 아님 이유? 내가 putty를 꺼도 실행이 되어야 확실한 배포인 거니까

  3. 백그라운드 실행하기 1 forever 설치

    npm install forever -g
    
  4. 백그라운드 실행하기 2 원하는 js파일 실행하기

    (실행파일 위치까지 들어간 후) 
    forever start [js script]
    
  5. 현재 백그라운드로 실행중인 서버 확인하기

    forever list
    
  6. 백그라운드 서버 종료하기

    forever stop [js script]
    



참고) nohup으로 했으나 실행되지 않았음

  • nohup으로 백그라운드 실행
$ sudo nohup node (js파일) &
  • 실행 후 백그라운드로 올라왔으면 ENTER 키로 빠져나오면 된다.

  • 프로세스 실행되고 있는지 확인

    $ ps -ef
    
  • 종료

    sudo kill -9 [종료하고 싶은 프로세스 pid]