Amazon Lightsail 에서 Ghost 블로그 운영하기 #1. 인스턴스 설치와 iPad 에서 SSH 접속환경 설정

Amazon Lightsail에서 Ghost 블로그 운영하기 위한 첫번째 단계로 인스턴스를 설치하고 iPad에서 SSH 터미널 접속환경을 설정하는 방법을 소개한다.

Amazon Lightsail 에서 Ghost 블로그 운영하기 #1. 인스턴스 설치와 iPad 에서 SSH 접속환경 설정

유연하고 강력한 기능을 가진 Ghost 블로그 플랫폼을 AWS 서비스 중에서 개인이 쉽고 편리하게 관리할 수 있는 Lightsail 에서 운영하는 방법을 시리즈로 포스팅할 예정이다. 블로그 첫 포스팅에서도 소개했듯이 iPad에서 운영 및 관리 그리고 포스팅까지 진행한다.

우선 블로그 플랫폼으로 Ghost를 선택한 이유는 기존에 개인 블로그를 운영할 때 사용했던 플랫폼이기도 하고 사실상 현존하는 블로그 플랫폼 중에서 WordPress 다음으로 다른 대안이 없다고 생각한다. 개인적으로 PHP 환경보다 Node.js 환경을 선호하기 때문에 Ghost를 선택했다. 노션을 사용하고 있어 노션 페이지를 이용하여 블로그 환경을 만들 수 있지만 SSO 관점에서는 내가 원하는 방향은 아니라고 생각한다. 관리형 블로그로 네이버 블로그를 선택할지도 고민했지만 네이버에서 블로그 이미지 처리를 개선해주지 않아서 (고화질 이미지를 올리면 해상도를 자동으로 줄여서 이미지 선명도가 치명적으로 좋지 않게 올라간다) 네이버 블로그는 항상 후보에서 탈락이 되는것 같다. 이 문제만 해결해주면 관리형 블로그라 더이상 고민할 필요도 없을텐데 말이다. 암튼 Ghost 블로그 플랫폼은 기능도 너무 많아서 블로그 플랫폼만 소개해도 몇 개의 포스팅을 작성할 정도인데 기능 소개는 생략하니 다른 블로그를 참조하길 바란다.

AWS 는 이제 더이상 할 필요 없을만큼 대부분 사람들이 알고 있으니 소개가 의미 없다고 생각된다. 다만, AWS Lightsail 에 대해서 간략하게 소개하면 가벼운 서비스나 개인이 정해진 금액 안에서 많은 고민없이 바로 서비스를 운영할 수 있는 인프라를 쉽고 빠르게 구축할 수 있는 서비스이다. 단 클릭 몇 번만으로 바로 프로덕션 레벨의 서비스까지 만들 수 있으니 사이드 프로젝트나 개인 블로그 운영에 최고 적합한 서비스라고 생각한다. 가격도 저렴하다. 사실 AWS 서비스를 운영하면 가격 예측이 쉽지 않다 서비스마다 환경마다 가격 정책이 다르기 때문에 빌링정보를 따로 관리할 정도로 비용을 관리하는게 쉽지 않다. 그래서 그냥 AWS에 아무런 고민 없이 바로 시작해보고 싶은 딱 정해진 금액 안에서 사용할 수 있는 AWS Lightsail로 바로 시작하면 된다. 커피 한잔의 가격부터 있으니 필요한 리소스 정량제를 선택하면 된다. AWS 가입과 같은 기본적인 내용은 소개하지 않으니 다른 블로그를 참조하길 바란다. 이 글은 AWS 계정을 가지고 있는 사용자를 대상으로 진행한다.

항상 그렇지만 내가 생각한 것은 이미 누군가 생각하고 같은 주제의 블로그 글들이 많이 공유되고 있지만 조금씩 접근하는 방식이 다르니 이 포스팅도 누군가에게 도움이 되길 바란다.

Amazon Lightsail 시작과 인스턴스 생성

AWS 콘솔에 접속한다. 아래 이미지는 iPad 로 AWS 웹 콘솔에 접속한 모습이다. 업무관계로 주로 사용하는 서비스들이 보이는데 Lightsail 주로 사용하는 서비스로 화면에서 보인다.

