LOG 시스템을 만들기 위해서 firebase의 realtime을 사용한 코드를 aws ec2로 배포를 진행했다.
몇가지 문제점과 에러를이 발생했다.
firebase에서 인증에 대한 json파일을 로컬에 받았었는데 ec2인스턴스상에서 절대경로가 달라서 json파일을 ec2로 옮겨주어야했다.
// 옮기는 방법
~ scp -i [키페어경로] [전송할 파일 경로] [ec2 계정이름]@[퍼블릭 DNS 주소]:[전송할 ec2 경로]
// 내가 옮긴 코드
// 나는 handleKeypair폴더에 키페어 인증서와 json파일을 넣어뒀기 때문에 그 폴더안에서 밑의 명령어를 입력했다.
-> **handleKeypair** scp -i ./handle_log_key_pair.pem ./handle-id-firebase-adminsdk-4o2u4-25c9c98276.json ubuntu@ec2-52-78-85-119.ap-northeast-2.compute.amazonaws.com:~
sudo npm start 명령어를 입력했을때 에러가 발생해 다음과 같이 해결하였다.
// 에러메세지
Error: listen EADDRINUSE: address already in use 0.0.0.0:80
// 해결방법
// 현재 사용중인 포트번호입력한다.
sudo lsof -i :포트번호
// 위 명령어를 입력했을때 뜨는 PID번호를 입력해준다.
sudo kill -9 [PID번호]
FIREBASE WARNING: Firebase error. Please ensure that you spelled the name of your Firebase correctly (https://handle-log-default-rtdb.firebaseio.com/)
로컬에서는 실행도 잘되고 aws의 파라미터 스토어에도 환경변수를 잘 넣어주었는데도 위의 에러가 떴다.
ec2에서 환경변수를 잘 읽어오지 못하나 싶어서 ec2 서버에 접속해 start.sh 파일에 있는 코드를 한줄한줄 입력해줬지만 같은 에러가 떴다.
결국 config.js의 databaseURL의 값을 환경변수가 아닌 firebase의 realtime db 주소를 문자열로 넣어주고 실행하니 에러도 안나고 정상적으로 작동되었다.
s3에 배포후 흰창이 떴었는데, firebase환경변수 문제로 생각됬다.
처음엔 ec2상에서 환경변수를 변경하면 되는 줄 알고 변경했지만, 결과는 달라지지 않았다.
aws → codeDeploy → 프로젝트빌드 → 해당 프로젝트 선택 → 빌드 세부정보 → 환경편집 → 환경변수 등록
환경변수를 등록하니 오류없이 정상적으로 창이 뜨고 해결했다.
여기서 경로를 server까지 설정했어서 server파일로 다받아져서 오류났었음