๋ธ๋ก๊ทธ ์ฎ๊ฒผ์ต๋๋ค! ๐ก integer.blog
์ฃผ์๊ฐ github.io์ธ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ๋ค์ด ๋์ ๋ง์ด ๋์๋ค.
์ฐพ๋ค๋ณด๋ Jekyll, Hexo, Hugo ๋ฑ Static Site Generator์ ์กด์ฌ๋ฅผ ์๊ฒ ๋์๋ค.
Hugo์ Github Page์ ์กฐํฉ์ผ๋ก Devlog๋ก ์ฌ์ฉํ ๊ฐ์ธ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ธฐ๋ก ํ๋ค.
๋๋ค ์ง์น ์ฌ๋ฆํด๊ฐ ๋ง๋ฐ์ง์ ์ง์ค๊ณต๋ต์ ์์!
0. ๋ชฉ์ฐจ
1. Static Site Generator ๋?
2. Static Site Generator ์ ํ ๊ณผ์
3. Hugo, ๋๋ก ์ ํ๋ค!
4. Hugo + Github Page ๋ง๋๋ ๊ณผ์
5. ๋๊ธ ์์ ฏ ์ถ๊ฐํ๊ธฐ (Utterances ์ฌ์ฉ)
6. ์ฌ์ฉ ํ๊ธฐ (๊ณ์ ์ถ๊ฐ ์์ )
1. Static Site Generator ๋?
์ด ๊ธ์ด ์ ์ ์น์ฌ์ดํธ ์์ฑ๊ธฐ์ ๋์ ์น์ฌ์ดํธ ์์ฑ๊ธฐ์ ์ฐจ์ด๋ฅผ ์ ์ค๋ช ํด์ฃผ๊ณ ์๋ค.
2. Static Site Generator ์ ํ ๊ณผ์
์ด ๊ณณ์์ ๋ชจ๋ (?) Static Site Generator๋ค์ ํ๋์ ๋ณผ ์ ์์๋ค.
์ด ๊ธ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Jekyll , Hexo, Hugo๋ฅผ ๋น๊ตํ์ฌ ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์๋ค.
Jekyll
-๋ฃจ๋น ๊ธฐ๋ฐ
-ํ์ฌ ๊ฐ์ฅ ์ธ๊ธฐ ์์(๊นํ ๋ณ ์ ์ ์ผ ๋ง์)
-ํ๊ธ ๋ ํผ๋ฐ์ค๋ ์ ์ผ ๋ง์
-๋๋ฆฌ๋ค๋ ์ ๋ณด๊ฐ ๋ง์(๋ช ์ญ๊ฐ์ ํฌ์คํ
๋ฟ์ธ๋ฐ๋ ๋น๋ ํ๋๋ฐ 5๋ถ์ฉ ๊ฑธ๋ฆฐ๋ค๊ณ )
-์๋์ฐ ๊ณต์ ์ง์ ์๋จ
Hexo
-์๋ฐ์คํฌ๋ฆฝํธ(Node.js) ๊ธฐ๋ฐ
-ํ๊ธ ๋ ํผ๋ฐ์ค ๊ฝค ๋ง์
-๋ฉ์ธ ๊ฐ๋ฐ์๊ฐ ์์ ๋์ ๋ฏ
-๊ฐ๋ฐ์๊ฐ ์ค๊ตญ์ธ? ์ด๋ผ ๊ตฌ๊ธ๋งํ๋ฉด ์ค๊ตญ์ด ๊ธ์ด ๋ง์ด ๋์ด
Hugo
-Golang ๊ธฐ๋ฐ
-๋น๋ ๋น ๋ฆ
-๋ฌธ์ํ ์๋ผ์์
-๊นํ ๋ณ ์๊ฐ ํฅ์๋ณด๋ค ๋ง์
-ํ๊ธ ๋ ํผ๋ฐ์ค๊ฐ ๊ฑฐ์ ์์
์ถ์ฒ: http://tadakichi.tistory.com/188
3. Hugo, ๋๋ก ์ ํ๋ค!
3.1. ๋ด๊ฐ Hugo๋ฅผ ์ ํํ ์ด์
- Go๋ก ์ ์๋์๋ค. (Go๋ฅผ ๊ณต๋ถ์ค์ด๋ค.)
- Hugo๋ ๋ฐํ์์ ๋ค๋ฅธ ์์กด์ฑ์ด ํ์ํ์ง ์์ ๋น๋์๊ฐ์ด ์ธ๊ณ์์ ์ ์ผ ๋น ๋ฅด๋ค. (“Hugo is the worldโs fastest static website engine.”)
- ์คํ์์ค์ ๊ธฐ์ฌํ ๊ธฐํ !! (Hugo๋ ํ๊ธ Reference๊ฐ ๊ฑฐ์ ์๋ ์คํ์์ค์ด๋ฉฐ Jekyll์ ๋นํด ๊ธฐ์ฌํ ์ ์๋ ์ฌ์ง๊ฐ ๋จ์์๋ค.)
3.2. CloudZ Labs์์ Github Page์ ํ์์ ์กฐํฉ์ธ Jekyll ๋์ Hugo๋ฅผ ์ ํํ ์ด์
- “Jekyll์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ณ๋์ Build ๊ณผ์ ์์ด Repository์ Push๋ง์ผ๋ก ์์ฑํ ๊ธ๋ค์ด ์์์ Publishing๋ฉ๋๋ค. ํ์ง๋ง, ๊ธ์ด ๋ง์์ง ์๋ก Jekyll์ ๋น๋ ์ฑ๋ฅ์ ํ์ ํ๊ฒ ์ ํ๋ฉ๋๋ค. ํ์ง๋ง, Hugo๋ Build ๊ณผ์ ์ด ์์ด๋ ์ฑ๋ฅ์ ํ ์์ด, ๋น ๋ฅด๊ฒ ๊ธ์ Publishingํ ์ ์์ต๋๋ค. Go๋ ๊ธฐํ ์ข ์์ฑ ์์ด, Hugo CLI๋ฅผ ํตํด์ ์ฝ๊ฒ ๋ธ๋ก๊ทธ ๋ฐ ๊ธ์ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋์, Hugo๋ก ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ฒ ๋์์ต๋๋ค.”
4. Hugo + Github Page ๋ง๋๋ ๊ณผ์
4.1. Hugo ์ค์น
๋๋ ๋ฉ๊น๋๊ฒ
$ brew install hugo
๋ฅผ mac ํฐ๋ฏธ๋์ ์ ๋ ฅํด์ ์ค์นํ๊ณ ์ถ์๋ค.
ํ์ง๋ง ํ์ค์ WINDOWS…
Giraffe Academy์ Windows์์ Hugo์ค์นํ๊ธฐ ์ด ์์ ํ๋๋ฉด ์ค์น๋ ์ฝ๋ค.
- hugo ๊ณต์ ๊นํ์์ ์ด์์ฒด์ ์ ๋ง๋ ์ต์ ๋ฒ์ ๋ค์ด๋ก๋
C:\Hugo\bin
๋๋ ํ ๋ฆฌ ์์ฑํด์ ๋ค์ด๋ฐ์ ์์ถํ์ผ ํด์ - ์ด๋ ์์น์์๋ Hugo๊ฐ ์คํ๋ ์ ์๋๋ก
$ set PATH=%PATH%;C:\Hugo\bin
๋ช ๋ น์ผ๋ก ํ๊ฒฝ๋ณ์์C:\Hugo\bin
์ถ๊ฐ - ๋ช
๋ น ํ๋กฌํํธ์
$ hugo version
ํน์$ hugo help
๋ก ๋์ ํ์ธ
4.2. Github ์ ์ฅ์ 2๊ฐ ๋ง๋ค๊ธฐ
- ํ๋๋ Hugo์ ์ปจํ
์ธ ์ ์์คํ์ผ๋ค์ ํฌํจํ
<YOUR-PROJECT>
์ ์ฅ์ ์์ฑ (๋์ ๊ฒฝ์ฐblog
๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑ) - ๋ค๋ฅธ ํ๋๋ ๋ ๋๋ง๋ ๋ฒ์ ์ Hugo ์น์ฌ์ดํธ๋ฅผ ํฌํจํ
<USERNAME>.github.io
์ ์ฅ์ ์์ฑ (integerous.github.io
)
4.3. Directory Structure ๊ตฌ์ฑ
$ hugo new site blog
๋ช ๋ น์ผ๋ก ๋ก์ปฌ์์ ์ปจํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฅ์(Hugo/blog) ์์ฑC:\Hugo\blog
์์$ dir
๋ก directory structure๋ฅผ ํ์ธํ ์ ์๋ค.
4.4. ํ ๋ง ๋ค์ด๋ก๋ ๋ฐ ์ค์
- https://themes.gohugo.io/ ์์ ์ํ๋ ํ ๋ง๋ฅผ ์ ํํ๋ค.
- ์ ํํ ํ ๋ง์ github์์ ์ ์ฅ์ ์ฃผ์๋ฅผ ๋ณต์ฌํ๋ค.
C:\Hugo\blog\themes
์ ์ ํํ ํ ๋ง๋ฅผ cloneํ๋ค.$ git clone https://github.com/์ ํํ/ํ ๋ง
config.toml
ํ์ผ์ ์ ํํ ํ ๋ง์ ์ค๋ช ์์ ๋ฐ๋ผ ์์ ํ๋ค.
4.5. Remote์ Submodule ์ค์
- ๊นํ์ ๋ง๋
blog ์ ์ฅ์
๋ฅผ local์ blog ๋๋ ํ ๋ฆฌ์ remote๋ก ๋ฑ๋กํ๋ค.C:\Hugo\blog
๋ก ์ด๋$ git init
$ git remote add origin git@github.com:integerous/blog.git
integerous.github.io ์ ์ฅ์
๋ฅผ blog์ submodule๋ก ๋ฑ๋กํ๋ค.$ git submodule add -b masater git@github.com:integerous/integerous.github.io.git public
- ์ด๋ ๊ฒ ํจ์ผ๋ก์จ
hugo
๋ช ๋ น์ผ๋กpublic
์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ๋, ๋ง๋ค์ด์งpublic
๋๋ ํ ๋ฆฌ๋ ๋ค๋ฅธ remote origin์ ๊ฐ์ง ๊ฒ์ด๋ค.
4.6. ์ปจํ ์ธ ์์ฑ
$ hugo new post/test1.md
๋ช ๋ น์ผ๋ก ํ์ผ์ ์์ฑํ๋ฉด\content\post\test1.md
- ์ปจํ
์ธ ๊ฐ ์ด๋ป๊ฒ ๋ณด์ฌ์ง๋์ง ํ์ธํ๋ ค๋ฉด
$ hugo server
ํน์$ hugo server -D
๋ก ์น์๋ฒ ์คํhttp://localhost:1313/
์ ์ ์ํด์ ํ์ธ- -D ์ต์
์ draft ๋ฌธ์๋ค๋ ๋ณด์ฌ์ง๋ ์ต์
. ๋ค๋ฅธ ์ต์
์ ์ฌ๊ธฐ์์ ํ์ธ
4.7. ์ปจํ ์ธ ์ ๋ก๋ (๋ธ๋ก๊ทธ์)
C:\Hugo\blog
๋ก ์ด๋$ hugo -t ํ ๋ง์ด๋ฆ
๋ช ๋ น์ ํตํด ํ ๋ง๊ฐ ์ ์ฉ๋ ๋ธ๋ก๊ทธ ๋ด์ฉ์ public์ ์์ฑํ๋ค.$ cd public
public ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ$ git add .
์์ ๋ ํ์ผ๋ค์ index์ ์ฌ๋ฆฐ๋ค.$ git commit -m "์ปค๋ฐ๋ฉ์ธ์ง"
๋ณ๊ฒฝ ๋ด์ฉ์ commitํ๊ณ$ git push origin master
commit์ Integerous.github.io์ ํธ์blog ์ ์ฅ์
์๋ ๋ณ๊ฒฝ๋ด์ฉ ํธ์$ git add .
$ git commit -m "์ปค๋ฐ๋ฉ์ธ์ง"
$ git push origin master
4.8. ์ ์คํฌ๋ฆฝํธ๋ก ์ ๋ก๋ ์๋ํํ๊ธฐ
- Hugo Docs์ deploy.sh ํ์ผ์ ํ์ฉํ์ฌ ์์คํฌ๋ฆฝํธ ์์ฑ
#!/bin/bash echo -e "\033[0;32mDeploying updates to GitHub...\033[0m" # Build the project. hugo -t hugo-theme-geppaku # Go To Public folder cd public # Add changes to git. git add . # Commit changes. msg="rebuilding site `date`" if [ $# -eq 1 ] then msg="$1" fi git commit -m "$msg" # Push source and build repos. git push origin master # Come Back up to the Project Root cd .. # blog ์ ์ฅ์ Commit & Push git add . msg="rebuilding site `date`" if [ $# -eq 1 ] then msg="$1" fi git commit -m "$msg" git push origin master
5. Utterences (Github ๋๊ธ ์์ ฏ) ์ถ๊ฐํ๊ธฐ
์์์ฌ์ด๋๋์ ๋ธ๋ก๊ทธ ๊ธ์์ Utterences์ ์กด์ฌ๋ฅผ ์๊ฒ ๋์๋ค.
Hugo ๊ณต์ ๋ฌธ์์ ์๊ฐ๋ ๋๊ธ ์์ ฏ ์ค Utterences๋ ์๊ธธ๋ ์์ ์ฒ์์ผ๋ก ์คํ์์ค์ PR์ ๋ ๋ ค๋ด!
5.1. Hugo Docs์์ ๋ด Pull Request ๋ฐ์์ค!!!
์์ ์ฒซ ์คํ์์ค ๊ธฐ์ฌ! (๋งค์ฐ ์์ํ ๊ธฐ์ฌ์ง๋ง.. ์คํ์์ค์ ๊ธฐ์ฌํ๊ธฐ ์์ํ๋ค๋ ์ฌ์ค๋ง์ผ๋ก ํ๋ณถ!)
5.2. ์๋ ์๋ฆฌ
Utterance ํ๋ก์ ํธ์ ์๋ ๋ฐฉ์์ ์๊ฐํ์๋ฉด,
Github์ ์ด์ ๊ฒ์ API๋ฅผ ์ฌ์ฉํด์ ๊ฐ ๊ธ์ ํด๋นํ๋ ์ด์๊ฐ ์์ฑ๋๊ณ (์ต์ด ๋๊ธ ์์ฑ ์),
๋๊ธ๋ค์ ํด๋น ๊ธ๋ก ์์ฑ๋ ์ด์์ ๋ํ ๋๊ธ๋ก ์ถ๊ฐ๋๋ ๋ฐฉ์์ด๋ค. ๋๊ธ์ Primer๋ฅผ ์ด์ฉํด์ Github ์คํ์ผ๋ก ๋ณด์ฌ์ง๋ค.
5.3. ์ฌ์ฉ ๋ฐฉ๋ฒ
- Github์ public ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ (blog-comments ๋ฑ์ผ๋ก)
- Utterance document์์ ๋ฐฉ๊ธ ๋ง๋ ์ ์ฅ์๋ฅผ ์ ๋ ฅํ๊ณ (๋์ ๊ฒฝ์ฐ Integerous/blog-comments)
- ๋ธ๋ก๊ทธ ๊ธ๊ณผ Github ์ด์๋ฅผ ๋งคํํ ๋ฐฉ๋ฒ 6๊ฐ์ง ์ค ํ ๊ฐ์ง๋ฅผ ์ ํํ๋ฉด
- ๋ฐ์ ์๋์ ๊ฐ์ script๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋ค.
<script src="https://utteranc.es/client.js" repo="integerous/blog-comments" issue-term="pathname" crossorigin="anonymous" async> </script>
- ์์ script๋ฅผ ๋ณธ์ธ์ ๋ธ๋ก๊ทธ ํ ํ๋ฆฟ์ค ์ํ๋ ์์น์ ๋ฃ์ผ๋ฉด
- ๋!
6. ์ฌ์ฉ ํ๊ธฐ (๊ณ์ ์ถ๊ฐ๋ ์์ )
6.1. ๋งํฌ๋ค์ด ํ์ผ์ Gist ์ฝ์ ํ๊ธฐ
Gist๋ ๋งํฌ๋ค์ด ํ์ผ์ embed ๋์ง ์๋๋ค. ํ์ง๋ง Hugo, Jekyll ์์๋ ๊ฐ๋ฅํ๋ค.
6.1.1. Gist ์์ฑ
- Gist์ ์ฝ๋๋ฅผ ์์ฑ
- java ์ฝ๋๋ฉด ํ์ผ๋ช
์
ํ์ผ๋ช .java
๋ก ๋ง๋ค๊ณCreate public gist
ํด๋ฆญ - ์์ฑ๋๋ gist์ sha1 hash(url ๋๋ถ๋ถ)์ ๋ณต์ฌ
6.1.2. Hugo์ ์ปค์คํ shorcodes ์์ฑ
๊ฐ๋จํ ์ค๋ช ์ ์ฌ๊ธฐ ์ฐธ๊ณ .
์์ธํ ์ฌ์ฉ๋ฒ์ ์ด ํํ ๋ฆฌ์ผ ์์ ์ฐธ๊ณ
themes/๋ณธ์ธํ ๋ง/layouts
๋๋ ํ ๋ฆฌ์shortcodes
ํด๋๋ฅผ ์์ฑshortcodes
ํด๋ ๋ด์gist.html
ํ์ผ ์์ฑ (ํ์ผ๋ช ์ ์๊ด์์ง๋ง gist๋ก ํ๋๊ฒ ์ ์ฒด์ฑ์ด ๋ถ๋ช ํจ)gist.html
์ ์๋ ์ฝ๋ ์ ๋ ฅ
<script type="text/javascript" src="http://gist.github.com/{{ .Get 0 }}.js"></script>
- ์ฌ๊ธฐ์
{{ . GET 0 }}
์ ๋ค์ด๊ฐ ๋ถ๋ถ์ด ์์์ ๋ณต์ฌํด๋ ๊ฐ gist์ sha1 hash(url ๋๋ถ๋ถ)์ด๋ค.
6.1.3. shortcode ์ฝ์
- ๊ธ ๋ด์ฉ ์ค ์ฝ๋๊ฐ ๋ค์ด๊ฐ ๋ถ๋ถ์ {{< gist url๋๋ถ๋ถ >}} ์ ๋ฃ์ด์ฃผ๋ฉด,
- ์ ์ฒ๋ผ ๋งํฌ๋ค์ด ํ์ผ(.md)์๋ gist๋ฅผ ์ฝ์ ํ ์ ์๋ค. (ํ๋ณต)
*๋ธ๋ก๊ทธ ์ฃผ์
*Reference
- Hosting on Github
- Jekyll, Hexo, Hugo ๊ฐ๋จ ๋น๊ต ๊ธ
- Hugo๋ฅผ ํ์ฉํ ๊ธฐ์ ๋ธ๋ก๊ทธ ๊ตฌ์ถ๊ธฐ
- Github Page์ Hugo ์ฌ๋ฆฌ๊ธฐ
- ํ์ด์ค๋ถ ๋๊ธ์ Utterances๋ก ๊ต์ฒดํ๊ธฐ
- Utterances ํ๋ก์ ํธ
- Youtube Hugo ํํ ๋ฆฌ์ผ
- Hugo์์ gist ์ฌ์ฉํ๊ธฐ