December 2, 2018

このブログをS3 + CloudFrontからGitHub Pagesに移行した

このブログを作ったとき、最初はGitHub Pagesでホスティングしようとしてたのですが、当時はGitHub Pagesが独自ドメイン&SSLに対応してなかったので諦めてました。で、代わりに、AWSでCertificate Managerで証明書を発行しつつ、CloudFrontでその証明書を使うようにして、S3に上げたhugoの生成したページを表示していました。 が、その後ちょっとしたらGitHub Pagesが独自ドメイン&SSLに対応しました。ということで、もともとやりたい方向でできるようになったというのと、管理もシンプルになったらいいなと思って移行したので、その作業メモを残します。移行ついでにgolang/hugo/hugoのテーマの追従をしました。(この辺適当なタイミングでちゃんとチェックするようにしないとずっと古いままになってしまうな)

やったことは以下の通り。

  1. golang/hugo/hugoのテーマを最新にして動作確認
    • hugoのテーマのファイル変更に追従(フッタとヘッダ)
    • あとは設定ファイルをちょっといじった程度のはず
  2. docs/ ディレクトリを追加してpush( .keep だけ入れておく)
    • GitHub Pages で docs/ を対象にするのはリポジトリに docs/ ディレクトリがないと設定できない
  3. CircleCIでS3にアップロードしていた部分を削除して、hugoでビルド後にリポジトリにcommit&pushするように修正
    • golang/hugoも最新を使うように修正
    • commitする時は [ci skip] にして無駄にCIを回さないようにしておく(試してないけど無限ループしたら困るので)
  4. GitHubのリポジトリ設定でGitHub Pagesを有効にする(doc/を対象にする)
    • Force HTTPS はデフォルトでチェックが入っていた
  5. CNAMEファイルを static/ ディレクトリに追加
    • リポジトリのSettings > GitHub Pages でCNAMEの設定するところで設定すると勝手にコミットされる(空欄にすると削除になる)
  6. AWSのRoute53で blog.bomberowl.orgyoshihara.github.io のCNAMEのレコードにする
  7. blog.bomberowl.org で表示されることを確認してから、CloudFrontでもともと指定していた設定やCertificate Managerで証明書を削除
    • ただし証明書がおかしかった(ドメインが違った)
  8. CNAMEを一度削除して追加(6のやり直し)

実際は(ちゃんと手順書を読んでいれば)5, 6は逆のほうがスムーズでした。まあそりゃドメイン解決できないのに証明書用意できないわな……。HTTPS化に何かしら問題がある時は、リポジトリのSettings > GitHub Pages に状況が表示されるのでそれを見ながら調査するのがよさそう。

© yoshihara 2017-2019

Powered by Hugo & Kiss.