Amazon Lightsail 서비스에 들어가서 새로운 인스턴스를 생성한다. 기본적으로 내 로컬리전에 인스턴스를 생성할 수 있게 다음과 같이 Instance location 이 지정되어 있고 AWS Region 과 가용영역 Availability Zone 이 설정되어 있다.

Change AWS Region and Availability Zone 링크를 클릭하면 대한민국 서울 말고 다른 국가로 리전을 변경할 수 있고 가용영역도 희망하는 곳으로 지정이 가능하다.

Amazon Lightsail app 으로 Ghost 설치

Lightsail 에서 Ghost를 설치하는 방법은 크게 두가지로 나눌 수 있는데 첫번째 방법은 Lightsail의 블루프린트 앱을 사용하여 설치하는 것이다. 아래 이미지는 Lightsail 의 블루프린트 목록이다. 여러가지 서버를 포함한 서비스 환경을 운영체제와 함께 패키지로 바로 설치할 수 있는 블루프린트이다. Ghost 항목을 선택하고 인스턴스를 생성하면 몇 분내 인터넷에서 바로 접속할 수 있는 Ghost가 설치된 서버 인스턴스를 바로 생성할 수 있다.

초창기 Ghost 운영할 때는 나도 이 블루프린트를 사용했는데 이번에는 운영체제만 설치한 후 나머지는 직접 설치를 진행했다. 따로 특별한 이유는 없다. 블루프린트 방식으로 사용해도 충분히 서비스 운영에 문제되는 것도 없고 오히려 웹 서버나 https 설정 같은 것을 아주 쉽게 할 수 있는 장점이 많다.

Amazon Lightsail Operating System(OS) only 로 운영체제 설치

나는 운영체제만 설치하는 인스턴스를 선택해서 Ghost 명령어를 사용하여 설치했다. Lightsail에서 운영체제 플랫폼을 선택한 후 Operating System (OS) only 탭을 선택하면 여러가지 운영체제와 버전별 인스턴스를 설치할 수 있다. AWS 에서 지원하는 Amazon Linux 를 설치하면 좀 더 안정적이지만 커뮤니티 호환성을 위해서 Ubuntu를 선택했다. 버전은 LTS 버전 중 최신버전인 22.04 를 선택했다.

원하는 운영체제와 버전을 선택하면 다음으로 인스턴스에 접속할 SSH key를 선택한다. 처음 Lightsail를 사용하는 사용라라면 SSH key가 하나일 경우가 많겠지만 이미 여러 인스턴스를 다양한 방법으로 운영하고 있다면 SSH key가 여러개 있을 경우가 있다. 그럴때는 Change SSH key pair 를 선택해서 원하는 키를 선택한다.

다음은 네트워크 타입과 인스턴스의 사이즈를 선택한다. 네트워크 타입은 IPv4와 IPv6 같이 지원하는 Dual-stack 과 IPv6-only 타입 두가지가 있다. 특별한 이유가 아니면 Dual-stack 그대로 선택하면 된다. 인스턴스 사이즈는 필요에 맞게 선택하면 된다. 나는 보통 2GB 메모리와 2VCPU를 사용한다. 대용량 이미지 저장을 인스턴스 내부에 한다면 SSD Storage 사이즈도 고려해야한다. 나는 이미지를 AWS S3로 저장하도록 환경을 만들어서 운영하고 있기 때문에 로컬 스토리지에 큰 비중을 두지 않지만 Lightsail 만 운영한다면 반드시 용량을 생각해야한다. 데이터베이스와 로그 파일 등이 물리적으로 인스턴스 안에 저장하게 되고 무엇보다 이미지를 S3로 분리하지 않는 이상 틀림 없이 용량은 빠르게 줄어들 것이기 때문이다. 나중에 원격저장소를 따로 attach 하는 방법도 있지만 여러가지 상황을 잘 고려해서 용량을 선택하면 된다.

마지막으로 인스턴스의 이름을 지정한다. 그리고 Create instance 버튼을 클릭하면 몇 분도 지나지 않아서 위에서 선택한 인스턴스가 인터넷이 가능한 상태로 자동으로 만들어지게 된다.

이제 인스턴스를 만드는 1분 내외 기다리면 된다. Pending 상태는 현재 인스턴스를 만들고 있는 상태이다. 인스턴스가 생성되면서 내부적으로 IP를 할당받고 인터넷이 연결될 수 있는 준비를 한다.

