Hugo サーバーの複数起動について
複数のサイトを Hugo で運用しているケースでは、ひとつのコマンドプロンプトから同時にサーバー起動できると便利です。
ここでは、下記のようにホームディレクトリ以下に複数の Hugo プロジェクトが存在するとします。
C:/website/site1
C:/website/site2
C:/website/site3
各 Hugo プロジェクトに対して Hugo サーバーを起動するには、例えば次のように実行していきます。
C:\> hugo server -p 50001 -s C:/website/site1
C:\> hugo server -p 50002 -s C:/website/site2
C:\> hugo server -p 50003 -s C:/website/site3
ただし、上記のようにすると、1 つのサーバープロセスが 1 つのコマンドプロンプトを占有するため、複数の Hugo サーバーを起動しているときに複数のコマンドプロンプトを開いたままにしなければいけません。
1 つのターミナルで複数の Hugo サーバーを起動する
Windows の場合
Windows の start
コマンドを使用すると、バックグラウンドで hugo
コマンドを実行することができるので、追加でコマンドプロンプトを開くことなしに複数の Hugo サーバーを起動することができます。
例えば、下記のバッチファイルは、3つの Hugo サーバーをバックグラウンドで起動します。
@echo off
start /b hugo server -p 50001 -s C:/website/site1
start /b hugo server -p 50002 -s C:/website/site2
start /b hugo server -p 50003 -s C:/website/site3
title Hugo Servers
title Hugo Servers
では、コマンドプロンプトのウィンドウタイトルを Hugo Servers に変更しています。
ウィンドウタイトルを変更しておくと、タスクバーを見ただけで何のためのウィンドウなのかを判別しやすくなるのでお勧めです。バックグラウンドで動作している Hugo サーバーをまとめて終了するには、例えば、taskkill
コマンドを使用して、hugo.exe
によるプロセスをまとめて終了します。
@echo off
taskkill /f /im hugo.exe
Windows の start
コマンドや、taskkill
コマンドの詳細は、まくまく Windows ノートを参照してください。
Linux の場合
Linux や macOS の場合は、下記のように末尾に &
を付けて hugo
コマンド実行すれば、簡単に複数のサーバーをバックグラウンドで立ち上げることができます。
hugo server -p 50001 -s ~/website/site1 &
hugo server -p 50002 -s ~/website/site2 &
hugo server -p 50003 -s ~/website/site3 &
Hugo サーバーのプロセスをまとめて終了したいときは、killall
コマンドで簡単に終了できます。
killall hugo
これくらいの規模であれば、シェルスクリプトではなく、関数やエイリアスとして定義してしまうのが手っ取り早いかもしれません。
function hugo-start {
hugo server -p 50001 -s ~/website/site1 &
hugo server -p 50002 -s ~/website/site2 &
hugo server -p 50003 -s ~/website/site3 &
}
function hugo-stop {
killall hugo
}