[AWS] AWS EC2로 첫 배포를 시도하며 마주한 에러들

Jay·2021년 12월 6일
0
post-thumbnail

얼마 전, AWS EC2를 활용해 개인 프로젝트의 node.js 서버를 배포해 보았다. 일단 필자는 배포에 있어 아예 무지했다. AWS도 그렇고, 새로 접하게 된 리눅스나 우분투도 그렇고 뭐가 뭔지 자세히 알아볼 겨를도 없이 그저 구글링을 통해 따라하기 바빴다. 그 과정 속 내 무지가 낳은 숱한 에러들의 기록...

1. EC2에 MySQL 서버 구축🛠

EC2에 MySQL 서버를 구축하는 방법은 쉽게 찾아볼 수 있다.
간략하게 그 순서를 적어 보자면,

  1. EC2 인스턴스에 접속해 mysql-server 설치
  2. root 비밀번호 설정
  3. 외부 접속을 위해 mysqld.cnf 파일 수정
  4. 외부 접속을 위해 별도의 계정 생성 및 권한 부여
  5. EC2 인스턴스의 보안그룹에 3306 포트 추가

위의 과정을 다 거쳤음에도 불구하고 mysql workbench에 연결할라 치면 연결할 수 없다는 에러 메시지가 계속해서 떴다. “어쩌구 저쩌구해서 안 됩니다” 하는 디테일한 에러 메시지도 아니고 “님은 걍 안 됨ㅇㅇ” 수준의 메세지라 돌아 버리는 줄 알았다. 포기해야 하는 건가 하다가 진짜 마지막이다 라는 심정으로 최후의 구글링을 시전, 운 좋게 정보를 서치해냈다.

바로 mysql을 재시작해야 된다는 것.

sudo service mysql restart
sudo ufw allow out 3306/tcp
sudo ufw allow in 3306/tcp
sude service mysql restart

터미널에서 위의 코드를 차례로 입력해 주고 나서야 워크벤치에 스무스하게 연결됐다.

※참고로 sudo ufw 는 방화벽 설정을 위한 명령어이다.

2. 도통 뜨지 않는 서버🛠

MySQL까지 구축했겠다, 자신 있게 서버를 접속해 보는데 이번엔 사이트에 연결할 수 없다는 에러 페이지가 떴다.

알고 보니 노드 서버라 자연히 3000번 포트로 열리도록 설정이 되어 있었는데, 그렇담 인스턴스의 보안그룹에도 3000번 포트를 추가해야 하는 걸 싸악 망각하고, 구글링한 내용만 무작정 따라했으니 당연히 안 됐던 거다. 한나절을 붙들고 있던 문제였는데… 해결하고도 후련함보단 승질이 앞섰다. 이렇게 기본적인 걸 잊었으니 말이다. 어찌됐든 내 부주의가 자초한 일. 엄청 반성했다.

3. AWS 인스턴스에 HTTPS 적용🛠

EC2에 HTTPS 적용하는 법 역시 많은 개발자 분들이 잘 정리해 주신 덕에 어렵지 않게 적용해 볼 수 있을 것이다. 그럼에도 어렵게 해낸 사람이 있다?

우선은 HTTPS 적용 방법도 아주 간단히 적어 보겠습니다.

  1. AWS Route 53에 가서 구매한 도메인 등록
  2. AWS Certificate Manager에서 SSL/TLS 인증서 발급
  3. 로드 밸런서 생성
  4. 로드 밸런서 내 리스너 탭에서 라우팅 설정 및 인증서 등록
  5. 대상 그룹 설정에서 인스턴스 등록
  6. Route 53에서 A 레코드 생성
  7. 인스턴스 보안 그룹에 포트 80번, 443번 추가

문제가 발생한 건 5번에서였다. 굳이 나름의 변명을 해 보자면, 로드 밸런서를 생성할 때 그래도 비교적 최근 작성된 (이미지까지 예쁘게 첨부된) 다른 분들의 설명글을 참고하며 따라해도 나와는 다른 화면으로 진행이 되는 거다. 대상 그룹 등록을 위한 별도의 탭이 사라져 버린.. 다시 보니 AWS에서 고새 UI를 변경한 듯했다.

저기 저 Create target group을 클릭해서 생성한 대상 그룹에 별도로 인스턴스를 등록시켜야 했다. 쓰고 보니 진짜 너무 별 게 아니라서 민망하네. 좌우간 이또한 내 부주의가 초래한 소소한 대참사… 역시나 마구마구 반성했습니다.

4. 502 Bad Gateway🛠

자, https 적용을 마치고 또 한번 조우하는 새로운 에러. 언제쯤 내 개발 인생은 catch를 거치지 않고 무난히 try를 실행할까 생각했다.

EC2 502 Bad Gateway로 구글링 해 보니 해당 에러에는 여러가지 원인이 있었다. 딱 이거다! 하고 꼽을 수 없다는 뜻. 그 말인 즉슨, 문제 해결을 위해 여러가지 시행착오를 거쳐야 한다는 거다.

거두절미하고, 내가 겪은 502 에러는 포트 리다이렉션을 해 주지 않아 생겼던 문제였다.

  1. sudo apt-get install iptables-persistent netfilter-persistent
  2. sudo iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3000
  3. sudo iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 443 -j REDIRECT –to-port 3000
  4. sudo netfilter-persistent save

우분투 터미널을 열어 위의 명령어를 순서대로 입력하고 나서야 그야말로 마침내.. 서버가 제대로 작동했다는 해피엔딩!

profile
개발할래요💻

0개의 댓글