Concrete CMS のキャッシュをクリアする時、同時に Cloudflare のキャッシュをパージ (削除) できるアドオンを作成・公開しました。
遅れてしまってすいません! Cloudflare Advent Calendar 2023 8日目の投稿です。
US Army や、日本人の半分以上ぐらいの人が訪れたことのあるあのサイトにも使われている CMS、 Concrete CMS 。その Concrete CMS でも、Cloudflare の WAF や CDN の恩恵を受けることができますが、サイトの更新中に面倒になるのがキャッシュのクリアです。
サイトを更新しても、Cloudflare のキャッシュがあるため、更新がすぐに反映されない時があります。
そんな時、Cloudflare のキャッシュをパージするのですが、わざわざ Cloudflare の管理画面にログインするのも面倒ですし、ウェブサイトの更新を担当する人全てに Cloudflare のアカウントログインを渡すのも危険です。
そこで、Cloudflare の API を利用します。
Concrete CMS では、特定のアクションが実行された時に、追加でアクションをフックできる、イベントが搭載されています。
そのイベントには Concrete CMS 搭載のキャッシュをクリアした時のイベントも登録されています。
つまり、キャッシュをクリアした時に、Cloudflare のキャッシュをパージする API を叩くアドオン「CDN Cache Purge Cloudflare」を作成しました。
中身は Cloudflare の Cache Purge の API を叩くだけの非常にシンプルなものなので、何か、Cloudflare API で PHP アプリと連携したいと思う人には参考になるのではないかとも思います。
CDN Cache Purge Cloudflare 利用方法
2023年12月24日時点、このアドオンは GitHub 上のみで公開しています。
GitHub 上の Readme で、英語で設定方法を解説しているので、この記事では日本語で解説します。
Cloudflare で必要な Zone ID や Auth Key を生成
まず Cloudflare 上で必要な情報や API キーを生成します。
ゾーンID を取得
Zone ID は各ドメインの「Overview」ページから取得することができます。
右下に ゾーンID を見つけることができます。
ここで、Zone ID を保存しておきましょう。
Auth Key を生成
次に API の Auth key を生成します。この Auth Key はログインユーザーに紐づかれます。
- マイプロフィール ページに訪問します
- メニューから API トークン をクリック
-
トークンを作成する
ボタンをクリック - 一番下にある「カスタムトークンを作成する」の「始める」をクリック
- トークンの設定をすすめます
- 設定を行った内容の確認画面になります。問題がなければ「トークンを作成する」ボタンを押します
- トークンが作成されました。これ以降、トークンは 二度と表示されません メモを取っておきましょう
Auth Email は Cloudflare のログインメールアドレス
API Key を生成する際ログインしたメールアドレスが Auth Email です。
以上で Cloudflare 側の設定などは終わります。
Concrete CMS にアドオンのインストール
アドオンのファイルをダウンロードします。
GitHub のページに訪問します。
緑色の「Code」アイコンをクリックし、「Local」メニューの中にある Download ZIP をクリックし、ZIP ファイルをダウンロードします。
Git がわかっている人は Git Clone しましょう
ZIP ファイルを解凍すると addon_cdn_cache_purge_cloudflare-main
という名前のフォルダになると思います。
フォルダ名から「addon-」と「-main」を削除して cdn_cache_purge_cloudflare
というフォルダ名になるように変更します。
そのフォルダごと Concrete CMS の packages フォルダの配下にアップロードします。
- Concrete CMS の管理者権限でログインします。
- [管理画面] - [Concrete を拡張]ページに訪問します。
- 「CDN Cache Purge for Cloudflare」がインストール可能な状態にあるのを確認できるので「インストール」ボタンを押します
CLI からインストールする場合は以下のようなコマンドでインストールします
バージョン | コマンド |
---|---|
バージョン8 | concrete/bin/concrete5 c5:package:install cdn_cache_purge_cloudflare |
バージョン9以降 | concrete/bin/concrete c5:package:install cdn_cache_purge_cloudflare |
apache nginx ユーザーで実行している場合などは sudo -u (nginx|apacke)
で実行します
Concrete CMS に Cloudflare の各キーを保存
次に Cloudflare の各キーを保存します。
- 管理者ユーザーでログインし、
- [管理画面] -> [システムと設定] -> [最適化] -> [Cloudflare] ページに訪問します
- URL:
[サイトURL]/index.php/dashboard/system/optimization/cloudflare
- URL:
- 先ほど入手した Auth key, メールアドレス, ゾーンIDを入れ、保存します
Concrete CMS でキャッシュをクリアしてみる
- [管理画面] -> [システムと設定] -> [最適化] -> [キャッシュをクリア] ページに訪問します。
- URL:
[サイトURL]/index.php/dashboard/system/optimization/clearcache
- URL:
- キャッシュをクリアボタンを押します。これで完了です。
- ちゃんとキャッシュがクリアされたかは、[管理画面] -> [レポート] -> [ログ] ページから見ることができます。
デバッグモード (トラブル時に)
Concrete CMS のロギングレベルをデバッグ (Debug) モードにすると、アドオンが送っている実際の API コードもログに記録される様になります。
ロギングレベルの設定は [管理画面] - [サーバー設定一覧
] -> [ログ設定]
[サイトURL]/index.php/dashboard/system/environment/logging
にてレベルを変更できます。
注意!!:デバッグモードにすると、API Auth Key もログとして保存される様になるので、検証が終わったらログをクリアすることをお勧めします。
テクニカル情報
- このアドオンは Concrete CMS の
on_cache_flush
イベントのフックを利用しています。 - 管理画面の Config 設定は
application/config/generated_overrides/cdn_cache_purge_cloudflare/cloudflare.php
にテキストファイルとして保存されます。
クレジット
- Hissy が作成した CDN Cache Purge for CloudFront アドオンを改造して作成しました。
- アドオンのアイコンは亀田さんの記事 を元に Cloudflare AI で
stable-diffusion-xl-base-1.0
モデルを使用して作成しました。 - ChatGPT さんの力も借りました
インフラばかり触っていて、久しぶりに Concrete CMS のアドオンを作ることができて嬉しいです。
それでは、みなさん、メリークリスマス!