2022. 01. 18 (화) Error-Log

kihunism·2022년 1월 18일
1

ErrorLog

목록 보기
1/1

Error-Log

오늘 EC2, S3 배포 도중 문제가 너무 많았다. 로컬에서 작업하는 환경이랑 배포 환경이랑 당연히 다르기 때문에 문제가 많은건 당연한데, 이상하게 원인불명 오류가 많아서 포스팅으로 정리하려고 한다.

엔드포인트 요청 이후 404 에러코드

1) EC2에서 서버 실행
2) 클라이언트 요청 엔드포인트 코드를 EC2 URL로 수정
3) build 후 버킷에 담아서 S3 실행
4) 요청 및 응답 결과 확인

현재 팀 프로젝트의 주요 기능은 users의 기능과 posts의 기능이 있다.
users의 기능은 로그인, 회원가입 등 사용자에 관한 것이고 posts의 기능은 게시물, 게시물 검색, 해시태그 등 말 그대로 게시물에 관한 기능인데 users의 엔드포인트는 잘 작동을 한다. 근데 문제는 posts의 요청과 응답에서는 404오류가 난다. 그 악명 높은 404오류이다.

여기서 문제는,

  • 나의 로컬에서의 서버(localhost:8080)에서는 동작이 잘 된다.
  • 엔드포인트 EC2 URL을 했을 때, users의 기능은 모두 동작이 잘 된다.
  • 근데, posts의 몇몇 기능은 동작이 되지 않는다.
  • ???????????????????????????????????????????????

요청도 잘 갔고, 응답도 잘 되는데 왜 몇몇 기능은 되지 않을까? 심지어 그 전에는 같이 백엔드 작업을 한 팀 원과 데모를 돌렸을 때 잘 되었다. 근데 갑자기 되지 않아서 내가 코드를 잘 못 건드렸나..... 했다.

나의 해결 방법: 결론부터 말하면, 깔끔하게 해결은 했다. 일단 EC2 내의 MySQL을 초기화 시키고, 서버 실행 코드(index.js)의 코드를 점검했다. 그리고 404오류라서 엔드포인트를 유심히 관찰하고 postman으로 다시 점검 했다. postman으로 점검하니 서버가 다운되는 현상을 보고 엔드포인트 문제라고 생각했다. 그리고 점심시간에 밥을 먹으면서 생각이 들었는데 그전에는 작동이 잘 되었다. 그럼 엔드포인트에는 문제가 없는 건데 도대체 무슨 문제인가 싶어서 서버 실행코드에서 DB를 다시 비우고 다시 데이터를 받아서 넣은 다음 실행 시켰다. 이제서야 해결이 된 것을 확인했다. 기억을 복기 시켜서 생각해보았으나 원인을 모르겠다.

엔드포인트 요청 이후 405 에러코드

일단 405오류는 처음 들어봤다.

정확히는 405 (Method Not Allowed) 이다. 이 오류는 배포를 처음 했을때, POST 메소드를 요청했을 때 나타난 오류이다. 그래서 에러코드도 간단하고 명료하니 구글링을 했다. 구글링을 한 결과 이 에러코드가 나타나는 이유가 굉장히 많아서 오히려 오류를 알기 더 어려웠다.

405에러코드가 나타나는 이유
1) 클라이언트 요청 메소드와 서버 응답 메소드가 일치하지 않을 경우
2) 요청 메소드가 유효하지 않을 경우
3) 지원하지 않는 메소드를 사용하였을 경우
4) cors 옵션 설정에 따라 다름
5) 위 이유 말고도 다른 이유가 많았다.

나의 해결 방법: 일단 위 이유 중 1, 2, 3은 절대 아니다. 그러면 4번 이다. 그래서 CORS 정책 및 옵션을 살펴본 결과 origin 옵션을 true로 해야 한다고 한다. 그래서 코드를 살펴보니 localhost:8080으로 되어 있길래 수정하고 다시 실행하니 문제가 없었다. 큰 문제가 아니고 빠르게 해결 되어서 다행이라고 생각한다.

로컬 서버 포트 강제종료

위 2가지 에러로그와는 다르게 조금 가벼운 이슈이며, 내가 기억하고 까먹었을 때 마다 참고해서 원활하게 진행하려고 작성하는 것이다.

VSCode 터미널(로컬)에서 서버를 실행시키고 원래는 종료를 하고 VSCode를 종료해야 하는데 서버를 종료시키지 않고 VSCode를 종료시킬 때 자주 발생하는 오류이다. 또한 다른 상황에서도 나타나는데 정확한 상황을 잘 기억이 나지 않고, 이 오류가 발생했을 때 마다 그냥 사용만 하면 된다.

바로 로컬서버포트를 8080으로 실행시키고, 잠시 잊어버리거나 다른 작업을 하다가 또 VSCode를 켜야할 때, 포트가 이미 실행 중이라고 하는 경우가 많다. 이때 포트번호 8080을 강제종료 시켜야 한다. 이 때 그러면 '포트번호를 다른 번호(8081)로 하면 되지 않냐?' 라는 의문이 들 수가 있는데 그러면 클라이언트의 요청 엔드포인트를 모두 바꿔주어야 하는 번거로움이 생긴다. 그래서 이러한 상황이 발생하면 8080포트를 강제종료 시킨다.

강제종료 하는 Linux CLI (터미널 실행 코드)

sudo kill -9 $(sudo lsof -t -i:8080)

profile
Code Occulter

0개의 댓글