워드프레스 블로그를 웹호스팅에서 Amazon Lightsail로 이전하기

기존에는 일반 웹호스팅 업체에서 워드프레스 블로그를 운영하고 있었다.

웹호스팅은 서버를 직접 관리할 일이 거의 없다는 장점이 있지만, 서버 성능이나 설정을 원하는 만큼 조정하기 어렵다는 제약도 있다.

블로그를 운영하면서 속도와 서버 설정에 대한 아쉬움이 생겼고, 결국 Amazon Lightsail로 이전하기로 했다.

이번 이전에서는 워드프레스 파일과 데이터베이스를 직접 복사하지 않고 WPvivid Backup Plugin으로 전체 사이트를 백업하고 복원했다. 새 서버를 먼저 완성하고 충분히 확인한 뒤 마지막에 DNS만 전환하는 방식이다.

Lightsail로 서버를 옮길 때 네임서버까지 반드시 변경할 필요는 없다. 기존 DNS 관리업체를 그대로 사용하면서 A 레코드만 Lightsail의 고정 IP로 바꾸는 방법이 더 단순하다. Lightsail DNS를 사용하고 싶을 때만 DNS Zone을 만들고 네임서버를 변경하면 된다.

전체 백업, 새 서버 복원, 로컬 테스트, DNS 전환으로 이어지는 WordPress Lightsail 이전 흐름
전체 백업 후 새 서버에 복원하고 로컬 테스트를 마친 뒤 DNS를 전환한다.

1. 이전하기 전에 준비할 것

  • AWS 계정
  • 사용 중인 도메인과 DNS 관리 페이지 접근 권한
  • 기존 워드프레스 관리자 계정
  • 워드프레스 백업·복구 플러그인

나는 이전 도구로 WPvivid를 사용했다. 데이터베이스, 테마, 플러그인, 업로드 파일을 한 번에 백업하고 새 워드프레스에서 복원할 수 있기 때문이다.

이전 작업을 시작하기 전에 전체 백업을 만들어 PC에도 내려받아 둔다. 블로그에 새 글이나 댓글이 계속 추가되는 환경이라면 DNS를 바꾸기 직전에 최종 백업을 한 번 더 만들거나, 짧은 점검 시간을 정해 변경을 잠시 멈추는 것이 안전하다. 그렇지 않으면 일부 방문자는 기존 서버에, 일부 방문자는 새 서버에 접속하면서 데이터가 나뉠 수 있다.

DNS TTL을 직접 조정할 수 있다면 전환 하루 전쯤 300~600초로 낮춰 두면 전환 시간을 줄이는 데 도움이 된다. 다만 이미 캐시된 값은 기존 TTL이 끝날 때까지 남을 수 있다.

2. Amazon Lightsail에서 WordPress 서버 만들기

AWS에 로그인한 뒤 Lightsail에서 새 인스턴스를 만든다. 이용자가 주로 접속하는 지역과 가까운 리전을 선택하고 다음 항목을 지정한다.

  • Platform: Linux/Unix
  • Blueprint: WordPress

개인 블로그라면 처음부터 지나치게 큰 플랜을 선택할 필요는 없다. CPU, 메모리, 디스크 사용량을 확인하면서 필요할 때 스냅샷을 이용해 상위 플랜으로 옮기는 편이 낫다.

인스턴스가 만들어지면 Networking에서 HTTP 80번과 HTTPS 443번 포트가 열려 있는지 확인한다. SSH 22번 포트는 초기 설정에 필요하지만, 설정이 끝난 뒤에는 가능하면 접속할 IP를 제한하는 편이 안전하다.

3. 고정 IP를 먼저 연결한다

Lightsail 인스턴스에 처음 할당되는 기본 공인 IP는 인스턴스를 중지했다가 다시 시작하면 변경될 수 있다. 이 주소를 DNS에 등록하면 나중에 서버 IP가 바뀌면서 블로그에 접속하지 못할 수 있다.

따라서 Static IP(고정 IP)를 생성해 WordPress 인스턴스에 연결한다. Lightsail의 Networking에서 고정 IP를 만든 뒤 같은 리전의 WordPress 인스턴스를 선택하면 된다. 자세한 절차는 AWS의 고정 IP 연결 문서에서 확인할 수 있다.

WordPress 인스턴스
        ↓
Lightsail 고정 IP
        ↓
15.xxx.xxx.xxx

이 고정 IP가 이후 DNS A 레코드에 들어갈 주소다.

4. 기본 WordPress가 동작하는지 확인한다

기존 데이터를 복원하기 전에 새 서버 자체가 정상인지 확인한다. 아직 도메인을 연결하지 않았으므로 고정 IP로 기본 WordPress 화면과 관리자 페이지에 접속한다.

http://서버의-고정-IP
http://서버의-고정-IP/wp-admin

Lightsail 인스턴스 관리 화면의 WordPress 패널에서 기본 관리자 암호를 확인할 수 있다. 이 단계에서는 페이지와 관리자 화면이 열리는지만 확인하고 테마나 플러그인을 별도로 설정하지 않는다. 전체 백업을 복원하면 현재 설정이 기존 블로그의 내용으로 바뀌기 때문이다.

