静的サイトジェネレータ「Hugo」〜公開方法〜
更新日:2023.06.18
作成日:2017.01.11
公開 Deploy
Hugoには、サイトを生成する仕組みはありますが公開する仕組みは持っていません。そのため、Hugoで生成した生成物(HTML+CSS)を何らかの方法で、Webサーバに持っていってあげなければいけません。
必要なのは、どこに公開するかと、どうやって公開するかです。
どこで公開するか
Hugoで生成したサイトをどこに公開するかは、いくつか選択肢があります。例えば、以下のようなものです。
- VPS(Virtual Private Server)
- レンタルサーバ(ロリポップ)
- GitHub Pages
- Amazon S3
私は、さくらのVPSを契約しています。自分で色々といじれるので楽しいです。
2017/03/19追記
さくらVPSを解約したので、
Netlify
で公開するように変更しました。
Hugoで生成した静的サイトのホスト先をさくらVPSからNetlifyに変更する - SIS Lab
2018/12/13追記
NetlifyからGitHub Pagesに変更しました。
NetlifyからGitHub Pagesに移行した件 - SIS Lab
どうやって公開するか
やることは単純で、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"
end
Related contents
TECH
2017.12.22
はてなダイアリーからはてなブログ経由で独自ドメインのブログに記事を移行しました
TECH
2017.10.14
HugoでのシンタックスハイライトにPython Pygmentsが不要となった
TECH
2017.10.07
HugoのRelated Contentを利用して関連記事を表示する
TECH
2017.08.31
Hugo Shortcodesの作り方
TECH
2017.04.09
gulpで画像の最適化
TECH
2017.03.19
Hugoで生成した静的サイトのホスト先をさくらVPSからNetlifyに変更する
TECH
2017.02.25
HugoのMarkdownでtarget='_blank'を実現する方法
TECH
2017.02.18
HugoのShortcodesを利用してAmazon紹介リンクタグを作成