Amazon EC2でもGo言語とHugoを使えるようにする方法

HugoをGitHub Pagesで展開していたのですが、今回はGitHub Pagesではなく、Amazon EC2にHugoをインストールしてみたいと思います。

GO言語をCentOS7にインストール

Hugoを利用するためにGo言語をインストールするのですが、yumでインストールすると様々ななエラーが出る場合があるので、今回はtarファイルを解凍して配置します。

brewがすでにインストールされている場合はbrewでのインストールが早いです。

GO言語をインストール

まずは、GO言語のファイルをダウンロードして、解凍、インストールする場所に配置してやりましょう。

$ wget https://golang.org/dl/go1.16.linux-amd64.tar.gz
$ sudo tar zxf go1.16.linux-amd64.tar.gz -C /usr/local/
$ export PATH=$PATH:/usr/local/go/bin

インストールされたGoのバージョンを確認します

$ go version

インストールが成功していれば、下記のようなバージョンが表示されます。

go version go1.15.14 linux/amd64

GOROOTも確認しておきます

$ go env|grep GOROOT
GOROOT="/usr/local/go"

Hugoをインストールする上で、GOPATHが必要なので設定しましょう。
GOPATHとGOROOTが同じ場所にならないようにすることに注意してください。
同じ場所に設定してしまうと、

warning: GOPATH set to GOROOT (/usr/local/go) has no effect

といったワーニングが表示されてしまいます。
なので、GOPATHとGOROOTを別にしてやりましょう。

それではGOPATHを設定していきます。

vi ~/.bash_profile

上記のコマンドで、.bash_profileをひらいて、下記のコマンドを追加します。

export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH:$HOME/bin

設定を反映させて、確認します。

$ source ~/.bash_profile
$ echo $GOPATH
/home/[user]/go
$ echo $PATH
/home/[user]/go/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/root/bin:/root/bin

無事追加できました。
以上がGo言語の設定になります。

HugoをCentOS7にインストール

それでは、いよいよHugoをインストールしましょう。
GitHubからHugoを取得します。

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

インストールできたら hugo してみましょう

GitInfoを使っているとエラーになる場合がある

Gitのバージョンが古いと、hugoした際に、情報を取得できないくてエラーになってしまうようです。

hugo v0.93.0-DEV+extended linux/amd64 BuildDate=unknown
ERROR 2022/01/27 Failed to read Git log: Unknown option: -C
usage: git [--version] [--help] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

私の環境ではGitのバージョンがgit version 1.8.3.1 となっていたため、これをアップデートして正しく動作するようにします。

まずはすでにインストールされているGitを削除します。

$ sudo yum -y remove git

次に、2系の配布がされているiusリポジトリを追加します。
私の環境はCentOS7だったので下記のコマンドでyumからインストールします。

$ sudo yum -y install https://repo.ius.io/ius-release-el7.rpm

iusはサードパーティのリポジトリのため、常に有効にならないように設定ファイルを確認しておきます。enabled = 0 となっていたら、常に有効にならない設定です。

[ius-debuginfo]
name = IUS for Enterprise Linux 7 - $basearch - Debug
baseurl = https://repo.ius.io/7/$basearch/debug/
enabled = 0
repo_gpgcheck = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7

[ius-source]
name = IUS for Enterprise Linux 7 - Source
baseurl = https://repo.ius.io/7/src/
enabled = 0
repo_gpgcheck = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7

それでは。インストール可能なGitを調べます。
yumでiusを使うときは、yumコマンドの際に、--enablerepo=iusオプションをつけます。

$ sudo yum list --enablerepo=ius | grep git2
…
git224.x86_64                            2.24.4-1.el7.ius             ius
…

インストール可能なGitがあったので、インストールをします。

$ sudo yum -y install --enablerepo=ius git224

インストールが無事完了したことを確認しましょう

$ git --version
git version 2.24.3

バージョンが表示されていたら、正常にインストールが完了してます。
これで GitInfo 使ったhugoのサーバでもhugoコマンドが実行できるようになりました。

おすすめの書籍

第1回 pythonでNQueen(エイトクイーン)ブルートフォース 力任せ探索(1)

第1回 pythonでNQueen(エイトクイーン)ブルートフォース 力任せ探索(1)

HUGOでxmlやjsonファイルを複数出力する方法を詳しく解説

HUGOでxmlやjsonファイルを複数出力する方法を詳しく解説