5. 기존 WordPress를 전체 백업한다

기존 웹호스팅의 WordPress 관리자 페이지에 WPvivid를 설치하고 전체 사이트 백업을 만든다.

  • Database
  • Themes
  • Plugins
  • Uploads
  • WordPress 관련 파일

백업이 완료되면 파일을 PC나 별도 저장소에 내려받는다. 서버 안에 있는 백업 파일 하나만 믿고 진행하지 않는 편이 좋다. 다운로드한 파일의 개수와 전체 용량도 확인한다.

사이트 규모가 크면 PHP의 업로드 용량이나 실행시간 제한 때문에 백업 또는 복원이 실패할 수 있다. 이 경우 새 서버의 PHP 설정을 조정하거나 WPvivid의 사이트 간 Auto-Migration을 이용할 수 있다.

6. Lightsail WordPress에 데이터를 복원한다

새 Lightsail WordPress 관리자 페이지에 WPvivid를 설치한다. 기존 서버에서 만든 백업 파일을 업로드하고 전체 복원을 실행한다.

Auto-Migration을 사용한다면 새 사이트에서 migration key를 만들고 기존 사이트에 입력해 데이터를 직접 전송한다. 어떤 방법을 사용하더라도 별도의 전체 백업 파일은 남겨 두는 것을 권한다.

전체 백업을 복원하면 관리자 계정과 플러그인 설정도 기존 사이트의 정보로 돌아갈 수 있다. 복원 직후 로그인이 풀리거나 초기 계정으로 들어가지지 않는다면 기존 웹호스팅에서 사용하던 관리자 계정으로 로그인한다.

복원 직후에는 캐시 플러그인의 캐시를 비우고 고유주소 설정을 한 번 저장한다. 이미지, 메뉴, 위젯, 내부 링크, 댓글, 문의 폼처럼 화면만 보고 놓치기 쉬운 부분도 함께 확인한다.

7. DNS를 바꾸기 전에 새 서버를 테스트한다

복원이 끝난 뒤 고정 IP로 접속하면 원래 도메인으로 리다이렉트될 수 있다. WordPress의 사이트 주소가 기존 도메인으로 저장되어 있기 때문이다. 이 상태에서 주소창의 도메인만 열면 여전히 기존 웹호스팅으로 접속하므로 새 서버를 제대로 확인할 수 없다.

테스트할 PC의 hosts 파일에 도메인과 Lightsail 고정 IP를 임시로 연결하면 DNS를 바꾸지 않고도 새 서버를 도메인 주소로 확인할 수 있다.

15.xxx.xxx.xxx example.com
15.xxx.xxx.xxx www.example.com
  • Windows: C:\Windows\System32\drivers\etc\hosts
  • macOS·Linux: /etc/hosts

hosts 파일을 수정한 PC에서만 새 서버로 연결된다. 시크릿 창이나 다른 브라우저를 이용하고, 테스트가 끝나면 추가한 줄을 반드시 삭제한다. 아직 새 서버에 인증서를 설치하지 않았다면 HTTPS 검증은 DNS 전환 후에 진행한다.

8. DNS 전환 방법을 선택한다

DNS 전환은 두 가지 방법이 있다. 특별한 이유가 없다면 기존 DNS 관리업체를 유지하고 웹사이트 레코드만 변경하는 방법을 추천한다. 네임서버를 건드리지 않으므로 이메일과 다른 서브도메인에 미치는 영향이 작고 되돌리기도 쉽다.

기존 DNS에서 A 레코드만 변경하는 방법과 Lightsail DNS로 네임서버를 변경하는 방법 비교
기존 DNS를 유지하고 A 레코드만 바꾸는 방법이 일반적으로 더 단순하다.

방법 1. 기존 DNS를 유지하고 A 레코드만 변경

도메인이나 DNS를 관리하는 업체의 설정 화면에서 루트 도메인의 A 레코드를 Lightsail 고정 IP로 변경한다. 업체에 따라 루트 도메인을 @, 빈 값 또는 도메인 자체로 표시할 수 있다.

Type : A
Name : @
Value: Lightsail 고정 IP

www.example.com을 사용한다면 www의 CNAME을 루트 도메인으로 연결하거나 별도의 A 레코드를 만든다.

Type : CNAME
Name : www
Value: example.com

기존에 AAAA 레코드가 있다면 함께 확인해야 한다. 새 서버에서 해당 IPv6 주소를 사용하지 않는데 예전 AAAA 레코드가 남아 있으면 일부 이용자가 이전 서버로 접속하거나 접속에 실패할 수 있다.

방법 2. Lightsail DNS로 옮기고 네임서버 변경

DNS 관리도 Lightsail로 옮기고 싶다면 Domains & DNS에서 DNS Zone을 만든다. A, AAAA, CNAME, MX, TXT, CAA 등 기존 DNS 레코드를 먼저 복사한 뒤 도메인 등록업체에서 Lightsail이 제공한 네임서버로 변경한다.

