내가 보려고 쓰는 글!
React+Node.js로 개발한 프로젝트를 배포하는 과정이다.
AWS EC2에 접속 후 콘솔에 로그인
인스턴스란 클라우드의 가상서버
인스턴스 이름 입력
AMI선택:
가상머신이어도 운영체제가 운영되어야한다.
프리티어 사용이 가능한 Amazon Linux를 선택하였다.
아키텍처 선택:
64비트
인스턴스 유형 선택:
CPU수, 메모리 크기 등을 선택할 수 있다.
프리티어 사용이 가능한 t2.micro 선택하였다.
키 페어:
처음 생성하는 것이기에 새로운 키페어 생성하였다.
표준 암호화 방식인 RSA를 선택했고, OpenSSH를 사용할 것이기 때문에 .pem 파일형식으로 선택했다.
키페어를 생성하면 다운로드가된다.
네트워크 설정:
편집을 클릭하여 보안그룹 이름과 설명을 수정해준다.
도메인 적용할 예정이기 때문에 http https 트래픽도 허용으로 설정
소스 유형을 내 IP로 설정
스토리지 구성:
프리티어는 30gb EBS범용(SSD)를 사용할 수 있다.
30gb, 범용 SSD(gp3) 선택
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-volume-types.html
고급 세부 정보는 패스
Summary 확인
인스턴스 시작
인스턴스 생성 후에 인스턴스 ID를 클릭하면 인스턴스 정보를 확인할 수 있다.
1) 인스턴스 ID - 연결 - SSH클라이언트 - 예시로 나오는 ssh 연결 링크 복사
2) 터미널에 붙여넣기
Warning: Identity file 키이름.pem not accessible: No such file or directory.
키가 있는 위치에서 인스턴스 연결을 진행해야 한다.
cd 명령어로 이동
SSH 키 파일의 권한이 너무 개방적이기 때문에 발생하는 오류이다.
아래 명령어를 사용하여 키 파일의 권한을 변경한다.
$ chmod 600 keyname.pem
연결 성공!
$ sudo su
이렇게 변경된다.
AWS 가이드 Amazon EC2 인스턴스에 Node.js 설정 참고
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install node
$ node -e "console.log('Running Node.js ' + process.version)"
$ sudo yum update // package update
$ sudo yum install git
$ git clone 프로젝트 코드 url
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
21년 8월 13일에 비밀번호 인증 지원이 종료되었다고 함.
깃허브에서 토큰 생성하고 그 토큰을 이용하여 인증을 진행
깃허브에서 personal access token 생성하기
토큰 생성 경로
=> 깃허브 settings - Developer settings - Personal access tokens - Generate new token
$ sudo yum install nginx
cd 슉슉~
만약 ec2-user 에서 나가졌다면
$ cd /home/ec2-user
명령어를 통해 ec2-user 디렉토리로 이동할 수 있다.
$ npm install
$ npm build
이 과정은 새로운 버전을 배포할 때마다 진행해준다.
Creating an optimized production build...
여기서 멈춤 현상이 발생하고 있다.
찾아보니 프리티어로 이용하는 t2.micro라서 메모리 부족으로 인해 빌드가 안되는 것이라고 한다.
해결하고 마저 작성해야겠다.
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.