자바스크립트를 활성화 해주세요

h047 GoormIde에서 Hugo Build하기

 ·  ☕ 4 min read

goorm ide

계정을 만들면 무료로 5개의 컨테이너를 사용할 수 있는 웹 IDE 서비스가 있습니다.

go 프로젝트 선택후 후회

go 템플릿을 선택했습니다. (후회했습니다. Blank를 선택하는 것이 좋습니다.)
go 버전이 너무 낮습니다. update와 upgrade를 시도합니다.

1
2
root@goorm:~# go version
go version go1.10.2 linux/amd64
1
2
apt update
apt upgrade

낮은 버전의 golang을 지웁니다.

apt-get remove golang-go
apt-get remove --auto-remove golang-go

지워지지 않네요. /usr/local/go 에 설치되어 있습니다. 왜 그런지 나중에 알게 되었는데, Ubuntu 14.04 LTS 버전이 베이스였습니다. 지금이 2020년인데 너무 낮은 버전이네요. 컨테이너를 삭제하고 다시 만들었습니다.

Blank 프로젝트

이번에는 blank 프로젝트를 선택했습니다. ubuntu 18.04의 OS가 사용됩니다. 우선 ubuntu package의 go를 설치해 보았습니다.

apt install golang-go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
root@goorm:~# apt install golang-go
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  golang-1.10-go golang-1.10-race-detector-runtime golang-1.10-src golang-race-detector-runtime golang-src pkg-config
제안하는 패키지:
  bzr mercurial
다음 *새로운* 패키지들을 설치:
  golang-1.10-go golang-1.10-race-detector-runtime golang-1.10-src golang-go golang-race-detector-runtime golang-src pkg-config
0개 업그레이드, 7개 새로 설치, 0개 제거, 0개 업그레이드 안 함.
40.3 M바이트 아카이브를 받아야 합니다.
이 작업 후 225 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n]

여기도 낮은 버전을 설치하려고 합니다. go 언어를 사용하는 많은 프로젝트들이 1.11 이상을 요구하므로 설치를 중단했습니다.

wget https://golang.org/dl/go1.14.6.linux-amd64.tar.gz

컨테이너의 CPU는?

어떤 버전의 CPU 아키텍쳐를 요구하는 확인하기 위해, 다음의 명령어로 확인합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
root@goorm:~# lscpu | head
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  2
Core(s) per socket:  1
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel

다운로드후 설치

최신의 golang의 binary를 설치합니다.

VERSION=1.14.6
OS=linux
ARCH=amd64

# download and untar
wget https://golang.org/dl/go$VERSION.$OS-$ARCH.tar.gz
tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.profile
source $HOME/.profile

# GOPATH
mkdir ~/go
echo "export GOPATH=$HOME/go" >> $HOME/.profile
source $HOME/.profile
echo $GOPATH

go 설치 확인

설치된 go 버전을 확인합니다.

1
2
3
4
5
6
7
8
root@goorm:~# which go
/usr/local/go/bin/go
root@goorm:~# go version
go version go1.14.6 linux/amd64
root@goorm:~# echo $GOPATH
/root/go
root@goorm:~# ^C
root@goorm:~#

powershell로 쓰면

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function Install-GoLang {
  cd $Home
  $VERSION = "1.14.6"
  $OS = "linux"
  $ARCH = "amd64"

  # download and untar
  wget https://golang.org/dl/go$VERSION.$OS-$ARCH.tar.gz
  tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
  'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.profile

  # source $HOME/.profile
  $env:PATH="$env:PATH:/usr/local/go/bin:$HOME/go/bin"

  # GOPATH
  mkdir ~/go
  'export GOPATH=$HOME/go' >> $HOME/.profile

  # source $HOME/.profile
  $env:GOPATH = "$HOME/go"
  echo $env:GOPATH

  go version
}

hugo 설치

ubuntu의 패키지의 hugo 설치를 시도해 보았습니다.

apt install hugo

hugo 설치 확인

1
2
3
4
root@goorm:~# which hugo
/usr/bin/hugo
root@goorm:~# hugo version
Hugo Static Site Generator v0.40.1 linux/amd64 BuildDate: 2018-04-25T17:16:11Z

2018-04-25년 빌드? 너무 오래되었습니다. 제거

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
root@goorm:~# apt remove hugo
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지들을 *제거*:
  hugo