SPF, DKIM, DMARC는 보통 TXT 레코드로 등록되어 있다. 이 레코드들을 빠뜨리면 홈페이지는 열리는데 도메인 이메일이 수신되지 않거나 발송 메일이 스팸으로 분류될 수 있다. 서브도메인을 사용한다면 해당 A 또는 CNAME 레코드도 함께 옮긴다.

나는 Lightsail DNS를 사용하면서 네임서버까지 변경했지만, 이것은 서버 이전의 필수 단계가 아니다. 기존 DNS 업체를 계속 사용한다면 네임서버는 그대로 두면 된다.

9. DNS 전환 결과를 확인한다

최종 백업과 새 서버 테스트를 마친 뒤 DNS를 변경한다. DNS 캐시와 기존 TTL 때문에 한동안 환경에 따라 기존 서버와 새 서버가 번갈아 보일 수 있다. 이때 새 글이나 댓글을 받으면 두 서버의 데이터가 달라질 수 있으므로 전환이 안정될 때까지 변경을 최소화한다.

Windows에서는 다음 명령으로 A 레코드를 확인할 수 있다.

nslookup example.com

macOS나 Linux에서는 다음 명령을 사용할 수 있다.

dig +short example.com
dig NS example.com

A 레코드 결과가 Lightsail 고정 IP와 같으면 웹 트래픽 전환이 된 것이다. 기존 DNS를 유지한 경우 NS 조회 결과에 기존 업체의 네임서버가 나오는 것이 정상이다. Lightsail DNS로 옮긴 경우에만 awsdns 네임서버가 표시되어야 한다.

10. HTTPS를 설정한다

도메인이 새 Lightsail 고정 IP를 가리키고 80번과 443번 포트가 열려 있는 것을 확인한 뒤 HTTPS를 설정한다.

Lightsail WordPress 관리 화면에 Set up your website가 보이면 안내 절차를 이용할 수 있다. 기존 DNS 업체를 계속 사용하는 경우에도 Third-party DNS를 선택할 수 있으며, 도메인 연결과 Let’s Encrypt 인증서 설정을 진행할 수 있다.

Bitnami 도구를 직접 사용하는 환경에서는 SSH로 접속해 다음 명령으로 인증서 설정을 진행할 수 있다. 이미지 버전에 따라 구성이 다를 수 있으므로 명령이 없거나 오류가 나면 현재 AWS Lightsail 공식 문서를 확인한다.

sudo /opt/bitnami/bncert-tool

설정이 끝나면 http://example.comhttps://example.com으로 리다이렉트되는지, 브라우저에 인증서 오류나 혼합 콘텐츠 경고가 없는지 확인한다.

11. 이전 후 반드시 확인할 항목

확인 항목확인 내용
홈페이지PC와 모바일에서 정상적으로 출력되는지
관리자 페이지/wp-admin 로그인과 글 저장이 가능한지
이미지·첨부파일기존 이미지와 다운로드 파일이 빠짐없이 열리는지
메뉴·내부 링크링크가 이전 주소나 IP를 가리키지 않는지
플러그인캐시, 보안, 통계, 백업 기능이 정상인지
폼·이메일문의 폼과 도메인 이메일 송수신이 정상인지
HTTPS인증서 오류와 혼합 콘텐츠가 없는지
리디렉션HTTP와 www 주소가 원하는 HTTPS 주소로 모이는지
DNSA·AAAA·CNAME·NS 결과가 의도한 값인지
예약 작업WP-Cron과 예약 발행이 정상인지
백업새 서버의 정기 백업과 복원이 가능한지
보안SSH 접근 제한, 관리자 2단계 인증, 업데이트 상태를 확인했는지

가능하면 Lightsail 스냅샷도 한 번 만들어 둔다. 플러그인 백업은 워드프레스 복구에 유용하고, 인스턴스 스냅샷은 서버 전체에 문제가 생겼을 때 빠르게 되돌리는 데 도움이 된다.

12. 마지막에 기존 호스팅을 정리한다

새 서버가 며칠 동안 문제없이 동작하고 DNS 캐시도 충분히 갱신된 것을 확인한 다음 기존 웹호스팅을 정리한다. 해지 직전에는 기존 서버의 최종 백업을 한 번 더 내려받아 보관한다.

직접 이전해 보니 WordPress 데이터 자체는 WPvivid를 이용해 생각보다 쉽게 옮길 수 있었다. 오히려 더 신경 써야 했던 부분은 DNS 전환과 전환 전 테스트였다.

전체 백업 → 새 서버 구축 → 고정 IP 연결 → 복원 → hosts 파일 테스트 → DNS 전환 → HTTPS 설정 → 최종 확인 순서로 진행하면 문제가 생겨도 기존 서버로 돌아갈 여지가 남는다.

핵심은 모든 것을 한 번에 바꾸지 않는 것이다. 기존 서비스를 유지한 상태에서 새 환경을 먼저 완성하고, 마지막에 트래픽만 넘기는 방식이 가장 안전하다.