TIL : 210812_목_(서버 배포)

beablessing·2021년 8월 12일
0

TIL

목록 보기
32/33
post-thumbnail

EC2

AWS에서 제공하는 클라우드 컴퓨터 서비스
=> 원격제어가 가능한 가상의 컴퓨터 한대를 빌리는 것 (1대 = 1인스턴스)

연결을 마치면 위 사진과 같이 로컬이 아닌 aws에서 제공하는 서버에서 제어가 가능해진다.

[인스턴스 생성]

  • AMI (amazon machine image) like template
    사용용도에 맞게 운영체제, 런타임이 구성된 세팅을 선택한다.
  • 인스턴스 유형선택 : 가입 후 1년까지는 프리티어 사용가능
  • 기존 키 또는 새 키 페어를 생성해준다. (ec2에 연결하기 위한 key이름을 정한다)
    => 다운해서 로컬에 저장하게 되는데 (.pem)파일로 저장된다.
    => SSH프로토콜을 통한 원격접속을 위해 필요한 .pem파일

    [왼쪽. client가 가진 비밀키]
  • 인스턴스ID로 인스턴스를 구분(name수정해서 구분을 쉽게 할 수 있음)

[인스턴스 연결]

  • 인스턴스 탭에 들어가서 연결을 클릭
    => 새로 뜨는 창에 ssh클라이언트 라는 탭이 있다
  • 프라이빗키를 비공개로 돌리는 명령어를 입력한다.
    chmod 400 AWS_Deploy_<키네임>
  • 아래 명령어를 터미널에 입력하면, 생성한 인스턴스와 터미널이 연결됨. (키의 경로입력해야함_접속주소는 : 퍼블릭ipv4 DNS)

    예시)

[인스턴스에 개발환경 구축하기]

  • 패키지정보 최신업뎃
    sudo apt update

  • nvm인스톨
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" : load nvm

  • node 인스톨
    nvm install node

  • npm 인스톨
    sudo apt install npm

  • 로컬환경과 마찬가지로 인스턴스 위에 작업을 진행한다
    관리자권한이 필요하므로, npm start가 아닌 sudo npm start 로 서버실행

  • 서버 실행후, EC2인스턴스의 IP주소로 접속한다.
    (보안그룹 설정 전까지는 에러가 뜸)

[보안그룹 설정]

인스턴스로 들어가고 나가는 트래픽에 대한 가상 방화벽 !
(인바운드, 아웃바운드 : 각각 규칙을 추가해서 필터링을 거친다)

  • 인바운드 규칙: EC2로 들어오는 트래픽에 대한 규칙
    기본적으로 SSH접속을 위한 규칙만 생성되어 있음
  • 아웃바운드 규칙 : 인스턴스에서 나가는 트래픽에 대한 규칙
    나가는 모든 트래픽허용이 디폴트 값.

    현재 실행되고있는 서버가 해당하는 포트 + 모든IP(때에 따라)에 대해 접속허용

[PM2]

프로세스 매니지먼트 도구.
사용이유는 ? 1.ssh에서 ec2서버실행을 종료하게되면, node까지 강제종료가 됨. 이를 보완
또는 2. 서버실행을 하면서 다른 명령어의 실행도 진행하기위해서


<cli명령어로 백그라운드 다루기>

  • 리눅스/유닉스 체제에서도 백그라운드 실행이 가능하긴 함

    첫번째 npm start의 경우, 서버를 실행하면 다음 명령어 입력이 불가능하다.
    두번째 npm start &를 써줘서 다음 명령어를 입력할 수 있음

    pid를 알면, fg 또는 kill명령어를 통해 백그라운드로 실행/종료 가능.

<pm2로 프로세스 관리하기>

  • 장점:

1.hot reload : 프로그램이 변경될 때 자동으로 재시작을 도움
2. 에러로 인해 서버가 종료되면, 자동실행
3. 로그관리 전문적으로 도와줌
...

  • 사용과정
  1. pm2 설치 (글로벌로 설치)
    npm install pm2 -g
  2. authbind 패키지 설치( pm2에 관리자 권한 부여하기)

    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 //<<<== 관리자에게 권한을 부여해주는 명령어
    authbind --deep pm2 start app.js //<=== pm2로 서버실행

  3. pm2 시작 : 노드를 백그라운드로 실행
    pm2 start

    "pm2 stop" 프로세스 중지
    "pm2 restart" 프로세스 재시작
    "pm2 ls" 프로세스 목록 보기
    "pm2 log" 프로세스 로그 보기

profile
프론트엔드 개발자

0개의 댓글