サーバーのOSをアップデート

ようやくまとまった時間ができたので、本サーバーのOSをCentOS 7からCentOS Stream 9へアップデート。PHPは8.0系になりました。

OSをインストールする前に、「mysqldump」でデータベースのバックアップを取り、子テーマ、プラグイン、アップロードファイルなどの関連ファイル一式をまとめてダウンロード。続いて「certbot revoke」でSSL証明書を削除。VPSサーバーのコンパネからOSをインストールした。

Webサーバーは「Apache 2.4」をインストールし、「certbot」でSSL証明書を取得しなおす。はじめはこのままでいいかと思ったのですが、OSを変えたことだし、「NGINX」をインストールして運用することにしました。

今回の作業で少し戸惑ったのが、「MySQL」のユーザーパスワード。「mysql_secure_installation」でrootアカウントのパスワードを設定する際、次のようなメッセージが表示され、先に進めません。

Your password does not satisfy the current policy requirements
Estimated strength of the password: 50
Do you wish to continue with the password provided?

パスワードの強度不足なのは理解できるのですが、指定したパスワードには英小文字、数字、記号を含んでいたのでちょっと戸惑いました。最終的には、パスワードに英大文字を含めることで強度が「100」になり、先に進めました。なお、このパスワードの強度は、「create user」コマンドなどのパスワード指定にも関わってくるようです。

今日はとりあえずここまで。

Googleアナリティクスのレポートについて

Googleアナリティクスのデータをプログラムで取得して〇〇したいと思うことはまあまあある。現在Googleアナリティクスのデータは、Googleアナリティクス4 (GA4)プロパティと従来のユニバーサルアナリティクス(UA)プロパティに属しており、それによりAPIも変わる。なおUAは、2023年7月1日にサポート終了になり、データ処理が終わることがアナウンスされている。

Reporting API V4

UAプロパティにアクセスし、デイリーの各種データを取得できる。

Real Time API V3

UAプロパティにアクセスし、リアルタイム(過去30分間)の各種データを取得する。利用はデベロッパーに限定され、別途申請が必要。

DATA API V1(ベータ版)

GA4プロパティにアクセスし、デイリーとリアルタイム(過去30分間)の各種データを取得する。リアルタイムのデータ取得はReal Time API V4よりも限定的(eventCategoryやeventLabel毎のデータは取得できない)。

これらはそれぞれPHPのライブラリが提供されており、例えばWordPressのプラグインとして組み込める。また上記では便宜上「デイリー」としているが、Reporting API V4とDATA API V1(ベータ版)で取得できるデータは1日数回は更新される(参考:データの更新頻度(エンハンスト)[GA4]データの更新頻度)。当日データの取得は、数時間遅れということになる(更新された日時を知る方法はあるのかな?)。

各ライブラリを使用する場合、認証用のキーファイルが必要になり、そのアカウントのメールアドレスを閲覧者として登録しておく。Reporting API V4とReal Time API V3はクライアントオブジェクトを生成し、そのsetAuthConfigメソッドでキーファイルのパス名を指定するのに対し、DATA API V1(ベータ版)では環境変数にパス名を指定してからクライアントオブジェクトを生成するといった違いがある。

Real Time API V3のPHPサンプルは、リンク先のgithubではWebアプリになっている。そこでReporting API V4を参考に適宜クラス名を変更ながら試すことに。イベントデータを取得するところは、次のような感じになった。

$optParams = array(
	'dimensions' => 'rt:eventAction,rt:eventCategory,rt:eventLabel'
);
$results = $analytics->data_realtime->get(
	'ga:XXXXXXXXXX',
	'rt:totalEvents',
	$optParams );

DATA API V1は、UAのサポート終了までに正式版がリリースされると思うが、リアルタイムのイベントデータ取得が今のままだとUAからの移行が大変そう。現在の仕様に合わせて対応していくべきなんだろうか。