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개의 댓글

관련 채용 정보