Hugo サーバーの複数起動について
複数のサイトを Hugo で運用しているケースでは、ひとつのコマンドプロンプトから同時にサーバー起動できると便利です。
ここでは、下記のようにホームディレクトリ以下に複数の Hugo プロジェクトが存在するとします。
C:/website/site1C:/website/site2C:/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 Serverstitle Hugo Servers では、コマンドプロンプトのウィンドウタイトルを Hugo Servers に変更しています。
ウィンドウタイトルを変更しておくと、タスクバーを見ただけで何のためのウィンドウなのかを判別しやすくなるのでお勧めです。バックグラウンドで動作している Hugo サーバーをまとめて終了するには、例えば、taskkill コマンドを使用して、hugo.exe によるプロセスをまとめて終了します。
@echo off
taskkill /f /im hugo.exeWindows の 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
}