자신이 통제하는 서버에서 실행되는 블로그

그만두었다가 다시 시작함을 여러번 반복하긴 했지만, 어쨌든 블로그를 시작한지도 7년이 넘었다. 그동안은 네이버 블로그를 주로 사용하였고 티스토리 블로그를 잠시 사용하기도 했다. 그러나 이제는 더 높은 수준의 기능과 자유도를 갖춘 블로그를 갖기 위해, 그리고 웹 어플리케이션의 개발에 앞서 조금이라도 의미있는 경험을 쌓기 위해 직접 서버에 블로그 어플리케이션을 돌리기로 했다.

좋아하는 프로그래밍 언어인 Perl의 프레임워크 중 하나를 이용하여 블로그 어플리케이션 전체를 작성하려고 했는데, 군인 신분인 지금으로서는 시간적으로도 어렵고, 내가 원하는 수준의 블로그를 구축하는 것까지는 아직 내 능력 밖이라는 것을 깨달았다.

그러던 중 Ghost라는 Node.js기반 오픈소스 CMS를 발견하였고, Apple를 포함한 많은 IT기업들 또한 이 서비스를 이용한다는 사실을 듣고 바로 나도 이용하기로 결심했다. Ghost에 대한 조금 더 자세한 설명은 여기를 참고하면 좋다.

이 글은 어느정도는 읽는 이로 하여금 쉽게 Ghost를 기반으로 블로그를 구축하도록 돕는 것을 목적으로 하나, 기본적으로는 시간이 흐르고 나서 기억이 흐릿해졌을 때 필자 스스로가 참고하기 위해 작성된 것이다. 따라서 모든 단계를 생략없이 다루기는 하나, 모든 단계를 그림 등과 함께 세세하게 묘사하지는 않는다.

Ghost와 AWS Lightsail을 이용한 블로그 구축과정

이 글은 다음과 같은 순서로 진행된다.

  1. AWS Route53에서 도메인 구매
  2. AWS Lightsail 인스턴스 생성 및 도메인 연결
  3. AWS Lightsail에 Ghost 설치 및 추가설정
  4. 마무리

AWS Route53에서 도메인 구매

완성된 블로그에 접속하려면 블로그가 설치된 서버의 ip주소를 주소창에 입력해야하는데, 그렇게 블로그에 들어오고 싶은 사람은 없을 것이다. (게다가 SSL인증서도 발급받지 못한다.) AWS Route53은 www.example.com 과 같은 주소를 ip주소로 연결해주는 역할을 한다. 꼭 AWS Route53을 이용할 필요는 없다.

블로그에 사용하려는 블로그의 도메인을 이미 소유하고 있는 것이 아니라면 AWS Route53에서 도메인 등록을 선택하여 도메인을 구입하면 된다. 1년 단위로만 구입가능하며 가장 유명한 .com형태는 1년에 12달러이다. 최근 IT업계에서 인기있는 .io형태는 39달러이다. 필자는 yujonglee.com을 구매하였다. 그 외 추가 요금은 여기서 확인 할 수 있다. 일반적인 사이트의 경우 아주 약간의 추가요금 외에는 지불할 일이 없을 것이다. 세금은 별도이다.

이 두 가지 추가요금을 참고
DNS-Queries -> $0.40 per 1,000,000 queries for the first 1 Billion queries
HostedZone -> $0.50 per Hosted Zone for the first 25 Hosted Zones

AWS Lightsail 인스턴스 생성 및 도메인 연결

AWS에서는 사용한 컴퓨팅 파워와 시간만큼만 유동적으로 사용료를 지불하는 EC2라는 서비스가 유명하다. 물론 그것으로도 블로그 서비스를 운영할 수 있지만, 일반적인 작은 규모의 웹서비스의 경우 Lightsail이 더 사용하기 쉽고 저렴하다. Lightsail은 (Linux서버기준) 월 3.5달러512MB의 메모리20GB의 SSD디스크, 1코어 프로세서의 가상서버와 1TB의 전송량을 제공한다. 이 정도면 작은 규모의 블로그를 운영하기에 충분하다. 물론 추후 업그레이드하거나 스토리지만 추가할 수도 있다. 데이터 전송량의 경우 초과 사용하더라도 업로드 비용에 대해서는 청구되지 않는다.

