AWS Lightsail + bitnami 로 Ghost 블로그 뚝딱 만들기
블로그를 만들기로 다짐하고, 플랫폼은 Ghost를 사용하기로 결정했다. Ghost를 설치하기 위해서 다양한 옵션들이 존재하지만, 여러번의 시행착오를 통해 AWS Lightsail을 통한 호스팅과 bitnami에서 제공하는 ghost package를 사용해서 블로그를 구축했다.

블로그를 만들기로 다짐하고, 플랫폼은 Ghost를 사용하기로 결정했다.
Ghost를 설치하기 위해서 다양한 옵션들이 존재하지만, 여러번의 시행착오를 통해 AWS Lightsail을 통한 호스팅과 bitnami에서 제공하는 ghost package를 사용해서 블로그를 구축했다.
AWS Lightsail

AWS lightsail 은 저렴한 옵션을 제공하며, 다른 aws 인스턴스에 비해 사용자가 직접 설정을 해줘야 하는 부담이 적다.
저렴하며 간편하게 가상 서버 구축 서비스를 제공 받을 수 있기 때문에 해당 서비스를 선택했다.

가입을 하고 Lightsail 콘솔에 접속해 Create an instance 버튼을 누르면 위와 같은 페이지로 이동된다.
Platform은 Linux/Unix를 선택하고, Apps + OS 옵션에서 Ghost를 선택하면 간편하게 블로그 구축을 위한 인스턴스 환경을 만들 수 있다.

페이지를 내리면, instance plan을 선택할 수 있다.
Lightsail을 처음 사용하는 유저 대상으로 3개월간 특정 플랜에 한해 인스턴스를 무료로 사용할 수 있다.
Ghost 권장사항에 의하면 1 GB 이상의 메모리 용량을 권장하기 때문에 5 USD에 해당하는 옵션을 선택했다.
Bitnami 를 사용해 Ghost 환경 세팅하기
이번에 블로그를 준비하면서 알게 됐는데, bitnami 는 다양한 소프트웨어들을 간단하게 세팅할 수 있도록 패키지를 제공하는 회사로 현재 VMware에 속해있다고 한다.
Bitnami의 AWS ghost 패키지를 통해 ghost 설정 + 도메인 연결 + HTTPS 설정까지 간편하게 진행할 수 있다.

우선 블로그를 구축하기 위해서는 고정 IP가 필요하다.
Networking 탭에서 Create static IP 버튼을 클릭하면 고정 IP가 발급이 되고, 새로 발급받은 IP 번호를 확인 할 수 있다.