인스턴스가 정상적으로 생성되면 아래 이미지와 같이 인스턴스가 생성되고 IP도 활성화된 것을 확인할 수 있다. 이제 생성된 인스턴스 링크를 클릭한다.

인스턴스 링크를 크릭하면 생성된 인스턴스의 상세 정보를 확인할 수 있다. Instance status 도 Running 으로 확인 가능하다.

생성된 인스턴스 SSH 접속

인스턴스에 접근하기 위해서 2가지 방법으로 접근 가능하다. 하나는 AWS에서 제공하는 브라우저 클라이언트를 통해서 접근하는 방법이고 하나는 직접 SSH 클라이언트를 이용해서 접근하는 방법이다. 먼저 웹에서 접근하려면 Connect using SSH 버튼을 클릭만하면 된다. 다른 로그인 정보없이 웹 세션을 통해 바로 SSH 터미널이 웹에서 나타난다. 자동으로 로그인된 인스턴스 정보를 살펴보면 앞에서 생성한 인스턴스와 동일한 정보를 확인 할 수 있다.

두번째 방법은 SSH 클라이언트로 접속하는 방법이다. 앞에서 Lightsail 인스턴스를 생성할 때 사용한 SSH Key가 필요하다. 아마 생성할 때 각자 PC 또는 다른 저장소에 저장했을텐데 키가 꼭 필요하다. Lightsail 에서 Ubuntu 인스턴스를 생성하면 기본적으로 ubuntu라는 유저가 생성된다.

iPad 에서 SSH 클라리언트로 유명한 Termius를 사용하여 접속해보자. 유료 앱이지만 충분한 가치가 있는 앱으로 적극 추천한다.

먼저 Hosts에서 + 버튼을 클릭해서 새로운 호스트를 추가한다. 이 때 Lightsail의 퍼블릭 IP 정보를 입력한다. Username 에는 ubuntu를 입력한다.

Lightsail의 인스턴스는 비밀번호로 접속하지 않고 SSH key를 가지고 접속한다. 인스턴스를 만들때 사용한 SSH key를 Termius의 Keychain에 등록한다. Lightsail에서 다운받다던 SSH key를 복사한 뒤 Paste Key를 이용해서 붙여넣기 하면 된다.

아래 이미지와 같이 Private Key에 복사된 키를 붙여넣으면 된다. 아래 이미지 키는 임의로 예제로 생성된 키이다. 각자 자신의 키를 저장하면 된다.

SSH key 등록 후 Host를 추가하면 Termius 의 Host 에 추가한 인스턴스가 새로운 호스트로 등록된 것이 보인다.

새로 추가된 호스트를 선택하면 터미널이 실행된다.

iPad에서 서버 운영 및 관리하기 위해서 SSH 터미널 앱이 반드시 필요한데 Termius 앱이 가장 좋은 것 같다. 멀티 터미널도 지원하고, 키 관리도 지원하고, 동기화도 지원하고 안정속도와 반응성도 매우 좋다. iPadOS 특성 때문에 백그라운드로 앱이 들어가면 세션이 끊어지는데 이것을 보안하기 위해 몇 가지 대안을 제공하고 있어 세션 끊어짐 없이 작어도 가능하다.

이제 인스턴스 설치와 접속 과정의 설명은 모두 끝났다. 처음부터 iPad 에서 블로그를 운영하려는 포스팅을 작성하려고 한 것은 아니다. 하지만 iPad 를 현재 주력으로 사용하고 있는 서브 디바이스로 랩탑이 없을 경우, 또는 이동중 어디서나 iPad를 사용해야하는 상황이 발생하면 주저없이 사용기 위해서 대부분의 작업은 iPad에서 진행하려고 한다. 테스트 결과 iPad 는 원격 터미널 디바이스로 충분하다. 현재 블로그 역시 포스팅한 예제와 같이 AWS 를 이용하여 블로그를 운영하는 모든 과정을 iPad로 처리했다.

다음 포스팅은 실제 Ghost블로그 플랫폼을 ghost명령어를 사용하여 새로 생성한 인스턴스에 설치하는 방법을 소개한다.

질문 및 의견을 남겨주세요 >