2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudflareAdvent Calendar 2023

Day 8

Concrete CMS から、直接 Cloudflare のキャッシュをパージできるアドオン作りました

Last updated at Posted at 2023-12-24

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」を作成しました。

icon_original.png

中身は 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」ページから取得することができます。

image.png

右下に ゾーンID を見つけることができます。

image.png

ここで、Zone ID を保存しておきましょう。

Auth Key を生成

次に API の Auth key を生成します。この Auth Key はログインユーザーに紐づかれます。

  • マイプロフィール ページに訪問します
  • メニューから API トークン をクリック image.png
  • トークンを作成する ボタンをクリックimage.png
  • 一番下にある「カスタムトークンを作成する」の「始める」をクリックimage.png
  • トークンの設定をすすめます
    • トークン名は自分が後で管理しやすい名前にします image.png
    • アクセス許可の設定は添付画像の様に左から順番に選んでください image.png
      • ゾーン
      • キャッシュパージ
      • パージ
    • ゾーンリソースも目的のウェブサイトのみを選択しましょう image.png
      • 包含 (Include)
      • 特定のゾーン
      • [ドメイン名]
    • クライアントIPアドレスフィルタリング (オプション) image.png
      • リクエストを送る Web サーバーの IP が固定化しているのであれば、他からリクエストを送れない様にするため、IP アドレスを指定するのも良い方法です。
    • 概要に進む をクリックします image.png
  • 設定を行った内容の確認画面になります。問題がなければ「トークンを作成する」ボタンを押します image.png
  • トークンが作成されました。これ以降、トークンは 二度と表示されません メモを取っておきましょう image.png

Auth Email は Cloudflare のログインメールアドレス

API Key を生成する際ログインしたメールアドレスが Auth Email です。

以上で Cloudflare 側の設定などは終わります。

Concrete CMS にアドオンのインストール

アドオンのファイルをダウンロードします。

GitHub のページに訪問します。

緑色の「Code」アイコンをクリックし、「Local」メニューの中にある Download ZIP をクリックし、ZIP ファイルをダウンロードします。

Git がわかっている人は Git Clone しましょう

image.png

ZIP ファイルを解凍すると addon_cdn_cache_purge_cloudflare-main という名前のフォルダになると思います。

image.png

フォルダ名から「addon-」と「-main」を削除して cdn_cache_purge_cloudflare というフォルダ名になるように変更します。

image.png

そのフォルダごと Concrete CMS の packages フォルダの配下にアップロードします。

image.png

  • Concrete CMS の管理者権限でログインします。
  • [管理画面] - [Concrete を拡張]ページに訪問します。
  • 「CDN Cache Purge for Cloudflare」がインストール可能な状態にあるのを確認できるので「インストール」ボタンを押します

image.png

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
  • 先ほど入手した Auth key, メールアドレス, ゾーンIDを入れ、保存します image.png

Concrete CMS でキャッシュをクリアしてみる

  • [管理画面] -> [システムと設定] -> [最適化] -> [キャッシュをクリア] ページに訪問します。
    • URL: [サイトURL]/index.php/dashboard/system/optimization/clearcache
  • キャッシュをクリアボタンを押します。これで完了です。
  • ちゃんとキャッシュがクリアされたかは、[管理画面] -> [レポート] -> [ログ] ページから見ることができます。
    • URL: [サイトURL]/index.php/dashboard/reports/logs/
    • 注意 (Notice) レベルでキャッシュパージのログが保存されており、Result ID などがログに保存されていることを確認できます。「Success」と記録されていれば、成功です。
      image.png

デバッグモード (トラブル時に)

Concrete CMS のロギングレベルをデバッグ (Debug) モードにすると、アドオンが送っている実際の API コードもログに記録される様になります。

image.png

ロギングレベルの設定は [管理画面] - [サーバー設定一覧
] -> [ログ設定]
[サイト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 のアドオンを作ることができて嬉しいです。

それでは、みなさん、メリークリスマス!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?