컨텐츠로 건너뛰기

고스트(Ghost)에서 고스트(Ghost)로 블로그 이전하기 (서버 이동)

1. Ghost블로그 이전

아마존 AWS에서 뚝딱뚝딱 이것저것 해보고 이전이 필요하게 되었습니다.
아직까지는 고스트 측에서 자사의 Ghost(Pro)로 이전하는 방법만 제공하고 그에 외의 이전에 따라 생기는 문제점의 해결 방법은 오픈소스니까 알아서 해야겠죠…

확인시점 2023-07-04 Migrating from Ghost to

1). 공식 이전 방법이 조금 이상해요

저 방식으로 셀프 호스팅 블로그를 이전하면 놀라운 경험을 하게됩니다.
News Letter가 2개가 되고, 따로 Ghost Admin GUI에서는 수정을 할수 없게 되어있습니다.
이러한 문제점을 알고 있는지 모르는지, 혹은 정말로 알아서 하겠지… 하는 생각을 갖고 있는지는 몰라도 여러 가지 측면에서 아직 까지는 Ghost블로그를 정말 블로그용으로 사용하기에는 많은 시간을 할애해야 하죠.

2). 전반적인 Ghost 블로그의 문제점

또한 표준 문안이 부실해서 공식 가이드라인이 가이드가 아닐 때가 종종 있습니다.

고스트 Mail발송을 위한 SMTP설정, 코드 하이라이팅을 위한 Prismjs 적용(빠른 적용을 원하시면), 등등등 세부적인 버전에 따라서 공식적으로 올려놓은 방법으로 되기도 하고 안되기도 합니다.
공식 도커 이미지를 이용해서 설치했는데도 불구하고요.

blog의 테마를 수정할 때, 정작 수정을 하고 테마를 올리고, 고스트 업데이트를 하면 경고 창이 뜹니다.
더 이상 지원하지 않는 기능이라고.
어떤게 바뀌었는지 세세하게 이야기 해주지도 않고, 공식적으로 제공하는 테마 검증 도구인 GScan를 사용해도 어떠한 것이 더 이상 사용 불가능할 것이다 이런 내용도 나오지 않습니다.

정말 블로그를 사용하기 위해서 설치해 사용하는 건데 야크 털 깎기(Yak Shaving) 삽질 상황이 자주 일어납니다.
이러다 털 깎기 장인이 될거 같습니다.

2. Ghost블로그 Mysql 백업

cli환경이 불편하시면, Phpmyadmin으로 내보내기 하셔서서 DB를 백업합니다.

  1. 기존 서버의 Phpadmin에 접근 하여, 기존에 사용하던 DB를 클릭합니다.

  2. 내보내기를 클릭하고

  3. 화면 하단에 있는 내보내기를 클릭합니다.

3. 이전을 원하는 서버에 Bitnami/Ghost Docker이미지로 구성

여러 번 설치를 해보고 뒤집어 엎어 봤지만 Bitnami의 이미지가 개인적으로 안정적이었습니다.
공식 Ghost이미지 보다 자세한 설명과 레퍼런스가 많은 것은 덤이구요.
AWS의 S3 버킷을 어댑터 형식으로 사용하는 방법도 공식 이미지 혹은 공식 사이트보다 더 자세하게 나와 있습니다.

또한, 개인적으로 Ghost블로그에서 제일 중요하다고 생각하는 config.production.json파일에 접근가능 합니다.
시놀로지의경우 DSM과의 non root container의 오묘한 조화로 - PUID=1026 - PGID=100를 넣어주어야 합니다. (혹은 사용자에 맞는 ID) (Mysql도 마찬가지 입니다.) 확인하기

4. Bitnami/Ghost Docker이미지로 Ghost 실행

Bitnami/Ghost Docker이미지에서 기본적으로 제공하는 설정으로 진행하셔도 무관합니다.
Blog의 이름, 관리자 계정의 이메일, 비밀번호 등등 전부 무관합니다.
2번에서 백업한 Mysql로 깔끔하게 덮어 버릴것 이라서요.

5. 기존 블로그의 테마를 업로드

고스트는 테마가 맞지 않으면 놀랍게도 500에러를 바로 표시합니다. 기본 테마로 덮어 씌워주는 기능도 없습니다. 그러면서 기본 테마인 casper는 제거할 수 없죠
따라서, DB데이터를 덮어쓰기 전에 반드시 기존에 사용하던 테마를 먼저 업로드 해줍니다.

6. 기존 블로그의 DB를 이전하는 서버로 가져오기

기존 블로그의 DB를 이전하는 서버로 가져옵니다.

새로 이전할 서버의 Phpmyadmin으로 접속하여

  1. 가져오기

  2. 위에서 백업한 파일을 선택합니다.

  3. 화면 스크롤을 내리면 가져오기가 있습니다. 클릭합니다.

7. 이전하는 서버의 DB사용자에게 권한을 부여해줍니다.

(기본 사용자는 bitnami_ghost입니다.)

  1. 사용자 계정을 클릭하고

  2. 기본 사용자인 bitnami_ghost를 클릭합니다. (혹은 자신이 지정한 사용자)

  1. 데이터 베이스를 누르고

  2. 사진의 청록색 영역에서 기존에 사용하던 (즉, 불러온) 데이터베이스에 권한을 부여합니다.

  3. 실행을 누릅니다.

8. Ghost 컨테이너 정지

Ghost 컨테이너를 정지하고 config.production.json 파일을 수정합니다.
경로는 컨테이너 이미지를 설치했을 때 마운트한 경로에 있습니다.

JSON

{
"database": {
"client": "mysql",
"connection": {
"host": "Mysql-db",
"port": 3306,
"database": "navystack_prod",
"user": "bitnami_ghost",
"password": "#####",
"ssl": false
}
},
"url": "https://navystack.com",
"server": {
"port": ####,
"host": "0.0.0.0"
},
"logging": {
"transports": [
"file"
]
},
"process": "local",
"paths": {
"contentPath": "/opt/bitnami/ghost/content"
}
}

5,6,8,9,13,15번 줄은 개인에 맞춰서 변경이 필요합니다.
Json파일은 주석을 파일에 포함하기 때문에 다른 글과 다르게 여기에 적습니다.
8번 줄을 기존에 사용하셨던 DB이름으로 바꿔주시면 됩니다.

9. 기존 서버에서 이미지 가져오기

content - images의 이미지만 새로 구성한 서버에 붙여 넣어줍니다.
(경로가 같도록 해주시면 됩니다.)
시놀로지를 사용 하신다면 권한을 실행할 계정으로 변경해 줍니다.
(PUID=1026, PGID=100 계정이라면 관계없이 진행하시면 됩니다)

10. bitnami Ghost 컨테이너 시작

이제 기존에 사용하시던 모든 설정이 덮어 씌워졌습니다.
/ghost/ 경로로 진입하실 때, 기존 서버의 계정으로 로그인 하시면 됩니다.

수고 많으셨습니다. 감사합니다.


Askfront.com (에스크프론트)

기존의 댓글 대신, 초보자도 자유롭게 질문할 수 있는 포럼을 만들었습니다.
에스크프론트에서는 가이드뿐만 아니라 모든 종류의 질문을 하실 수 있습니다.
검색해도 오래된 정보나 도움이 되지 않는 정보만 나오는 것 같고, 주화입마에 빠진 것 같은 기분이 들 때가 있습니다.
그럴 때, 부담 없이 질문해 주세요 :) 같이 의논하며 생각해봅시다.
가능하다면, 제가 답변 드리겠습니다. 고맙습니다.