[Ubuntu] Amazon AWS EC2 2/2

설정순서

  • Amazon EC2 Package 설치
  • Devcom Publish
  • Amazon EC2 Deploy


 node.js 퍼블리싱은 설정을 다했다면 간단하리 만큼 쉽습니다. 어 이게 끝인가?하는 순간 마무리가 되지만 처음 한번은 역시 힘이 들겠지요. 처음부터 천천히 작업을 하도록 하겠습니다. 작업은 EC2 초기 설치를하고 개발컴에서 모듈 퍼블리싱 후 EC2에 디플로이 합니다. EC2, Lambda, DynamoDB 사용은 해보겠지만 EC2 말고는 Amazon외의 서비스를 이용할것 같습니다. 이유는 역시 돈이겠지요.👌👌


1. Amazon EC2 Package 설치

  • EC2 접속하기 - 이 부분은 글로 설명 드립니다. 😂
    • EC2 메뉴 -> 왼쪽 사이드바 Instance -> Instance 목록 선택
    • Instance 상세화면 Connect 탭 -> SSH Client Tab 클릭
    • 하단의 Example 복사하여 터미널에서 붙여 넣어서 접속을 합니다. 초기 비밀번호는 없으므로 우분투글의 root 비밀번호 설정을 보고 따라합니다. 설치 파일들은 WSL MariaDB 서버 환경 구성 2개 글을 보시면 됩니다. 동일한 우분투로 설치해서 똑같은 명령어 작업이 가능합니다.
  • install package : curl, git, nodejs
    • 기본적으로 curl과 git은 설치가 되어 있습니다. nodejs를 설치합니다.
    • sudo apt-get install -y nodejs
  • Git SSH 설치 - React 개발환경의 빗버킷 레파지토리를 이용합니다.
    • cd ~/.ssh
    • ssh-keygen -t rsa -b 2048
    • cat id_rsa.pub
    • 퍼블릭키 복사 후 빗버킷 사이트로 이동합니다.
    • Settings-> Personal Bitbucket Settings -> SSH-keys -> Add key -> 붙여넣기

2. Devcom Publish

  • Source 최신 유지 및 Git Sync 작업, 아래와 같이 되어야 됩니다.
  • NPM을 이용한 module 배포하기
    • NPM을 이용하는 것은 모듈이 오류가 많아 개발환경과 동일하게 모듈을 맞추기 위해서 입니다. 의존 모듈이 꽤 말썽을 많이 일으킵니다. 첫 작업으로 NPM Site에 가입합니다. 이름, 아이디, 이메일 정보는 꼭 기억하도록 합니다.
    • Terminal NPM 확인
      • npm login : 로그인(가입한 ID, PW, EMail, OTP 정보고 필요합니다.)
      • npm logout : 로그아웃
      • npm whoami : 접속 아이디 확인
    • NPM module Publishing - package.json 파일이 있는 디렉토리로 이동합니다. 모든 작업은 로그인이 된 상태(방치시 자동 끊김)에서 진행하여야 합니다. whoami 확인 꼭!!
      • 배포 : npm publish
        • 배포를 하면 npm site에서 확인이 가능합니다. 주의할 점은 package.json의 name은 전부 소문자로 하셔야 됩니다. 음..private은 유료 쌉가능
      • 재배포 : npm version patch -> npm publish
      • 배포삭제 : npm unpublish 패키지명@버전 or 패키지명 -f
        • 배포후 3일(72시간)이 지나면 삭제하실때 npm site에 별도 요청하셔야 합니다. 아니다 싶으면 바로 삭제하시기 바랍니다.
      • 확인 : npm info 패키지명
      • 설치 : npm i 패키지명
  • NPM Serve를 이용한 배포
    • 빌드 : npm run build
    • 배포 : npm install -g serve or npx serve(1회성 웹서버)
    • 실행 : npx serve -s (build directory) : -s build 디렉토리를 Document root로 지정

