AWS를 활용한 블로그 시스템 만들기

그동안 네이버에서 제공하던 블로그를 써서 글을 써왔다.

많지 않은 글이긴 하지만 그래도 근 10년 가까이 글을 쓸 수 있도록 해준 고마운 친구였다. 하지만 변화하는 세월앞에서 그 친구도 새로운 옷을 점점 갈아입기 시작하더니 결국에는 내가 싫어하는 스타일로 가버렸다.

개발자의 이야기를 많이 하고 싶은 심정이긴 하지만 받아주는 친구가 맛집에 너무 친화적으로 바뀌다보니까 개발자스럽게 글을 쓸 수 있는 거랑은 거리가 멀어져버린 것 같다.   절이 싫으면 중이 떠나서 본인 입맛에 맞는 걸 찾는 수밖에 없겠지…  온라인 툴로 많이 사용하는 브런치도 꽤 좋은 선택지일 것 같지만 코드를 담아내기에는 최적은 아닌 것 같았다.

결론은 워드프레스(WordPress)를 이용해서 나만의 시스템을 만들자!  최근에 아마존 AWS 기반으로 일을 하고 있기 때문에 처음부터 끝까지를 해본다면 얼마나 할 수 있을지를 시험해보고 싶기도 했다. 하면 된다고 말을 했지만 실제로 처음부터 끝까지 내 손으로 해본 적은 또 없기 때문에 이번이 좋은 기회라는 생각도 들었다.

간단히 무료 블로그 시스템을 구성하는데 사용한 것들은 아래와 같다.

  • EC2 – 1 CPU, 1G Mem, 30G SSD Disk
  • Elastic IP – Public IP (고정 IP 할당용)
  • RDS – MySQL Instance, 20G 용량
  • Route53 – 도메인 등록 및 Sub domain 관리

 

Setting AWS Environment

EC2

EC2DiskUsage사용할 워드프레스는 PHP 기반이므로 아파치에서 동작된다. 이건 이걸 돌리는데 그리 큰 메모리를 필요로 하지 않는다는 것이다. 또한 특성상 CPU를 많이 먹을 이유도 없다.  그렇기 때문에 죽는걸 고려하지 않는다면 아주 간단한 웹서버만으로도 돌리는게 가능하다.

EC2에서 제공하는 Free Tier 장비로 1CPU, 1G를 제공한다. 자바 어플을 돌리기에는 부담스럽긴 하지만 워드프레스류를 돌리기에는 부담이 없다. 와중에 저장 공간 역시 30G를 제공한다. 당장 쓰는데 필요한 모든 소프트웨어를 다 깔아둔 상황임에도 불구하고 5% 수준을 사용하고 있다. 95%를 언제 채울 수 있을까 싶긴하다.

EC2를 통해 생성된 클라우드 장비는 변동 IP를 가진다. 고로 장비를 Restart되거나 혹은 리부팅되면 IP가 바뀔 가능성이 아주 농후하다.  물론 Private IP는 변경되지 않지만 Public IP는 소중한 존재이기 때문에 고정된 형태로 한 장비에 이를 허해주지는 않는다.

외부에서 그 이 장비를 어떻게 볼 수 있는거지?  그 방안을 Elastic IP를 통해 제공한다.

 

Elastic IP

AWS 환경에서 고정 Public IP를 사용하기 위해서는 Elastic IP를 사용해야 한다.  가난히 설명하면 고정 Public IP를 갖는 Domain Name을 생성하고, 그 IP에 다시 특정 EC2 Instance를 Binding 시키는 방법이다.

물론 익히 아는 바와 같이 이건 유료다. Public IP를 할당받았으면 아마존은 담달부터 당신에게 청구서를 보낼 것이다.

RDS

예전에 이런 서비스가 있다는 이야기를 듣긴 했지만 써보니 역시 좋았다. 각종 RDBMS를 내가 별도로 설치하는게 아니라 몇 개 설정만 꾹꾹 누르면 설정하기 힘든 데이터베이스 서버가 쭉쭉 생겨난다.

가장 흔하게 사용할 수 있는 MySQL 서버를 지정했다. 인스턴스 타입을 보면 Production용과 Dev/Test용 장비로 분명하게 고를 수 있다. Dev/Test 용도의 장비는 무료이기 때문에 당연히 이걸로 갔다. 와중에 용량도 최대 20G(!!)나 준다. 내가 이걸 다 채울려면 아마도 글을 정말 열심히 써야할 것 같다는 생각 뿐이다.

생성된 데이터베이스 인스턴스는 이름을 통해 접근 가능한 Entry Point를 제공한다. 물론 IP를 통해 접근도 가능하겠지만, 클라우드 환경에서 IP는 믿을 수 없는 존재이다. 어떻게든 이름을 가지고 접근할 수 있어야 한다.  설정에서 주의할 점은 MySQL 데이베이스에 대한 접근을 모든 IP 대역에서 접근하도록 허용하면 좀 곤란한다. 가급적 외부망에서의 접근은 차단하고 EC2에서 생성된 Instance만을 통해 접근이 되도록 제어를 해주는게 좋다.

Router53

도메인을 신청한다.  여기에서는 chidoo.me  물론 이것도 다 돈이다. 하지만 인터넷상에 자신의 집을 하나 가진다고 생각하면 머… 술한잔 값도 아니니 안심하구 지르시길 바란다.

도메인이 신청되면 Hosted Zone이라고 해당 도메인의 Sub domain을 관리할 수 있는 기능이 생긴다. CNAME 방식으로 Elastic IP를 통해 생성된 내부 도메인 이름을 www.chidoo.me가 되도록 설정한다.

Setting WordPress

워드프레스 설정 자체는 인터넷상에서 충분한 정보가 있기 때문에 굳이 따로 언급하지는 않는다.

다만 주의할 점은 한가지 있다. 워드프레스의 각종 기능들을 업데이트하기 위해 ftp 기능을 사용한다.  하지만 ftp는 매우 보안상 취약한 놈이기 때문에 쓰지 말아야 한다. 이 방식보다는 다음의 방법을 통해 각종 테마나 플러그인을 업데이트할 수 있다.

다음의 두 사이트에서 원하는 걸 찾는다.

  • 플러그인: https://wordpress.org/plugins/
  •  테마: https://wordpress.org/themes/browse/new/

다운로드를 원하는 것을 찾았다면 다음의 방법을 해당 모듈의 다운로드 링크를 찾는다.

GetDownloadAddress

복사를 했다면 터미널에 접속해서 이걸 플러그인 혹은 테마 디렉토리에 wget 명령을 이용해서 다운받는다.

$ cd $WPINSTALL/wp-content/

해당 디렉토리에 보면 plugins, themes 라는 디렉토리가 존재하는 것을 확인할 수 있다.


$ wget <download-url>

$ unzip <downloaded_file>

$ mv <downloaded_file>

확인 후 워드프레스의 Dashboard를 통해 활성화시키면 적용 완료!  약간의 수고를 더하면 불필요한 위험을 굳이 감내할 필요가 없다.

끝.