WordPress を利用した静的サイトを構築する (2)

WordPress を利用した静的サイトを構築する (1) の続き。

SSG プラグインの導入

特に特殊なことはせず、 WordPress の GUI から Simply Static を検索してインストールした。
https://ja.wordpress.org/plugins/simply-static/

プラグインをインストールすると、このプラグイン用の専用メニューが管理画面に追加される。

設定の変更と実行前提条件の確認

設定値

ページ生成した後に別サーバーに HTML を移動させて公開することを考えると、ページ URL が公開サーバーを参照するために正しく設定されているかが重要となる。 General ページの Replacing URLs が Relative Path で、 PATH の設定値が / になっていればおそらく問題なく表示できると思われる。

Deployment ページには、生成したページたちをどこに出力するのかを指定できる項目がある。好みのものを選べばよいが、とりあえず Local Directory/var/www/html/public_static に出力するようにした。 /var/www/html は Docker でホストマシンと共有しているディレクトリになるので、デプロイ時などに必要があればホストマシンから参照することができる。

実行条件

Diagnostics ページには、プラグインを実行するための前提条件がそろっているかを確認できるステータスチェック表示がなされている。

確認できた限りだと、 SSL だけは Fail していても問題ない。 (少なくとも外部へのデプロイを自動的に実行しない限りは)
SSL 以外のすべての項目が Success (チェックマーク) になっていない場合、静的 HTML を生成する前提条件がそろっていないことになる。

必要に応じて、 WordPress や Docker コンテナの設定を見直すこと。

静的サイトの生成

管理メニュー内の Simply Static のページ内にある 「Generate Static Files」 ボタンを押下することで、静的 HTML が (設定ページで設定したディレクトリ内に) 出力される。

設定や実行環境に何らかの不備がある場合、特にエラーを発生させずに生成処理が終了しないでダンマリになる。 (結構ハマった)
生成処理が終わらず、Export Log の表示も変化がない場合、 Diagnostics ページを確認して問題が発生していないかチェックするとよい。

静的サイト提供に必要なデータを Simply Static がレンダリングするので、そこそこ時間がかかる。

サイトの公開

生成した静的サイト用のファイル群は、 Docker で WordPress を構築したサーバーのホストマシンから参照できるようになっているはずである。

WordPress を構築するために作成した compose.yaml があるディレクトリを基準として、 ./wp_data/public_static に生成したファイル群があるので、これをいったんそのマシン内の別の場所(~/site など)に一式をまるごとコピーする。

(実行環境によっては、該当ファイルの読み取り権限 (r) がないことがあるかもしれない (コンテナ内とホストマシンのユーザーの UID が異なることによる)。自分が手元で確認したケースでは問題なかったが、場合によっては自分が sudoers に所属していないとコピーできないことがあるかもしれない)

コピーしたファイル群は、それ単体で静的 web サイトとして成り立つようになっているので、Web サイトをホストするサーバーにデプロイすればよい。

実際のデプロイについては、デプロイ先の構成によって大きく異なるので割愛する。(とりあえず手動で SCP を使ってデプロイしてる)

最後に

本サイトを構築するにあたって実施した基本的な手順について、防備を兼ねて記載した。

WordPress のテーマを設定すれば静的サイト化した場合でもそれが維持されるので、既製テーマで済ませてしまえば手間をかけずに手軽に静的サイトを構築できる。

サーバー側の構成はやや複雑になるが、静的化するメリットは大きいので、状況に応じて選択したい。