AWS Lightsail과 Route 53로 워드프레스 블로그 열기

6개월 동안 워드프레스로 교회 홈페이지(joonimchurch.ca)를 운영해 온 경험을 바탕으로 개인 블로그를 열기로 했습니다.  AWS를 좀 더 경험해 보고자 Lightsail(이하 라이트세일)과 Route 53을 서버와 도메인 서비스로 선택했습니다.

설치 과정 가운데 스위프트 님의 블로그 포스트를 통해 많은 도움을 받았습니다.  부분적으로 업데이트가 필요한 내용이 있었지만 유익한 배경 설명이 가득한 친절한 블로그 포스트였습니다.  꼭 방문해 보세요.

저는 하나의 포스트로 설치 전 과정을 커버해 볼 생각입니다.  따라서 설치 방법 이외에 도움이 될 만한 내용이 없고, 빠트린 부분도 있을 수 있음을 미리 알려 드립니다.

자 그럼 본론으로 넘어가서… 다음 과정을 통해 AWS 라이트세일에 워드프레스 블로그를 설치할 수 있습니다.  1년 유지 비용이 $70 정도 소요됩니다.

  1. AWS 가입
  2. 라이트세일 인스턴스 생성
  3. Route 53에서 도메인 구입 및 설정
  4. 블로그 관리자 설정
  5. HTTPS 설정

 

1. AWS 가입

AWS 홈페이지에 회원으로 가입하고 언어는 한글로 설정합니다.  가입에는 신용카드 정보가 필요합니다.  가입 자체는 무료입니다만, 많은 분들이 허술한 보안과 잘못된 설정에 의한 요금 폭탄을 경고합니다.  암호 관리 등 기본적인 보안에 신경 쓰고 <내 계정 – 예산> 메뉴를 통해 일정 금액 이상의 과금에 대한 경고 메일을 받게 설정하면 크게 걱정할 필요는 없을 것 같습니다.

로그인 하면 AWS 서비스가 나열된 아래와 같은 페이지가 보입니다 (화면에 보이는 게 다가 아닙니다.  오른쪽 스크롤바를 보세요).

서비스를 하나씩 천천히 살펴보면 유익할 것 같습니다.

 

2. 라이트세일 인스턴스 생성

모든 서비스 – 컴퓨팅 그룹의 두 번째에 위치한 Lightsail을 클릭합니다.  라이트세일 홈으로 이동한 후, 오른쪽에 보이는 오렌지 색 인스턴스 생성 버튼을 클릭합니다.  여기서 인스턴스란 워드프레스를 설치할 서버를 의미합니다.

인스턴스 위치에 무려 서울이 존재합니다.  제가 사는 곳은 캐나다 동부 지역이지만 한글 독자를 대상으로 한 블로그를 운영할 것이므로 서울을 선택합니다.  저로서는 지구 반대편에서 접속하는 셈인데, 지금까지 경험한 속도는 나쁘지 않은 것 같습니다.

나머지 인스턴스 이미지, 계획, 이름은 기본값(Linux/Unix, WordPress, $5, WordPress-512MB-Seoul-1)으로 두어도 상관 없습니다.  저는 이름을 WordPress-Seoul-1으로 변경했습니다.  페이지 하단 생성 버튼을 클릭합니다.  라이트세일 홈에 생성된 인스턴스가 보이게 됩니다.  첫 달은 무료, 둘째 달부터 $5씩 지불하게 됩니다.

