AWS Lightsail + WordPress

워드프레스를 블로깅 툴로 선택한 지도 벌써 1년이 지났군요. 사실 그 사이에 쓴 글이 거의 없다보니 체감 시간은 얼마 지나지 않은 것 같습니다. 😉

개인적으로는 프로그래밍 관련된 글을 더 많이 쓰다보니 github flavored markdown으로 작업하는 것이 훨씬 더 친숙한데요, 여기에 익숙하지 않은 분들과 같이 글을 쓰기에는 아무래도 워드프레스가 더 좋을 것 같아 큰 마음 먹고 WordPress hosted를 구매해서 사용했더랬지요.

1년이 지나고 나서 알게 된 점은,

  • 생각보다 글을 많이 쓰지 않았습니다 (…)
  • WordPress Business plan은 $300/year로 비용이 꽤 큽니다 (…)
  • 생각 이상으로 느리고 서포트가 아주 좋지는 않았습니다 (…)

생각해보면 쇼핑몰을 운영할 것도 아니고 단순히 테마 하나 바꾸자고, 별로 빠르지도 않은 서비스를 위해 $300을 지불하는 것은 굉장히 돈이 아깝다는 생각이 들었습니다. 그래서 차라리 static site generator로 하나 만들고 wysiwyg editor를 붙여놓을까 잠시 고민을 해보았습니다만 갈 길이 너무 멀었더랬죠.

그러던 중 AWS Lightsail의 WordPress instance가 생각났습니다. 대충 글을 찾아보니 $5/month 정도로 저렴하고, 1vCPU, 1GB RAM, 40GB storage, 1TB traffic 사양이라 현재 개롱살롱 규모를 다루기에는 전혀 문제가 없겠다는 생각이 들었습니다. 설치도 쉽고 간단하게 되어서 신난 마음에 바로 static IP를 할당하고 도메인을 연결해버렸죠. 그리고 문제가 터졌습니다-_-

  • 기존 블로그에서 아직 백업을 하지 않은 상태였는데 기존 블로그의 wp-admin으로 접근하면 계속 도메인으로 접근하려 하기 때문에 새로 설치한 빈 블로그의 admin으로 연결이 되었습니다. 때문에 백업이 불가능했습니다 (…)
  • 어찌어찌해서 JetPack의 자동 백업 기능 덕분에 그걸 다운로드 받았으나, 새 블로그에서 그걸 가져오려면 역시 JetPack이 설치되어 있어야 했습니다. 하지만 JetPack은 WordPress.com에 무언가 연동을 하는 것인지 결국 도메인으로 연결된 새 블로그를 제대로 인식하지 못하는 문제가 있었습니다 (…)

따라서 기존 워드프레스의 데이터를 가져오려면 적어도 다음과 같은 순서로 하는 것이 좋아보입니다.

  1. 기존 블로그의 wp-admin의 Tools > Export로 백업을 받아둡니다.*
  2. 혹시 모르니 JetPack에서도 백업을 받아둡니다.**
  3. 기존 블로그의 도메인을 해제합니다. (혹은 삭제합니다.)
  4. 새 블로그의 wp-admin의 Tools > Import로 백업 데이터를 가져옵니다.
  5. 새 블로그에 도메인을 연결하고, JetPack을 인증한 뒤, JetPack에서 백업 데이터를 가져옵니다.**

하지만 제 경우 순서가 꼬여서 발생한 것인지 wp-admin Tools를 통해 가져온 데이터는 대부분의 이미지, 특히 Featured image가 다 깨져서 제대로 import되지 않았고, 도메인을 변경하는 당시에는 JetPack쪽 cache 때문인지 계속 옛 서버와 새 서버를 오락가락 붙으면서 시스템이 제대로 동작하지 않았습니다.
급기야 데이터를 다 백업 받았다고 생각하고 아예 예전 블로그를 삭제해버렸죠. 그리고 시간이 지나서 DNS propagation이 끝나면 시스템이 정상화 될 것으로 생각했습니다.

하지만 반은 맞고 반은 틀렸습니다. 그림이 깨져있는 글들은 여전히 깨져있었고 편집이 불가능한 글들은 계속 편집이 불가능했습니다. 하루가 지나도 별 차도가 없어서 결국 포기하고 글을 하나하나 다 편집해서 정상화하기로 마음 먹었습니다. 아이러니하게도 글이 별로 없기 때문에 내릴 수 있는 결정이기도 했습니다.
이 때 JetPack으로 백업 받은 데이터가 큰 역할을 했습니다. 예전 블로그를 삭제한 상태라 그 때 업로드한 이미지를 다시 받아올 수가 없었는데, 다행히 JetPack 백업에는 그 때 업로드한 이미지도 같이 받아지기 때문이었죠. 기억을 더듬어 글의 조판과 함께 이미지를 다시 다 등록하는 작업을 했습니다.

재미있는 것은 Gutenberg입니다. 워드프레스가 새로이 밀고 있는 편집기인 것 같습니다. 더 잃을 것도 없으니 기존 글을 이 에디터로 편집해보았는데 느낌이 꽤 괜찮더군요! 게다가 block 단위로 plugin을 확장할 수 있다는 개념도 아주 마음에 들었습니다. 예전 에디터보다 확장성도 좋고 속도도 빠른 느낌이 들더군요.
덕분에 기존 글들도 모두 이 Gutenberg 형식으로 고쳐놨습니다. 문단 나뉘는 것도 예쁘고 block 단위로 서식/유형이 결정되는 것도 마음에 들었습니다.
다만 왜 문단 내 일부 글자의 색을 바꿀 수는 없는 것일까요 😉

재미있는 것은 드디어 오랜 기간 기다렸던 code syntax highlight plugin이 나왔다는 겁니다. 전에 봤던 마음에 안 드는 그것과는 차원이 다른 예쁨이 있어서 아주 마음에 듭니다! 하지만 지원하는 언어가 좀 다양해졌으면 좋겠다는 생각이 듭니다. 하지만 이제 self-hosted이니 그럴 기분이 들면 아예 직접 고쳐서 쓸 수도 있다는 생각이 들어 마음이 한결 푸근해집니다(?)

import * as awsTypes from 'aws-lambda';

export const handler = async (
  gatewayEvent: awsTypes.APIGatewayEvent,
  context: awsTypes.Context,
  callback: awsTypes.Callback,
) => {
  console.log(gatewayEvent);
  return callback(null, {
    statusCode: 200,
    headers: {
      'Content-Type': 'application/json',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Credentials': true,
    },
    body: JSON.stringify({
      request: gatewayEvent,
    }),
  });
};

위 코드는 제 repository에 있는, 이 글과는 아무 상관이 없는 코드입니다. 예쁘게 나오는군요!

아무튼 AWS Lightsail + WordPress로 속도도 빨라지고 안정적인, 그리고 기다리다보니 나오게 된 괜찮은 editor로 보이는 gutenberg까지. 이제 정말 글을 안 쓰기 위한 핑계가 남아나지 않게 되고 있습니다.

하지만 그래도 게을러서 안 쓰겠죠!

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *