ghost 는 NodeJS 기반으로 개발된 Open Source CMS 입니다.

confluence 로 운영하는 개인 블로그인 lesstif.com 에 쌓인 자료를 정리하는 용도로 블로그를 만들려고 여러 가지 제품을 검토했는데 다음과 같은 이유로 고스트를 사용하기로 결정했습니다.

  • Ghost 는 SaaS 와 직접 설치해서 사용할 수 있는 오픈 소스 버전이 따로 제공되므로 선택의 폭이 넓음
  • 성숙한 제품이라 많은 사용자를 갖고 있고 레퍼런스가 많음
  • 활성화된 Marketplace 나 상용 Themes 가 많으므로 시간과 비용을 들인다면 커스터마이징을 최소화할 수 있음(블로그하려다 CMS 만드는 야크털깍기 방지)
  • JAMStack 을 지원하므로 SaaS 를 사용하지 않아도 netlify 등을 통해 빠르게 서비스 가능

워드프레스도 검토했지만 테마와 여러 가지 관리가 번거로워서 제외했습니다.

사실 워드프레스를 깊게 써본적이 없어서 전환 비용이 거의 없기때문에 별 고민이 없었지만 블로그용으로 아직도 괜찮은 대안이라고 생각합니다.

설치

사전 준비

NodeJS 로 만들어졌으므로 nodeJS 를 먼저 설치해 둡니다.

고스트는 NodeJS 12, 14 LTS 만 지원하며 14 LTS 를 권장합니다.

nvm (Node version Manager) 으로 설치해 주세요


npm 으로 ghost 명령행 유틸리티를 설치합니다.

npm install ghost-cli -g
BASH


local 설치

개발 PC 나 개발 서버에 설치할 경우로 먼저 ghost 를 설치할 디렉터리를 생성합니다.

mkdir my-blog
cd my-blog
BASH

ghost 명령행 유틸리티에  install local 명령을 전달하면 로컬에 ghost 가 설치됩니다.

ghost install local
BASH

install 이 끝나면 설정 파일(config.development.json) 이 생성되고 자동으로 Nodejs 가 구동되고 http://localhost:2368/ 로 연결하면 됩니다.

서버에 설치

ghost 를 운영할 서버에 직접 설치할 경우 install 만 입력하면 여러 설정을 조정하면서 설치할 수 있습니다.

ghost install
BASH


그러면 여러 가지 체크를 한 후에 DBMS 종류를 물어봅니다. 

MariaDB 라 그런지 찾을수 없거나 중지되었다고 나오는데 y 를 입력해서 넘어갑니다.

ℹ Checking system compatibility [skipped]
Local MySQL install was not found or is stopped. You can ignore this if you are using a remote MySQL host.
Alternatively you could:
a) install/start MySQL locally
b) run `ghost install --db=sqlite3` to use sqlite
c) run `ghost install local` to get a development install using sqlite3.
? Continue anyway? (y/N) 
BASH


URL 을 설정하는 화면인데 기본 설정값은 localhost:2368 입니다. 한 서버에서 여러 고스트를 운영하지 않는다면 기본 값을 사용합니다.

 Checking for a MySQL installation [skipped]
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v4.19.1
✔ Finishing install process
? Enter your blog URL: (http://localhost:2368)
BASH


엔터를 치면 MySQL 호스트와 계정, DB 명을 물어보는데 입력해주고 엔터를 칩니다.

? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghost
BASH


고스트를 설치하는 계정이 systemd 를 사용할 수 있도록 ghost 라는 그룹을 추가하기 위해 sudo 로 useradd 명령어를 실행합니다. sudo 용 암호를 입력하고 엔터를 칩니다.

 Configuring Ghost
✔ Setting up instance
+ sudo useradd --system --user-group ghost
? Sudo Password [input is hidden] 
BASH


고스트 디렉터리를 ghost 계정과 그룹 소유로 변경하고 nginx 설치 여부를 확인합니다.

그리고 systemd 에 설정할지 여부를 물어보는데 y 를 입력합니다.

 sudo chown -R ghost:ghost /var/www/lesstif-blog/content
✔ Setting up "ghost" system user
ℹ Setting up "ghost" mysql user [skipped]
Nginx is not installed. Skipping Nginx setup.
ℹ Setting up Nginx [skipped]
Nginx setup task was skipped, skipping SSL setup
ℹ Setting up SSL [skipped] 
? Do you wish to set up Systemd? (Y/n)  
BASH


systemd 에 고스트용 unit(ghost_localhost.service) 이 추가됩니다. 고스트를 지금 실행하지 여부를 묻는데 y 를 누르면 됩니다.

+ sudo mv /tmp/localhost/ghost_localhost.service /lib/systemd/system/ghost_localhost.service
+ sudo systemctl daemon-reload
✔ Setting up Systemd
+ sudo systemctl is-active ghost_localhost
? Do you want to start Ghost? (Y/n)
CODE


systemd 에 추가됐으므로 부팅시에 자동으로 실행됩니다. 현재 상태를 보려면 status 명령을 실행합니다.

sudo systemctl status ghost_localhost
CODE

ghost 설치 폴더에 .ghost-cli 파일을 열어보면 사용하는 고스트 버전, cli 버전, 구동 환경등을 알 수 있습니다.


초기 설정

Admin 계정 생성

이제 http://localhost:2368/ghost/ 로 연결하면 초기 설정을 할 수 있습니다.


아래의 "Create your account"  를 클릭합니다.


계정 정보와 암호를 입력하고 하단의 "Last step invite staff users" 를 클릭합니다.


다른 계정을 초대하려면 초대할 email 을 넣고 아니면 하단의 "i'll do this later take me to my sites" 를 클릭하면 관리자 대시보드로 이동합니다.

Admin 계정 생성



setup 명령으로 설정 변경

DB 연결 정보, URL 등을 바꿔야 할 경우 직접 설정 파일을 수정해도 되지만 setup 명령어로 단계별로 바꿀수 있습니다.

ghost 의 설정 파일은 운영 환경일 경우 config.production.json 로컬이나 개발 환경일 경우 config.development.json 에 저장됩니다.

setup 명령어로 이 파일을 다시 만들수 있으며 개발용 설정을 만들경우 -D, --development 옵션을 사용하면 됩니다.

$ ghost setup -D

? Enter your blog URL: http://localhost:2368
? Enter your MySQL hostname: localhost
? Enter your MySQL username: (ghost) 
BASH


setup 뒤에 특정 stage 를 명시할 수 있으며 stage 는 nginx, ssl, mysql, systemd, migrate, linux-user 중에 콤마를 구분자로 해서 하나 이상을 적어주면 됩니다.

다음은 개발 모드로 mysql 과 migrate 를 setup 합니다.

$ ghost setup mysql migrate -D 
BASH


설정이 완료되면 환경에 맞게 설정 파일(config.ENV.json) 에 반영되며 ENV 는 production 또는 development 입니다.


같이 보기

Ref