3. Amazon EC2 Deploy

  • Git source 
    • Clone - 빗버킷 사이트에서 클론 주소 카피 후 적당한 디렉토리에 클론을 합니다. 위 설치에서 SSH Key 등록이 되었다면 별다른 이상없이 클론이 완료됩니다.
    • Pull - git pull 저장소 브랜치 (ex. git pull origin master)
    • Push - git push 저장소 브랜치 (ex. git push origin master)
    • Fetch - git fetch 저장소 (ex. git fetch origin)
  • NPM module 설치
    • npm login -> npm i 패키지명
    • 인스톨하고 캐시 지우는 시간이 꽤 걸립니다. 물론 성능 좋게하면 금방 걸립니다. 이전글의 이미지로 설치하셨다면 조금 기다리셔야 됩니다. node module이 설치되면 git에서 설치한 모듈을 클론한 디렉토리로 이동하면 됩니다.
  • 실행 확인
    • npm start
    • Amazon EC2 Instance의 Public IPv4 Address를 3000 포트로 접속하여 설치한 사이트가 정상적으로 나오는지 확인합니다. 콘솔에서 컴파일 되고 실행도 되나 화면에 표시는 안될것입니다. 이전글에서 인바운드 규칙에 3000번 포트는 개방하지 않았기 때문입니다. 또 한가지 https가 아닌 http 프로토콜만 인바운드 규칙으로 허용하였습니다. 3000번 포트를 개방하고 http 프로토콜로 접속하면 인터넷이 연결된 곳에서는 어디에서든 사이트를 보실 수 있습니다.
  • 백그라운드 실행
    • 포어그라운드로 실행하게되면 콘솔 접속 종료 후 프로세스가 죽고 사이트가 종료됩니다. 이에 콘솔을 닫더라도 계속하여 프로세스가 동작하게 하려면 프로세스를 백그라운드로 실행을 하여야 됩니다. 이 부분은 여러가지 패키지나 명령어들이 있습니다. 간단한 방법은 "nohup 명령어 맨 뒤에 한칸 띠고 &" 를 붙이는 방법이 있습니다. 그 외에도 "백그라운드 실행" 키워드로 검색하시면 유용한 정보들이 있으니 확인들 바랍니다. 항상 실행하면 종료 방법은 쌍으로 확인하시기 바랍니다.
    • 백그라운드 실행 : nohup 명령어 & (ex. nohup npm start &)
    • 실행 프로세스 확인 : pstree
    • 실행 프로세스명으로 확인 : ps -ef | grep name (ex. ps -ef | grep npm*)
    • 실행 프로세스 종료 : kill -9 PID (ex. kill -9 424684)


 여기까지 하셨으면 초기 세팅이 완료된것입니다. 앞으로는 개발컴(Devcom)에서 소스 변경 시 git에 push만 하면 되겠지요. node 모듈이 변경이 되면 npm publish로 버전업을하고 업데이트 하시고요. 개발자 컴에서는 개발과 모듈 업데이트 이 2가지만 하시면 되고 서비스 서버(Amazon EC2)에서는 소스 최신 유지 git pull과 npm start/stop 이 2가지만 하시면 됩니다.


 여기까지 아마존 AWS EC2 설정 과정이 끝났습니다. 추가적으로 마지막 백그라운드 실행은 조심히 사용하시기 바랍니다. 이유는 역시 돈이겠지요.👌👌

 다른 부분이 있으면 문의하기를 통하여 남겨주세요.

 다음글은 실제 Site를 올려서 작동하는 모습을 확인하도록 하겠습니다. 

 

 Tip. Publish와 Deploy 차이점

 Copying files to a target machine appears in different context and purpose:

  • Publishing creates the set of files that are needed to run your application

 you copy these to a machine where they can be publicly accessed from

  • To deploy the files, copy them to the target machine.


 you copy these to a machine where you intend to run the application.


 Environment Definitions:

  • build environment - Environment setup for build process.
  • runtime environment - Environment setup for execution process (test/staging/production).

 

 Artifact Lifecycle Stages:

  • building - process of creating an artifact in build environment
  • uploading - moving artifact from build environment to repository.
  • publishing - making artifact in repository public.
  • downloading - moving artifact from repository to runtime environment
  • installing - applying artifact to runtime environment
  • deploying - using artifact in runtime environment
  • delivery - making artifact (effects) available to customer


    이전    목록    다음

history

20240203 : npm serve를 이용한 publish 방법 작성