고스트 블로그 서버 설정


Amazon Lightsail의 OS전용 우분투 18.04 인스턴스 생성을 기준으로 합니다. 라이트세일에는 미리 값을 세팅해 놓은 앱 + OS도 있지만 다른 사용 환경에서도 사용해 볼 수 있도록 이 방식으로 해봅니다.

사용자 생성

$adduser <user>

사용자 이름은 ghost로 하지 마세요. ghost-cli와 충돌이 있을 수 있습니다.

sudo adduser 로 해야될수도 있습니다.

$usermod -aG sudo <user>
$ su - <user>

생성한 사용자를 superuser그룹에 포함시키고 관리자 권한을 줍니다.

새 사용자로 로그인 합니다.

패키지 업데이트

$sudo apt-get update && sudo apt-get upgrade

설치를 하기 전 우분투 시스템을 업데이트 합니다.

NGINX 설치

$sudo apt-get install nginx
$sudo ufw allow 'Nginx Full'

Nginx를 설치하고 http와 https 연결을 위한 방화벽을 열어줍니다.

Amazon Lightsail에서는 인스턴스이 관리탭의 네트워크 항목에서 방화벽 port 433을 열어주어야 합니다.

MySQL 설치


Ubuntu 18.04버전 기준입니다.

$sudo apt-get install mysql-server
$sudo mysql
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql>quit

Node.js 설치

$curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
$sudo apt-get install -y nodejs

지원버전을 체크해 리포지토리에 추가해준 후 Node.js를 설치합니다.

Ghost-CLI 설치

$sudo npm install ghost-cli@latest -g

$ghost help 를 이용해 도움말을 볼 수 있습니다.

Ghost 설치


/root나 /home/user 디렉토리에 설치면 설정이 손상됩니다. 권한을 제대로 설정한 사용자 디렉토리에 설치하도록 합니다.

$sudo mkdir -p /var/www/ghost
$sudo chown <user>:<user> /var/www/ghost
$sudo chmod 775 /var/www/ghost

$cd /var/www/ghost

설치를 시작합니다.

$ghost install

아마존 라이트세일의 최저플랜의 512MB 에서는 메모리 부족이 나타날 수 있습니다. 스왑메모리를 설정해 메모리를 확보 후 진행합니다.

$sudo swapon -s     # 스왑 파티션 확인
$sudo free -m       # 메모리 용량 확인
$sudo fallocate -l 1G /swap1g
$sudo chmod 600 /swap1g
$sudo mkswap /swap1g
$sudo swapon /swap1g
$sudo swapon -s
$sudo free -m

재부팅시 적용되도록 설정
/etc/fstab에 다음 내용 추가
/swap1g     none    swap    sw  0   0

설치가 진행되면서 몇가지 질문에 답해야 합니다.

  • 블로그 URL
  • MySQL hostname - MySQL이 동일 서버에 있다면 localhost(기본설정)으로 합니다.
  • MySQL username / password 를 설정 (root/password)
  • Ghost database name - 자동으로 설정됩니다. MySQL이 root로 설정이 되지 않았다면 지정해줘야 합니다.
  • SSL설정까지 자동으로 진행됩니다. 이메일을 넣어주세요.
  • 나머지 설정은 엔터키로 진행하시면 됩니다.

이제 https://yoursites.com/ghost 로 들어가 설정을 마무리 합니다.

참고

웹폰트 설정


구글 웹폰트를 적용합니다. 여러가지 검색을 해보았으나 casper등 테마의 css를 직접 제어하는 방식으로 처리를 하는 방법들이 많이 나오는데 워드프레스로 블로그를 운영해 봤을때 업데이트가 있을 경우 매번 수정해주는게 많이 불편했습니다.

하지만 고스트 블로그는 code injection 기능을 통해 직접 제어가 가능해서 그 방법을 써봅니다.

code injection 부분에 저는 이런 방식으로 세부 내용을 지정해가며 세팅했습니다.

<link href='https://fonts.googleapis.com/css?family=Nanum+Gothic' rel='stylesheet' type='text/css'>
<style>
    body, h1, h2, h3, h4, h5, h6,
    .site-description, .post-card-title, .post-card-excerpt, 
    .post-content {
        font-family: "Nanum Gothic", Roboto, sans-serif;
    }
    .site-description {
        font-size: 1.5rem !important;
    }
    .post-card-title {
        font-size: 2rem;
    }
	.post-content {
        font-size: 1.5rem;
    }
    .post-full-content h1 {
        font-size: 3rem;
    }
    .post-full-content h2 {
        font-size: 2.5rem;
    }        
    .post-full-content h3 {
        font-size: 2rem;
    }
    .post-full-content h4 {
        font-size: 1.5rem;
    }
    .post-full-content h5 {
        font-size: 1rem;
    }
    .post-full-content blockquote p {
        font-size: 1.2rem;
        font-style: normal;
    }
</style>

세부적인 세팅들은 github의 css내용들을 보며 수정하고 각 부분들의 class명은 크롬의 개발자모드(F12)를 통해 찾았습니다.

https://github.com/TryGhost/Casper/blob/master/assets/css/screen.css