위 그림의 검은색으로 가려진 부분에 아이피 주소가 보입니다.  이 주소를 통해 생성된 블로그에 접속할 수 있습니다(http://<아이피 주소>).  예를 들어, 주소가 121.454.787.010라면 브라우저 주소창에 http://121.454.787.010를 입력해 보세요.

위와 같이 방금 만들어진 워드프레스 기본 페이지가 보일 것입니다.

이제 고정 아이피 주소를 생성해 워드프레스 인스턴스로 연결합니다.  라이트세일 홈에서 네트워킹 탭을 선택한 후 고정 IP 생성 버튼을 누릅니다.

고정 IP 위치를 서울로, 연결할 인스턴스를 방금 만들어진 워드프레스 인스턴스로, 이름은 기본값을 사용하고, 생성 버튼을 클릭합니다.

고정 IP 주소가 생성되었습니다.  오른쪽 하단, 위 그림의 검은색 부분에 보이는 것이 앞으로 사용할 고정 IP 주소입니다.  메모해 두세요.  다음 단계에서 이 주소를 도메인에 연결합니다.

 

3. Route 53에서 도메인 구입 및 설정

이제 AWS Route 53에서 도메인을 구입하여, 블로그에 연결해야 합니다.  AWS 홈페이지로 이동하여 네트워킹 및 콘텐츠 전송 그룹의 세 번째 항목인 Route 53을 선택하고 Domain registration 버튼을 클릭합니다.  도메인 이름 선택 창이 아래와 같이 나타납니다.

사용하고자 하는 도메인 이름을 입력하고 Check 버튼을 누르면 사용 가능한 도메인과 비용이 나타납니다.

도메인 이름을 정하고 그 옆에 위치한 Add to cart 버튼을 클릭하여 결제하면 됩니다 (라이트세일과 달리 여기 보이는 비용은 연 단위 비용입니다).

결제 후 바로 도메인이 사용 가능하지는 않습니다.  제 경우는 20분 정도 시간이 소요된 것 같은데 더 오래 걸릴 수도 있겠지요.  필요한 시간이 흘러 도메인 등록이 완료되면 아래와 같이 Route 53 대시보드 내의 도메인 Status가 “Domain registration successful”로 변경됩니다.

좌측 메뉴의 Hosted zones를 선택하고 구입한 도메인 이름을 클릭합니다.

기본 record set 두 개(NS, SOA)가 보일 것입니다.  상단 Create Record Set 버튼을 클릭합니다.  그러면 아래와 같은 패널이 오른쪽에 나타납니다.

가운데 Value 칸에 이전 단계에서 메모한 고정 IP 주소를 입력하고 하단 Create 버튼을 클릭합니다.

상단 Create Record Set 버튼을 다시 한 번 클릭합니다.  이번에는 Name 칸에 www를 입력하고(마침표는 저절로 추가됩니다) Value 칸에 고정 IP 주소를 입력합니다.  Create 버튼을 클릭합니다.  이제 record set 리스트에 A 타입의 두 가지(원래 도메인 이름과 www.가 붙은 도메인 이름) set 들이 보일 것입니다.

구입한 도메인 이름으로 블로그에 접속이 가능한지 확인합니다.

 

4. 블로그 관리자 설정

라이트세일 홈으로 돌아가서 생성된 인스턴스 이름을 클릭하면 SSH를 사용하여 연결 버튼이 보입니다.  이 버튼을 클릭해 인스턴스가 상주하는 리눅스 환경에 접속합니다 (또는 아래 그림에 보이는 바와 같이 인스턴스 블록 오른쪽 위에 위치한 오렌지색 사각형을 클릭해도 같은 환경에 접속할 수 있습니다.)

먼저 다음 명령을 입력하여 워드프레스 관리자 암호를 확인합니다.

cat bitnami_application_password

위의 예에서는 hDHQik3FXsZ0가 암호입니다.  웹브라우저에서 블로그 주소 끝에 /login을 붙여 로그인 화면으로 이동합니다.  사용자 이름 “user”와 이 암호를 이용하여 워드프레스 관리자로 로그인 할 수 있습니다.

“user”로 로그인 하면 워드프레스 대시보드가 나타납니다.  왼쪽 메뉴의 Users – Add New를 선택해서 원하는 관리자 계정을 추가합니다.  Username, Email, First Name 등을 입력하고 Password를 선택합니다.  RoleAdministrator로 설정합니다.  하단 Add New User 버튼을 클릭합니다.

워드프레스에서 로그아웃 후 방금 추가한 관리자 계정으로 로그인 합니다.  Users – All Users 를 선택하여, “user”를 삭제합니다.

이제 비트나미 배너를 제거하겠습니다.  SSH 창으로 돌아가서 다음 명령을 입력합니다.

sudo /opt/bitnami/apps/wordpress/bnconfig –disable_banner 1

 

5. HTTPS 설정

보안이 강화된 HTTPS로 사이트를 업데이트 하는 과정만 남았습니다.  아래 명령들을 입력할 때는 오타가 없도록 특별히 주의해야 합니다.  오타가 있을 경우, 해당 오류 메시지가 SSH 창에 표시될 것입니다.

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
mkdir /opt/bitnami/apps/wordpress/htdocs/.well-known
touch /opt/bitnami/apps/wordpress/htdocs/.well-known/.htaccess
sudo nano /opt/bitnami/apps/wordpress/htdocs/.well-known/.htaccess

마지막 명령이 성공적으로 실행되면 .htaccess 파일을 수정할 수 있는 nano 에디터 환경으로 진입합니다.  아래와 같이 두 줄을 입력합니다.

Ctrl+x를 누르면 변경 사항을 저장할 것인지 물어봅니다.  Y를 입력하면 파일 이름을 보여주는 단계로 넘어 갑니다.  엔터키를 눌러 에디터 환경을 종료하고 SSH 환경으로 전환합니다.

다음 명령을 입력하여 파일 내용이 방금 입력한 두 줄을 표시하는지 확인합니다.

cat /opt/bitnami/apps/wordpress/htdocs/.well-known/.htaccess

인증서를 받기 위해 다음 명령을 입력합니다.  두 번째 명령의 <도메인이름> 필드는 Route 53에서 구입한 도메인 이름을 의미합니다.  예를 들어, 도메인 이름이 hyojoo.info 라면 명령은 ./certbot-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs -d hyojoo.info가 됩니다.

export LC_ALL="C"
./certbot-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs -d <도메인이름>

인증서 발급이 진행됩니다.

  1. 중간에 설치 용량을 보여주며 계속할 것인지 묻는 단계에서는 y와 엔터를 입력합니다.
  2. 이메일 주소를 묻는 단계(Enter email address)에서는 이메일 주소와 엔터를 입력합니다.
  3. 사용 약관(Terms of Service) 동의에서는 a와 엔터를 입력합니다.
  4. “Would you be willing to share”로 시작하는 물음에 대해서는 n와 엔터를 입력합니다.

인증서 발급이 정상적으로 마치면 “IMPORTANT NOTES: Congratulations!”로 시작하는 메시지가 출력됩니다.

이제 www 주소에 대해 같은 명령을 실행하고 중간 단계 입력은 위와 동일하게 수행합니다.

./certbot-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs -d www.<도메인이름>

인증서 발급이 끝나면 아래 명령을 실행합니다.

sudo ls -al /etc/letsencrypt/live/

아래와 같이 도메인 이름과 www가 붙은 도메인 이름이 보이면 인증서가 존재하는 것입니다.

아파치 웹서버의 설정 파일이 방금 받은 인증서를 가리키도록 수정해야 합니다.

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami.conf

nano 에디터 환경에서 키보드 아래 방향키를 눌러 “SSLEngine on”이라 적힌 줄을 찾습니다.  그 줄 다음 두 줄이 SSLCertificateFile과 SSLCertificateKeyFile이란 단어로 시작합니다.  그 두 줄 맨 앞에 #문자를 입력합니다.  그리고 그 아래에 다음 세 줄을 입력합니다.  <도메인이름>은 실제 도메인 이름으로 치환해야 합니다.

SSLCertificateFile /etc/letsencrypt/live/<도메인이름>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<도메인이름>/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/<도메인이름>/fullchain.pem

제 경우 변경된 내용은 아래와 같습니다.

Ctrl+x로 변경 내용을 저장합니다.

끝으로 https가 아닌 http 또는 www를 사용하여 블로그에 접속하는 트래픽을 위해 리다이렉팅 룰을 작성해 줍니다.

sudo nano /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf

nano 에디터 환경에서 “RewriteEngine On”이라고 적힌 줄을 찾습니다.  그 밑에 이미 작성된 두 줄의 리다이렉트 룰이 존재하는 것을 볼 수 있습니다.

그 아래에 다음 네 줄을 추가해 줍니다.

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R=301,L]