인스턴스 생성 후 기초 설정여기에서 3. HTTPS port 허용 항목까지 참고하면 된다.

도메인 연결은 AWS Route53의 대시보드 - DNS관리 - 호스팅 영역에서 자신의 도메인을 클릭하면 NS와 SOA유형의 레코드세트가 이미 존재하는 것이 보일 것이다. 여기서 유형 : A , 값 : 바로 위 링크에서 설정한 Static ip(고정 ip) , TTL : 300(초)를 가진 레코드세트를 생성하면된다.

다른 블로그 글들을 보면 SSH연결을 위해 개인키를 다운받는 부분이 꼭 등장하는데, 초보자에게는 AWS에서 제공하는 브라우저를 이용한 SSH연결이 더 쉽고 편리하므로 따라하지 않아도 된다.

AWS Lightsail에 Ghost 설치 및 추가설정

가장 중요한 부분이다. 정확한 명령어를 실수없이 입력해야 문제없이 설정이 완료될 것이다. 앞서 언급한 것처럼 필자는 AWS에서 제공하는 브라우저를 통한 터미널을 이용하여 작업하였다. 물론 다른 방식으로 접속해도 상관없다.

실제 사용한 명령어들을 정리하려고 했으나, 그 과정은 여기에 정리된 것과 사실상 동일하여 굳이 작성하지는 않는다. 다만 저 글을 참고할 때 몇 가지 주의해야할 부분이 있다.

  • <user>, [user] 는 실제 저 텍스트를 입력하라는 것이 아니라, 그것을 원하는 이름으로 대체하라는 것이다. 터미널 환경에 대한 경험이 없다면 착각하기 쉽다.
$ sudo adduser <user> 
$ sudo usermod -aG sudo <user> 
$ su - <user> 

즉, 위 부분에서 사용자이름을 yujong으로 하고 싶다면, 아래와 같이 입력해야한다.

$ sudo adduser yujong
$ sudo usermod -aG sudo yujong
$ su - yujong
  • Node.js 버전을 잘 바꾸어서 입력해야한다. 이 곳에서 Ghost가 추천하는 Node.js의 버전을 확인할 수 있다. 필자가 설치할 당시에는 10.x가 추천버전이었기에, 아래와 같이 입력했다.
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash
$ sudo apt install -y nodejs
  • 여기에는 Mysql설치시에 root비밀번호 설정하는 과정이 있을 것이라고 하는데, 버전이 바뀐 탓인지 해보면 그런 과정이 없다. 설치 후 직접 비밀번호 설정을 해주어야한다. Mysql 버전에 따라 방법이 달라지기도 하니, Mysql 설치 후 버전을 확인한 뒤에 구글 검색을 통해 비밀번호를 설정한 뒤 이후 과정을 진행하면 된다.

모든 설치를 마치고 남은 디스크 용량이 얼마인지 알고 싶다면, 터미널에서 df -h를 입력하면 된다.

마무리

여기까지 왔다면, <블로그주소>/ghost의 관리자 페이지로 접속하여 블로그 설정을 마무리하면 된다. 이후에는 테마선택과 그것을 수정하는 과정이 남아있다. 기본으로 제공되는 Casper테마 외에 다양한 유,무료 테마를 인터넷에서 구할 수 있으며 그것을 원하는 대로 수정해서 사용할 수도 있다. Ghost에서 테마는 단순히 외적인 디자인뿐 아니라 Code Highlighter나 Google Analytics같은 기능추가도 포함하므로, 그 가능성은 무궁무진하다. 테마 개발에 관한 내용은 Ghost공식문서이곳을 참고하면 좋다.

그럼 다들 자신이 통제하는 서버에서 실행되는 블로그가 주는 자유를 느껴보길 바란다.