Gatsbyで管理しているブログをJAMStack構成に。
- WordpressをヘッドレスCMSとして使用し、Gatsbyで投稿データをgraphqlで取得し、静的サイトを生成する構成へ
作業の流れ
- WordpressをAWSに配置(lightsail使う)
- Wordpress側諸々設定
-
gatsby-source-wordpress
を導入 - コンテンツ移行し表示などGatsby側で調整
- WordpressをAWSに配置(lightsail使う)
基本的にlightsail公式に書いてあるとおりに実行
Route53にLightsailの静的IPアドレスをAレコードとして作成。
参考: https://qiita.com/tomokei5634/items/a5dfb8504989ed93c31b
作成したURLにアクセスすることで、Lightsailのデフォルトの画面が表示されることを確認
※ 今回はもともとドメインは取得済みであったが未済の場合はもちろん取得する必要がある。
-
gatsby-source-wordpress
を導入
- gatsbyのレポジトリにて
gatsby-source-wordpress
をインストールして設定ファイル更新し、gatsby develop
したところ、以下エラー。
gatsby-source-wordpress Your remote version of WPGatsby is not within the accepted range
(>=0.9.0 <2.0.0)
This is not a bug and it means one of two things:
you either need to upgrade WPGatsby or gatsby-source-wordpress.
1. If the version of WPGatsby in your WordPress instance is higher than 2.0.0
it means you need to upgrade your version of gatsby-source-wordpress.
2. If the version of WPGatsby in your WordPress instance is lower than 0.9.0
it means you need to upgrade your version of WPGatsby.
Download a matching version at https://github.com/gatsbyjs/wp-gatsby/releases
or update via http://test-fss.famitra.jp/wp-admin/plugins.php
gatsby-source-wordpress
の最新バージョンは6.7.0だが今のpackage.jsonだと4.0.8が限界のよう。
4.0.8だとWPGatsby側のバージョンが2.0.0未満である必要がある。本来、Gatsby側をUpdateすべきだが他への影響を考え今回は一旦WP側をダウングレードすることに。
- こちらの手順でWPGatsbyをダウングレード
→ gatsby develop
でhttp://localhost:8000/___graphql
にアクセスしてDONE
アンカーリンク
既存の構成ではgatsby-remark-autolink-headers
を使っている。
執筆者がこれまでの運用と変えなくていいようにするために一旦以下構成で。
- WP側にプラグインでEasy Table of Contentsを導入
- gatsby側で上記プラグインデフォルトのid, classに対してこれまでと同様のスタイルを適用
WP側では適切に動作するアンカーリンクがGatsby側で適切に動作しない事象。
→ ググった結果、これでFIX
記事取得
WPで記事作成/更新するだけだとgatsby側には反映されず、ビルドが必要。
現状構成がS3 + Cloudfrontのため、wordpressで更新があった際にGithubActionsを作動させるように要設定。(Netlifyとかvercelとかだとそれ用のプラグインみたいなのがある)
WPにはアクションフックが設けられているため、それを使って、期待するアクション時にwebhookでGithub ActionsにリクエストするようにWP側に実装。
GithubActionsのrepository_dispatchが外部からのリクエストを受けて発火させることができる。
SSL化
基本的に以下の記事どおりの設定で問題なし。
メーラーの設定
- AWSのlightsail上にWP構築しているため、メール周りもSESに一任。
- 以下AWS公式通りに実施すれば基本的に問題なし。
※ ちなみにメーラーの設定をしないとユーザ追加の際の招待メールも飛ばないため注意。