静的サイトジェネレータ「Hugo」〜公開方法〜
公開 Deploy
Hugoには、サイトを生成する仕組みはありますが公開する仕組みは持っていません。そのため、Hugoで生成した生成物(HTML+CSS)を何らかの方法で、Webサーバに持っていってあげなければいけません。
必要なのは、どこに公開するかと、どうやって公開するかです。
どこで公開するか
Hugoで生成したサイトをどこに公開するかは、いくつか選択肢があります。例えば、以下のようなものです。
- VPS(Virtual Private Server)
- レンタルサーバ(ロリポップ)
- GitHub Pages
- Amazon S3
私は、さくらのVPSを契約しています。自分で色々といじれるので楽しいです。
2017/03/19追記
さくらVPSを解約したので、
Netlify
で公開するように変更しました。
Hugoで生成した静的サイトのホスト先をさくらVPSからNetlifyに変更する
2018/12/13追記 NetlifyからGitHub Pagesに変更しました。
どうやって公開するか
やることは単純で、Hugoで生成したHTML+CSSを公開サーバにアップロードするだけのことです。とはいえ、毎回手動で配置するわけにはいかないため、スクリプトで自動化させます。
例えば、以下の方法です。
- FTP
- rsync
- git push
私は、以下のようにRakeタスクとして定義しています。
rake deploy_to_sakuraと叩けば、さくらVPSにrsyncでファイルをアップロードしています。
require "rubygems"
require "bundler/setup"
require "stringex"
posts_dir = "content/blog/" # directory for blog files
new_post_ext = "markdown" # default new post file extension when using the new_post task
desc "deploy_to_sakura"
task :deploy_to_sakura do
sh 'rm -r public'
sh 'hugo -t hugo-zen'
sh 'mv public/category public/blog'
sh 'mv public/tags public/blog'
sh 'mv public/en/category public/en/blog'
sh 'mv public/en/tags public/en/blog'
sh "rsync --iconv=UTF-8-MAC,UTF-8 -e \"ssh -p #{ENV['SSH_PORT']}\" -avz --delete public/ web@#{ENV['SAKURA_IP']}:/home/web/www/meganii.com"
endLinks in this post
Hugoで生成した静的サイトのホスト先をさくらVPSからNetlifyに変更する
現在(2017/3月)、Hugoで生成した静的サイトをホストするためにさくらVPSを利用しています。 さくらVPSは2年近く使ってきましたが、そろそろ更新時期した(1年まとめて契約しているため)。 自分が契約したタイプはデイスクがHDDのままSSDに変更できないタイプだったので、新規契約し直すか、Conoha VPSに切り替えるか、それともVPS自体を契約しないとするか迷っています。
良い機会であるため、静的サイトのホスティングをVPSではなくクラウドサービスを利用しようと検討しました。
目次 移行先検討 Netlifyとは カスタムドメインの設定方法 お名前.comでの設定 app.netlify.comでの設定 リダイレクト処理 NetlifyでHugoを使うときの注意点 _headers ビルドにNetlify以外のCIツールを利用する場合 参考 移行先検討 GitHub Pages Netlify 自分の中ではGitHub PagesかNetlifyの2択でした。 静的サイトのコンテンツはGitHubにコミットしているため、最初は、GitHub Pagesにしようとしていました。 しかし、現状HTTP/2に対応していないことからあまり気乗りしませんでした。 もともとVPSを利用していたときには、 Lets’s Encryptでブログの常時SSL化にチャレンジのように、常時SSLに対応したり、h2oをインストールしてなんとかHTTP/2に対応した経緯もあり、せっかくなら対応できると嬉しいです。
その点、Netlifyを試してみたら「これで決まり!」と思うぐらい良かったのでまずはNetlifyで運用してみます。
Netlify: All-in-one platform for automating modern web projects
2017-03-19
NetlifyからGitHub Pagesに移行した件
Netlify から GitHub Pages に移行した。
結果、体感としては早くなった。
Netlifyの表示スピードがいまいちパフォーマンスを発揮できていない件 Before: 2018/10/14時点の Netlifyでのwww.meganii.com の結果
2018-12-12