결과물은 아래와 같습니다.

Ctrl+x로 변경 내용을 저장하고 아파치 웹서버를 재시작 합니다.

sudo /opt/bitnami/ctlscript.sh restart apache

이제 웹브라우저에 “https://<도메인이름>” 입력하면 안전하게 블로그에 접속할 수 있습니다.  “http://<도메인이름>”, www를 붙인 이름도 모두 잘 동작할 것입니다.

인증서는 90일 간 유효하며 만료되기 전에 이메일 안내를 받게 됩니다.  하지만 미리 갱신하는 것이 좋은 방법입니다.  스위프트 님의 블로그 포스트에 인증서 갱신 방법이 잘 설명되어 있으므로 참고하시면 되겠습니다.



3 thoughts on “AWS Lightsail과 Route 53로 워드프레스 블로그 열기”

  • 안녕하세요, 덕분에 wordpress와 aws 잘 연결하고, https 세팅까지 완료했습니다. 감사합니다.
    커맨드 중 bitnami 배너를 제거하는 커맨드에서는 에러가 나네요.
    다음처럼 수정해서 입력하니 잘 동작했습니다.
    제 환경에서는 에러가 났는데, 다른 환경에서도 동일한지는 모르겠습니다.

    sudo /opt/bitnami/apps/wordpress/bnconfig –disable_banner 1
    (disable_banner 앞 – 을 –로 수정)

    에러내용:
    Error: There has been an error.
    Expected option but got “–disable_banner”. Options start with a leading “–” prefix

댓글 남기기