프로젝트 정리/캡스톤

프로젝트 재정비

 

취업에 사용할 포트폴리오도 정리할 겸, 올해 상반기에 제작했던 웹 클라우드 스토리지 서비스인 Moonge drive를 오랜만에 재정비하기로 했다.

한동안 키지 않았던 서버를 다시 켜려고 하니 안되는 부분들도 많았고, 수정해야 할 부분들도 있었다. 우선 서버를 기존의 유료 서버에서 아마존에서 무료로 제공하는 AWS EC2 t2.micro로 변경했다. Docker 기반으로 서버를 구축했어서 데이터를 옮기는 것은 깃허브를 이용해 쉽게 해결했지만, 사이트에 접속이 되지 않았다. 조사를 좀 해보니, 서버에 몇 가지 문제가 있다는 것을 알 수 있었다.

 

1. EC2 서버의 HTTP, HTTPS 포트를 열지 않았다.
2. 도메인이 설정되어 있지 않아 SSL 인증서를 받지 않은 상태였지만 nginx에서는 https로 연결하도록 되어 있었다.

 

첫 번째 문제는 EC2 서버는 기본적으로 SSH를 위한 22번 포트만 열려있어 배포를 위해서는 HTTP 80번 포트와 HTTPS 443번 포트를 열어줘야 했는데, 이를 하지 않아서 생긴 문제였다. 해서 기본 보안그룹의 인바운드 규칙을 수정해서 80번 포트와 443번 포트를 열어줬다. 추가로 사이트 가입에 필요한 메일 인증을 위해 SMTP 포트인 25번 포트도 함께 열어줬다.

 

두 번째 문제는 사이트에 도메인을 설정하지 않아 생긴 문제였다. https 통신을 사용하기 위해서는 SSL 인증서가 필요하지만, 도메인이 연결되어 있지 않아 인증서도 받지 못했고, 따라서 연결이 제대로 되지 않았다. 기존에 사용하던 도메인이 있긴 했지만 프로젝트를 재정비하려고 마음을 먹은 김에 도메인도 새로 구매하기로 하고, 마침 가비아에서 .xyz로 끝나는 도메인을 할인하여 판매하고 있어 가비아에서 새 도메인을 구매했다.

도메인도 구매했고, 포트도 열었으니 연결만 하면 서버가 구동될 줄 알고 신나서 연결을 해봤지만 여전히 서버는 응답이 없었다. 로그를 살펴보니 SSL 인증용으로 사용한 certbot 컨테이너쪽의 설정 파일에서 문제가 생긴것을 알 수 있었는데, 문제는 SSL 인증서 부분은 다른 팀원이 담당한 부분이라 내가 잘 알지 못한다는 점이었다.  막막하긴 했지만 프로젝트를 하면서 만들어놨던 문서들을 살펴보니 설정 파일을 만들 때 참고한 github repository를 찾을 수 있었다.

 

 

github.com/wmnnd/nginx-certbot

 

wmnnd/nginx-certbot

Boilerplate configuration for nginx and certbot with docker-compose - wmnnd/nginx-certbot

github.com

 

이 repository는 step-by-step guide on how to set up nginx and Let’s Encrypt with Docker 라는 블로그의 글을 토대로 작성되었는데, docker 환경에서 nginx에 certbot을 적용하여 SSL 인증서를 받는 방법이 정말 이해하기 쉽게 나와있었다. 여기에 나온 예제 코드들과 우리 프로젝트의 certbot 설정 파일을 비교해보니 수정할 부분을 알 수 있었고, 이를 수정하여 성공적으로 서버를 다시 구동할 수 있었다.

 

사이트에 들어가보니 이번에는 구글, 페이스북 로그인 부분에서 문제가 발생했는데, 이는 바뀐 도메인을 리다이렉션 주소에 등록하지 않아서 발생한 문제여서 구글과 페이스북의 개발자 플랫폼으로 가서 리다이렉션 주소를 추가해주는 것으로 해결할 수 있었다. 오랜만에 사이트를 확인해보니 생각못한 버그들도 많았고, 보완해야 할 부분도 많이 보였다. 자주는 아니더라도 앞으로 점차 기능도 추가하고, 버그도 잡고, 코드 리팩토링도 수행하면서 서비스를 좀 더 다듬어 볼 예정이다.