LightSail로 wordpress 서비스 만들기

글쓴이 상배 윤 날짜

2011년 부터 지금까지 대략 8년 정도 AWS를 사용해왔다. 하지만 내 사이트는 서버 호스팅 서비스를 이용하고 있다. 당연히 AWS에서 운영해볼 생각을 했는데, 너무 비쌌다. 지금은 널리 알려진 사실인데, 운영비는 AWS가 호스팅 서비스에 비해서 싸지 않다. 민첩성, 확장성, 가용성, 품질관리, 개발문화의 혁신 이런 가치들이 더해져서 총소유비용(TCO)으로 접근을 해야 비용 경쟁력을 가진다. 그런데 애초에 내 사이트는 용량이 정해져 있는데다가 TCO 차원에서 접근해야 할 필요가 없으니, 비싼 돈 주고 AWS를 사용 할 이유가 없었던 거다.

내 사이트를 AWS에서 운영 할 경우 비용은 대략 아래와 같다.

  • t3.small : 한달 18.720 달러
  • db.t2.small : 한달 45.360 달러

물론 EC2에 RDS를 설치해서 하나의 인스턴스로 유지하거나, 프리티어를 잘 활용해서 비용을 최적화 하는 방법이 있기는 하지만 굳이 그렇게 까지 하면서 AWS에 사이트를 이전해야 하는 생각이 있었다.

“클릭 몇번으로 인터넷 서버스를 시작할 수 있습니다.”라고 AWS 서비스를 홍보하고 있기는 하지만, EC2를 기반으로 서비스를 올리는 건 그렇게 만만한 작업이 아니다.

결론은 EC2로 개인 규모 사이트를 운영하기에는 뭔가 좀 애매모호 하다 정도가 되겠다.

Amazon LightSail

Amazon LightSail은 가볍게 시작 할 수 있는 Simple Cloud Server 서비스다. VPC, Subnet, SSH Key, Security Group 등을 신경쓰지 않고 간단하게 인터넷 서비스를 올릴 수 있다. 비용도 서버 호스트와 비교해서 합리적인 수준이다.

LightSail로 WordPress 올리기

최근에 cloud 관련 컨텐츠를 joinc에서 분리해서 cloud.joinc.co.kr를 운영해야 겠다는 생각을 하게 됐다. 서버 호스팅을 해야 하나 생각하다가 마침 LightSail이 서울리전에서 사용 할 수 있다는 소식을 듣고 LightSail로 갈아타기로 했다. cloud.joinc.co.kr은 WordPress로 운영하기로 결정했다.



https://lightsail.aws.amazon.com 에 접근해서 인스턴스 생성을 클릭하면 플랫폼과 블루프린트 애플리케이션을 선택하는 화면으로 넘어간다.

아랫 부분에 인스턴스 플랜 선택에서 인스턴스의 사양을 선택 할 수 있다. 1vCPU, 512M 한달 3.5달러 짜리에서 부터, 32GB, 8vCPU 한달 16만원짜리까지 다양한 타입의 인스턴스가 제공된다. 나는 한달 3.5 달러짜리 인스턴스를 만들었다. 그리고 인스턴스 생성 버튼누르면 된다. VPC와 Subnet, Security Group, SSH Key등을 만들기 위해서 삽질할 필요가 없다.

Lightsail 대시보드로 돌아가면 애플리케이션을 확인 할 수 있다.

EIP 생성

나는 cloud.joinc.co.kr 도메인을 이 인스턴스에 붙이고 싶었다. 로드밸런서를 만든 다음 로드밸런서의 A 레코드를 CNAME 레코드에 등록하는게 일반적인 방법이겠다. 하지만 joinc.co.kr는 AWS가 관리하는 도메인이 아니라서 CNAME으로 등록하는 과정이 번거로웠다. 어차피 이 서비스는 가용성이 중요한게 아니라서 그냥 EIP로 고정 IP를 할당 받은 다음, IP를 A 레코드에 등록하는 방법을 사용하기로 했다. 대시보드에서 네트워킹 탭을 선택해서 인스턴스에 EIP를 할당 했다.

SSL 인증서작업

앞서 만든 EIP 주소를 A 레코드로 등록해서 즉시 cloud.joinc.co.kr를 서비스 할 수 있게 됐다. 이제 HTTPS 서비스를 위해서 SSL 설정을 하기로 했다. 애초에 joinc.co.kr 도메인을 AWS Route53으로 관리했더라면 ACM(AWS Certificate Manager)를 이용해서 로드밸런서에 SSL 인증서를 offload 할 수 있었겠지만, 지금은 인스턴스에 직접 설치하는 수 밖에 없다.

LightSail은 웹브라우저를 이용해서 인스턴스에 쉽게 접근 할 수 있도록 Web console을 제공한다.

Let’s Encrypt에서 제공하는 Free SSL 인증서를 설치하기로 했다.

# cd /tmp/
# wget https://dl.eff.org/certbot-auto
# chmod +x certbot-auto
# mkdir /home/bitnami/apps/wordpress/htdocs/.well-known
# touch /home/bitnami/apps/wordpress/htdocs/.well-known/.htaccess

.htaccess에 아래의 내용을 저장한다.

RewriteEngine On
Satisfy Any

cloud.joinc.co.kr 도메인에 대한 SSL 인증서를 요청했다.

# ./certbot-auto certonly --webroot -w /home/bitnami/apps/wordpress/htdocs -d cloud.joinc.co.kr

실행하고 나면 /etc/letsencrypt/liv/cloud.joinc.co.kr/fullchain.pem 파일이 만들어진다. 이제 apache 설정파일을 변경한다. apache 설정파일은 /opt/bitnami/apache2/conf/bitnami/bitnami.conf 다.

<VirtualHost _default_:443>
DocumentRoot "/opt/bitnami/apache2/htdocs"
SSLEngine on
# 아래 3줄을 추가 한다.
SSLCertificateFile "/etc/letsencrypt/live/cloud.joinc.co.kr/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/cloud.joinc.co.kr/privkey.pem"
SSLCACertificateFile "/etc/letsencrypt/live/cloud.joinc.co.kr/fullchain.pem"
....
</VirtualHost>

Apache 서버를 재시작하자.

# /opt/bitnami/ctlscript.sh restart apache

http로 접근 할 경우 강제로 https로 이동하도록 rewrite 룰을 수정했다. 파일은 /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf 다.

DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"

RewriteEngine On
RewriteCond "%{HTTPS}" !=on
RewriteRule "^/(.*)" "https://%{SERVER_NAME}/$1" [R,L]


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Bitnami