이제 인스턴스에 접속해서 나머지 과정을 진행한다.
Connect using SSH 버튼을 접속하면 간편하게 인스턴스에 접근이 가능하다.
버튼을 누르면, 웹 브라우저 기반 SSH client가 새창에 뜨게된다.
Mac의 터미널이나, Windows의 putty 등 로컬 환경에서 SSH client 접속을 하려면 SSH default key를 다운받아서 접속할 수 있다.
로컬 환경에서 터미널을 접속하기 위한 가이드는 링크를 참조하면 된다.
sudo /opt/bitnami/configure_app_domain --domain <고정 IP>
# example
# sudo /opt/bitnami/configure_app_domain --domain 123.456.7.8
IP 등록
서버에 접속한 이후에, 위와 같은 명령을 쳐서 조금 전에 발급 받은 고정 IP를 입력한다.
여기까지 완료를 했다면, 이제 IP 주소를 웹브라우저에 타이핑 해서 고스트로 만들어진 블로그에 접속할 수 있다.
cat $HOME/bitnami_application_password
Ghost 관리자 비밀번호
그 후에, 위와 같은 명령어를 치면, 기본으로 설정되어 있던 Ghost 블로그의 관리자 비밀번호를 확인할 수 있다.
Bitnami를 통해 만든 블로그의 아이디는 기본적으로 [email protected] 이다.
IP 등록과, 관리자 비밀번호를 알아냈다면, 관리자 페이지에 접근해서 블로그 관리가 가능하다.
Ghost 블로그에서 관리자 페이지에 접속하는 방법은 블로그 기본 주소 마지막에 ghost를 붙여서 'http://<고정IP>/ghost'와 같이 타이핑 하면 이동할 수 있다.
관리자 페이지에서 본인이 사용할 관리자 아이디와 비밀번호를 변경해 두면 된다.
도메인 연결과 HTTPS 설정하기
IP 주소를 타이핑 해서 블로그에 접근하기는 쉽지 않다.
따라서 도메인 주소를 연결해주는 과정이 필요하다.
이번 블로그를 준비하면서, 국내 업체인 가비아에서 padopado.co.kr 도메인을 구입해서 사용했다.
도메인 구입 이후에는, 해당 도메인의 주소를 블로그가 돌아가는 서버의 고정 IP 주소와 연결을 해줘야 한다.
도메인 구입한 홈페이지에서, DNS 관리탭을 찾으면 레코드 수정을 하는 항목이 있다.
레코드 타입을 'A' 로 설정하고, 호스트 이름에는 '@' 를 타이핑 하고, 값에는 조금 전에 발급받은 본인의 고정 IP 주소를 기입하면 된다.
이제 도메인을 서버 IP 주소에 연결을 했다면, 웹 브라우저에서 도메인 주소를 입력해서, 조금 전에 구성한 ghost 블로그에 연결이 가능하다.
하지만 아직 https 를 통한 보안 접속은 가능하지 않고, http 접속만 가능한 상태다.
Bitnami를 통해 간편하게 무료로 SSL 인증서를 받고, https 보안 접속을 가능하게 할 수 있다.
sudo /opt/bitnami/bncert-tool
서버 인스턴스에 SSH로 접속을 하고, 위와 같이 bncert-tool을 실행하면 간단하게 세팅을 할 수 있다.
만약 업데이트가 있다면, 업데이트를 진행하고 다시 해당 명령어를 통해 bncert-tool을 실행하면 된다.
Domain list []: <도메인>
# example
# Domain list []: padopado.co.kr www.padopado.co.kr
도메인 등록
툴을 실행하면 도메인 작성을 요청한다.
조금 전에 준비한 도메인 주소를 작성하면 된다.
Enable HTTP to HTTPS redirection [Y/n]: Y
# HTTP로 들어오는 연결을 HTTPS로 리다이렉션 해주는 기능
Enable non-www to www redirection [Y/n]: Y
# www없이 들어오는 연결을 www로 리다이렉션 해주는 기능
Enable www to non-www redirection [y/N]: N
# www로 들어오는 연결을 non-www로 리다이렉션 해주는 기능
...
Do you agree to these changes? [Y/n]: Y
# 마지막 확인
도메인 주소를 작성하고 나면 위와 같은 3가지 옵션을 물어본다.
보안을 위해 위와 같이 설정하면 된다.
3가지 옵션 설정이 끝나고 나면, 마지막으로 최종 변경사항 확인을 한다.
이상이 있는지 확인하고, 문제가 없다면 Y를 타이핑 해서 다음 단계로 넘어간다.
E-mail address []: <email 주소>
...
Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: Y
...
Success
...
Press [Enter] to continue:
마지막으로 SSL 인증서 갱신 등의 정보를 받을 이메일 주소를 입력하고, 약관에 동의를 한다.
잠시 기다리고 나면, Success 라는 문구가 나오면서 인증서 발급이 완료된다.
엔터를 한번 더 쳐서 프로그램을 빠져 나오면 된다.
이 과정까지 끝났다면, 인터넷 브라우저 주소 창에 https://<도메인 주소> 와 같이 https 로 보안 연결이 가능하다.
주소창 왼쪽에 자물쇠가 굳게 닫혀 있는 마크를 통해 https 로 보안 연결이 된 것을 확인할 수 있다.

Ghost Version 업데이트
현재 AWS Lightsail 에 올라와 있는 bitnami의 ghost 패키지는 Ghost 4.X 버전을 기본으로 지원하고 있다.
현재 최신 버전인 ghost 5를 사용하기 위해서는 아래와 같은 명령어를 사용하면 된다.
# Ghost가 설치된 폴더로 이동 및 업데이트 진행
cd /opt/bitnami/ghost
sudo su ghost -c "ghost update"
# 업데이트 진행 후 권한 수정
sudo chown ghost:bitnami -R /opt/bitnami/ghost
sudo chmod 640 /opt/bitnami/ghost/config.production.json