이전 글에서는 Hexo를 선정한 이유와 설치, 기본 세팅에 대해 알아봤다. 이번 글에서는 Hexo에서 글을 쓰고 정적 페이지로 변환해 배포하는 방법에 대해 알아볼 것이다.

Writing

글쓰기도 터미널에서 명령어를 입력해서 시작한다.

1
$ hexo new [layout] <title>

여기서 layout이란건 글의 종류 혹은 진행상황을 말한다. 기본적으로 page(일반 페이지), draft(초안), post(완성본) 세 종류가 존재한다. scaffolds/<레이아웃 명칭>.md 파일을 열어보면 해당 종류에 따른 글의 기본 틀을 알 수 있다.

레이아웃을 이용해서 초안을 작성하려면 아래 명령어를 이용하면 된다. 아래 명령어를 사용하면 source/_drafts/에 자동으로 레이아웃을 바탕으로 글을 작성해 준다.

1
$ hexo new draft "Hello world!"

해당 디렉토리에 입력한 제목을 이용한 마크다운 파일이 생성된 것을 확인 할 수 있다.

1
2
$ ls source/_drafts/
Hello-world.md

파일을 열어보면 다음과 같은 구조인 것을 볼 수 있다.

Hello-world.md
1
2
3
4
---
title: Hello world!
tags:
---

---를 기준으로 글을 정보를 담는 헤더(Header) 단락과 본문 단락이 구분된다. 마지막 ---을 기준으로 상단이 헤더, 하단이 본문이 된다.

헤더는 YAML의 구조를 띈다. 헤더 중 title은 글의 제목을 나타내며, tags는 글의 태그를 나타낸다. 태그 분류 라이브러리를 이용할 경우 이 정보를 기반으로 분류가 된다. tags는 다음과 같이 여러 태그를 달 수 있다.

1
2
3
4
tags:
- hexo
- github
- blogging

--- 이후로는 마크다운을 이용해 본문을 작성하면 된다.

본문 작성을 완료하고 글을 공개하려면 다음 명령어를 이용하면 된다.

1
$ hexo publish <title>

해당 명령어를 이용하면 글을 source/_drafts/에서 source/_posts/로 이동시켜주며, 헤더에 현재 날짜와 시간을 date 태그로 달아준다. 그럼 최종적으로 글은 아래와 같을 것이다.

1
2
3
4
5
6
7
8
9
---
title: Hello World!
date: 2016-07-17 23:52:26
tags:
- hexo
- github
- blogging
---
자, GitHub Pages를 이용한 블로깅 시작!

굳이 위와 같이 레이아웃을 이용하며 draft - publish의 과정을 거치지 않고 직접 글을 작성해도 되는데, 이 경우 source/(_drafts|_posts)에 해당 양식대로 작성해 넣으면 된다.

Preview

이제 제대로 글이 써졌는지 확인 해 볼 차례다. node.js를 이용한 서버를 기동해서 로컬 상에 블로그를 띄워보자. 이 과정을 통해 설정 파일을 잘못 작성하지는 않았는지, 헤더나 마크다운이 꼬여서 글이 잘못 나오지는 않는지 확인해 볼 수 있다.

1
2
3
$ hexo server
INFO Start processing
INFO Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.

메세지에 나오는 바와 같이 http://localhost:4000/에 접속해 보면 Hexo를 이용한 블로그가 실행되고 있는 것을 볼 수 있다.

Generating

글이 문제없이 보여진다면, 최종적으로 정적 페이지를 생성하고 GitHub에 배포하자. 정적 페이지를 생성하기 위해서는 다음 명령어를 이용하면 된다.

1
$ hexo generate

해당 명령어를 실행하면 public 디렉토리에 index.html을 비롯해 블로그 정적 페이지들이 생성된다. 이 때 변경사항은 기본적으로 알아서 판별해 페이지를 생성하지만, 문제가 있을 경우에는 hexo clean으로 기존에 생성된 파일을 삭제한 후 재생성 하자.

Deployment

이제 이 파일을 GitHub 상에 올리기만 하면 된다. 먼저 GitHub에 올리기 위해 저장소부터 만들자. GitHub에서 정적 페이지를 서비스하기 위해서는 저장소 명칭을 <계정명(username)>.github.io라고 지어야 한다. 만약 GitHub 계정이 zero2hex라면 zero2hex.github.io라고 지어야 하는 것이다. 잘 모르겠다면 여기를 보고 참고하도록 하자.

그 다음으로 _config.yml에 배포에 관련된 설정을 한다. Hexo는 Git, Heroku, Rsync, OpenShift, FTPSync 등 다양한 플랫폼으로의 배포를 지원한다. 여기서는 Git 배포를 이용해 GitHub에 올릴 것이다. (다른 방식의 배포는 여기를 참고하자) _config.yml에 다음과 같은 포맷의 설정을 추가한다.

1
2
3
4
5
deploy:
type: git
repo: <repository url>
branch: [branch]
message: [message]
  • type: git, heroku, rsync 등 배포 방식을 입력한다. 여기서는 git을 입력한다.
  • repo: 배포할 GitHub 저장소 주소를 입력한다.
  • branch: 배포할 브랜치를 입력한다. 입력하지 않으면 알아서 메인 브랜치에 올린다.
  • message: 커밋 메세지를 입력한다. 따로 입력하지 않으면 Site updated: <YYYY-MM-DD HH:mm:ss 형식 날짜> 포맷의 메세지가 기본적으로 입력된다.

위의 설정을 마쳤다면 배포 명령어를 이용해 GitHub에 파일을 올리도록 하자.

1
$ hexo deploy

명령어를 입력하면 GitHub 계정 정보를 입력하는 등 몇가지 과정을 거쳐 저장소에 웹페이지가 올라갈 것이다. 성공적으로 저장소에 파일들이 업로드 됐다면 블로그에 접속해 보자. 주소는 저장소 명칭(<계정명(username)>.github.io)과 같다.

자, 그곳이 여러분의 블로그다.