はじめに
サーバレスでブログが建てられるHUGOの魅力に取り憑かれたので移行しました。
割りと簡単にできるので、気軽にはじめてみてください。
HUGOのよさみ
このブログはまだWordpressを使っていますが、そのうち全部HUGOにしてしまう予定ですw*1
「そんなにいいの?」って話ですが、個人的メリットはこちら
- 爆速(静的なサイトだからページは予め生成されている)
- サーバレス構成(PHPなどの動的な処理が必要ない)
- ローコスト(サーバレスということはVPS代などが浮く)
- Githubなどで管理していればそれ自体がバックアップになる
- SRE的観点でもメリットがある
- 耐障害性(サーバがそもそもない)
- 耐負荷(すでに生成されたページが見られるだけ)
- 耐脆弱性(動的処理がないためライブラリをつく脆弱性などもお構いなし)
- CI/CDの習得
- サーバレス技術の習得
環境
- Macbook High Sierra
あると捗るサービス
- github(バックアップ、履歴管理)
無料のプライベートリポジトリであればBitbucketがかなり有能です。
私はGithubに草を生やしたいので、あえてGithubを使っています。
前提
手順概要
- HUGOの初期セットアップ
- config.tomlを書き換える
- HUGOを起動してみる
HUGOのセットアップ
HUGOのインストール
brew install hugo
任意のディレクトリでhugoを開始しましょう
hugo new site vtryo.me
上記のコマンドを叩くと、vtryo.meというディレクトリが作成されます。
% hugo new site vtryo.me Congratulations! Your new Hugo site is created in /Users/ryo/blog-site/vtryo.me. Just a few more steps and you're ready to go: 1. Download a theme into the same-named folder. Choose a theme from https://themes.gohugo.io/, or create your own with the "hugo new theme <THEMENAME>" command. 2. Perhaps you want to add some content. You can add single files with "hugo new <SECTIONNAME>/<FILENAME>.<FORMAT>". 3. Start the built-in live server via "hugo server". Visit https://gohugo.io/ for quickstart guide and full documentation.
HUGOのテンプレート構成ができあがる
% cd vtryo.me % tree . ├── archetypes │ └── default.md ├── config.toml ├── content ├── data ├── layouts ├── static └── themes 6 directories, 2 files
テーマを使う
- テーマのインストール
はじめは何かしらのテーマを設置して、サイトを作ってみましょう。
私はtranquilpeakを使っていますのでコマンドは以下の通り。
% git clone https://github.com/kakawait/hugo-tranquilpeak-theme.git themes/tranquilpeak
themeディレクトリに配置されました。
- テーマのconfig.tomlをトップにコピーする
themmeにはexampleSiteというディレクトリがあります。
この中にテーマで使用できるテンプレートが入ってますので、それをトップにコピーしてきましよう。
% cp -r themes/tranquilpeak/exampleSite/* .
config.tomlを書き換える
自身の好きなように値を書き換えていきましょう!
パラメータの補足を少し入れておきます。
% cat config.toml baseURL = "https://ses.vtryo.me/" languageCode = "en-us" defaultContentLanguage = "en-us" title = "Goodbye SES. WEB is fun" theme = "tranquilpeak" #theme名を合わせて書く disqusShortname = "ses-vtryo-me" googleAnalytics = "" paginate = 7 canonifyurls = true [permalinks] post = "/:slug/" [taxonomies] tag = "tags" category = "categories" archive = "archives" [author] name = "VTRyo" bio = "このブログはSESからWEBインフラに転職した中の人が、ググっても出てこないような切ないエピソードや独自の転職論を話すブログです。" job = "Site Reliability Engineering" location = "Tokyo" # Your Gravatar email. Overwrite `author.picture` everywhere in the blog gravatarEmail = "" # Your profile picture # Overwritten by your gravatar image if `author.gravatarEmail` is filled picture = "/img/top_icon.jpg" # Your Twitter username without the @. E.g : thibaudlepretre # twitter = "thibaudlepretre" # Your google plus profile id. E.g : +ThibaudLepretre or 114625208755123718311 # googlePlus = "+ThibaudLepretre"
HUGOを起動する
ローカルでHUGOを見ることが出来ます。
config.tomlがある場所で以下のコマンドを叩きます。
-Dは下書きも含めて表示させます。
hugo server -D
叩いたら、http://localhost:1313 で確認してみましょう。
HUGOはローカルで構築状況をみれるので、Wordpressのプレビュー慣れしている人も安心です。
さいごに
ちなみにHUGOで作ったブログが実は何個かあります。
こちらのサイトはAWS+Github+HUGOで作成しました。
AWSのS3で静的ホスティングさせ、ドメインはRoute53で管理し、Cloudfrontで配信する構成です。
こうするとかなりコストが安く収まります。
こちらのWordpressも完全にHUGOに移行して、Tech専用のブログを公開する予定です。
追記
HUGOで構築されているブログなので、せっかくなのでこの記事を再掲しました。
基本の基本なので、ここからはじまります。
hugoのインストールさえできればローカルで実施することができるので是非試してみてください。
ちなみに、インフラ的な面ではAWSのリソース部分は極力terraformで記述しています。書き方のヒントはこちら
こうすることでブログのインフラ部分はテンプレート化されるので、複数のブログ構築でもスピードを上げられますね。
このあたりのコードも後々公開していきますので、是非ご参考ください!