0개 업그레이드, 0개 새로 설치, 1개 제거, 0개 업그레이드 안 함.
이 작업 후 17.7 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n]
(데이터베이스 읽는중 ... 현재 49933개의 파일과 디렉터리가 설치되어 있습니다.)
Removing hugo (0.40.1-1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
root@goorm:~#

Source로 hugo 설치

hugo 사이트의 설명대로 코드를 다운받아 설치합니다.

1
2
3
4
5
mkdir $HOME/src
cd $HOME/src
git clone https://github.com/gohugoio/hugo.git
cd hugo
go install --tags extended

Sass/SCSS 지원이 필요없으면 extended 태그 설치를 지우라고 하지만, 필요하므로 함께 실시합니다.

powershell로 쓰면

1
2
3
4
5
6
7
Function Install-Hugo {
  New-Item -ItemType Directory $HOME/src
  cd $HOME/src
  git clone https://github.com/gohugoio/hugo.git
  cd hugo
  go install --tags extended
}

hugo 설치 확인

1
2
3
4
5
6
7
8
root@goorm:~/src/hugo(master)# which hugo
/root/go/bin/hugo
root@goorm:~/src/hugo(master)# hugo version
bash: /usr/bin/hugo: 그런 파일이나 디렉터리가 없습니다
root@goorm:~/src/hugo(master)#
root@goorm:~/src/hugo(master)# hash -r
root@goorm:~/src/hugo(master)# hugo version
Hugo Static Site Generator v0.75.0-DEV/extended linux/amd64 BuildDate: unknown

blog를 clone

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
root@goorm:~# cd /workspace && git clone https://github.com/crowdy/blog
Cloning into 'blog'...
Username for 'https://github.com': crowdy
Password for 'https://crowdy@github.com':
remote: Enumerating objects: 751, done.
remote: Counting objects: 100% (751/751), done.
remote: Compressing objects: 100% (509/509), done.
remote: Total 751 (delta 401), reused 547 (delta 197), pack-reused 0
Receiving objects: 100% (751/751), 1.69 MiB | 1.64 MiB/s, done.
Resolving deltas: 100% (401/401), done.
root@goorm:~# cd blog
root@goorm:~/blog(master)# git submodule update --init --recursive
Submodule 'themes/zzo' (https://github.com/zzossig/hugo-theme-zzo.git) registered for path 'themes/zzo'
Cloning into '/root/blog/themes/zzo'...
Submodule path 'themes/zzo': checked out '4f3acae64031126e382af7381efa93fa7fe7bc6e'

hugo blog build 확인

빌드는 단순히 hugo명령으로 build할 수 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
root@goorm:/workspace/blog(master)# hugo

                   | EN  | KO
-------------------+-----+------
  Pages            | 132 |  62
  Paginator pages  |   3 |   2
  Non-page files   |   3 |   0
  Static files     | 129 | 129
  Processed images |   0 |   0
  Aliases          |  36 |  16
  Sitemaps         |   2 |   1
  Cleaned          |   0 |   0

Total in 17005 ms

대쉬보드에서 실행 URL과 포트 확인

대쉬보드로 가면 https://ide.goorm.io/my/container/hugo2 를 확인할 수 있습니다. 실행 URL은 랜덤하게 생성되는 서브도메인으로 구성되어 있는 것 같습니다.

실행 URL과 포트
URL	포트 https://hugo2-sulue.run.goorm.io	80

hugo 실행

바인드와 포트 파라메터는 python에서도 nodejs에서도 거의 비슷한 방식으로 입력합니다.
또 hugo의 server.go를 보면 어떤 파라메터를 어떻게 실행하는 지 살펴볼 수 있습니다.

대쉬보드에 있는 url을 baseUrl 파라메터에 넣어서 실행합니다.

hugo server --bind 0.0.0.0 -p 80 --baseUrl=hugo2-sulue.run.goorm.io

브라우저에서 확인

대쉬보드에서 확인한 URL로 실행을 확인할 수 있습니다. https가 지원되지 않는 경우에는 http로 확인합니다.

http://hugo2-sulue.run.goorm.io/

hugo 블로그가 정상적으로 동작하는 것을 확인하고 컨테이너를 삭제했습니다.

레퍼런스

공유하기

tkim
글쓴이
tkim
Software Engineer