bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. Hugoで生成した静的サイトをデプロイするMakefile

Hugoで生成した静的サイトをデプロイするMakefile

Jan 23, 2026 Hugo bucket-sort

Hugo で生成した静的サイトをコマンド1発でデプロイできるように Makefile を作成しました。

この先いろんなメンテナンスが必要になったときのことを考えると、シェルスクリプトにするよりも Makefile にしてしておいた方が便利そうです。

Makefile

SHELL := /bin/bash
.ONESHELL:
.SHELLFLAGS := -eu -o pipefail -c

#############################################
# Constants (edit these)
#############################################
PROD_HOST := example.com                     # アップロード先ホスト
PROD_DOCROOT := /var/www/example/public_html # アップロード先ディレクトリ
SSH_KEY_PATH := $(HOME)/.ssh/id_rsa          # SSH 鍵ファイルの場所

PUBLIC_DIR := public # アップロード元ディレクトリ(ローカル)

SSH_OPTS := -i "$(SSH_KEY_PATH)" -o IdentitiesOnly=yes

RSYNC_OPTS := -az --delete --itemize-changes --human-readable --progress \
	--exclude ".DS_Store" --exclude ".git"

.PHONY: help build deploy deploy-dry ssh-check clean

help:
	@echo "Targets:"
	@echo "  make build        # hugo build -> ./public"
	@echo "  make deploy       # build + rsync deploy"
	@echo "  make deploy-dry   # dry-run deploy (no changes)"
	@echo "  make ssh-check    # check ssh connection"
	@echo ""
	@echo "Edit constants in Makefile:"
	@echo "  PROD_HOST, PROD_DOCROOT, SSH_KEY_PATH"

build:
	hugo

ssh-check:
	test -f "$(SSH_KEY_PATH)"
	ssh $(SSH_OPTS) "$(PROD_HOST)" "echo 'SSH OK on' \$$(hostname)"

deploy: ssh-check build
	test -d "$(PUBLIC_DIR)"
	rsync $(RSYNC_OPTS) -e "ssh $(SSH_OPTS)" \
		"$(PUBLIC_DIR)/" "$(PROD_HOST):$(PROD_DOCROOT)/"

deploy-dry: ssh-check build
	test -d "$(PUBLIC_DIR)"
	rsync $(RSYNC_OPTS) --dry-run -e "ssh $(SSH_OPTS)" \
		"$(PUBLIC_DIR)/" "$(PROD_HOST):$(PROD_DOCROOT)/"

clean:
	rm -rf "$(PUBLIC_DIR)"

実行

# ドライラン
$ make deploy-dry

# 実行
$ make deploy
Hugo CMS Linux
← ローカル環境にHugoをインストールする git submoduleの仕組みと使いどころ →

Related Posts

  • ローカル環境にHugoをインストールする Jan 22, 2026
  • 静的サイトジェネレーター「Hugo」とは Jan 2, 2026
  • iptables + ipsetによるwp-login.php自動ブロックの仕組み - ③ 運用結果と安全なリセット手順 Feb 24, 2026
  • iptables + ipsetによるwp-login.php自動ブロックの仕組み - ② 初期セットアップと自動実行設定 Feb 23, 2026

Table of Contents

  • Makefile
  • 実行

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.