AWS 실습
먼저, AWS에 가입을 했다.
나중에 폭탄을 맞고싶지 않다면 실습 중엔 꼭 프리 티어로 선택해야한다. 모든 과정 중 요금제 선택하는 구간에서는 신중하기 !
✅ 서버 배포 (EC2)
인스턴스 생성
EC2 서비스 검색 ➡️ 인스턴스 시작 ➡️ 용도에 맞게 AMI 선택 ➡️ CPU, RAM, 용량 선택 ➡️ 검토 및 시작 ➡️ 키 페어 생성 및 다운로드(.pem 파일) ➡️ 인스턴스 시작 ➡️ 인스턴트 탭 이름 설정 ➡️ 완료
* SSH 프로토콜 (.pem파일) : 보안상 안전하게 통신을 하기 위한 통신 규약으로 해당 키 페어를 가지지 않는 사람은 통신되는 데이터를 알아볼 수 없기 떄문에 보안상 안전한 통신 방법이다.
인스턴스 연결
인스턴스 선택 ➡️ 연결 ➡️ SSH 연결 ➡️ 터미널에 "chmod 400 ~/Downloads/키 페어파일(.pem)" 권한 수정
➡️ ssh 명령어 "ssh -i "~/Downloads/키 페어파일(.pem)" 사용자이름@DNS" 를 통해 접속 가능 ➡️ yes !
인스턴스 개발 환경 구축
$ sudo apt update
<nvm 설치 https://github.com/nvm-sh/nvm>
$ nvm install node
$ sudo apt install npm
위 명령어를 차례대로 입력하여 환경을 구축한다 ➡️ git을 통해 서버 코드를 클론 받는다 ➡️ 서버 폴더로 이동 후 npm install 로 필요한 모듈을 다운 받는다
보안 그룹 설정
보안그룹 ➡️ 인스턴스에서 확인된 보안그룹을 클릭 ➡️ 인바운드 규칙 편집 ➡️ 규칙 추가 ➡️ IP 범위 설정
서버 실행하기
sudo npm start
linux/unix 계열 운영체제 : `&`라는 키워드를 명령 뒤에 붙여 백그라운드 실행
대신에 프로세스를 전문적으로 관리해주는 프로그램인 PM2를 사용한다.
npm install pm2 -g
"pm2 stop" 프로세스 중지
"pm2 restart" 프로세스 재시작
"pm2 ls" 프로세스 목록 보기
"pm2 log" 프로세스 로그 보기
관리자 권한 부여 authbind 패키지 설치
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
✅ 클라이언트 배포 (S3)
정적 웹 페이지 빌드
.env "http://<DNS주소>" 서버 주소 담아주기 ➡️ 'npm run build'
S3 대시보드 버킷 생성
버킷 만들기 ➡️ 버킷 클릭 ➡️ 속성 ➡️ 정적 웹 사이트 호스팅 활성화 ➡️ index 문서 설정 및 저장
버킷 업로드
객체 ➡️ 업로드 ➡️ build 폴더 안의 내용 업로드하기
퍼블릭 엑세스 차단 설정 해제, 다른 사용자의 접근 권한 부여
권한 ➡️ 퍼블릭 엑세스 차단(버킷 설정) 체크 박스 해제 ➡️ 버킷 정책 옵션 ➡️ 정책 생성기 ➡️ 'S3 Bucket Policy' ➡️ Principal : * ➡️ Actions : GetObject ➡️ JSON 복사 후 버킷 정책 편집 페이지에 붙여넣기 ➡️ 저장 ➡️ 엔드 포인트 클릭
✅ 데이터베이스 연결 (RDS)
DB 인스턴스 생성
RDS ➡️ 데이터베이스 생성 ➡️ 엔진 옵션 선택 ➡️ 식별자 이름, 마스터 사용자 이름과 암호 ➡️ 퍼블릭 엑세스 가능 "예" ➡️ 보안 그룹 포트 13306 ➡️ 데이터베이스 옵션 이름 설정 ➡️ 생성
데이터베이스 연결
mysql.server start
mysql -u [마스터 이름] --host [엔드포인트 주소] -P 13306(포트번호) -p
password:
show databases;
서버 환경 설정
인스턴스 접속 후
mv .env.example .env
nano .env
------------------------------------------
DATABASE_HOST=DB 인스턴스의 엔드포인트 주소
DATABASE_USER=마스터 사용자 이름
DATABASE_PASSWORD=마스터 암호
DATABASE_PORT=port번호
------------------------------------------
##설정 후 cmd+x, yes, enter
➡️ "sudo npm start" or "authbind --deep pm2 start app.js"
성공 !