Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30e377d4ec |
@@ -38,6 +38,20 @@ WordPress本体はイメージ内蔵のもの(`docker.io/wordpress:<tag>-fpm-a
|
||||
|
||||
## チャート改修履歴
|
||||
|
||||
### Hello Dolly等のデフォルトプラグインが削除しても復活する不具合の修正(2026-08-08, v7.1.0-a)
|
||||
|
||||
※自動更新ワークフローがこの作業と並行してWordPress 7.1.0への正式リリース(v7.1.0)を実行したため、本修正はそのタグの上に手動リリース `7.1.0-a` として適用した。
|
||||
|
||||
**症状**: WP管理画面からHello Dolly(`hello.php`)を削除しても、Pod再起動のたびに復活する。
|
||||
|
||||
**原因**: `templates/deployment.yaml` の `wordpress-init` initContainerで、WordPressコアファイルをemptyDirにコピーする処理が `cp -r /usr/src/wordpress/* /var/www/html/` という実装になっており、`wp-content` を除外していなかった。`/var/www/html/wp-content` はPVCマウントの別ボリュームだが、`cp -r` はワイルドカード展開で `wp-content` ディレクトリ自体も対象に含めてしまうため、イメージ同梱のデフォルトwp-content(`hello.php`、`akismet/`、デフォルトテーマ群)がPod再起動のたびにPVC上の既存wp-contentへ**無条件に上書きマージ**されていた。直後にある「PVCが空の場合のみ初期化する」条件分岐(`if [ ! -d /var/www/html/wp-content/themes ]`)は、この最初の `cp -r` の副作用までは防げていなかった。
|
||||
|
||||
**対象**: Hello Dolly(`hello.php`)だけでなく、Akismet(`wp-content/plugins/akismet/`)も同じ理由で同様に復活する。**本チャート自身が明示的に`wp plugin install`等でプラグインを追加している箇所は存在しない**(該当するのはWordPressコア配布物に同梱されているこの2つのみ)。
|
||||
|
||||
**修正内容**: コアファイルのコピーを `/usr/src/wordpress/` 直下を1件ずつ列挙し、`wp-content` をスキップするループに変更。これによりPVC上のwp-contentは、新規インストール時(PVCが空=`wp-content/themes` が存在しない場合)以外は一切触れなくなった。
|
||||
|
||||
**対象ファイル**: `templates/deployment.yaml`, `README.md`, `Chart.yaml`
|
||||
|
||||
### 実IP取得の修正 + SMTP経由メール送信の追加(2026-08-08, v7.0.2-a)
|
||||
|
||||
**背景**: ルーター(グローバルIP)配下の 192.168.9.x セグメントにコントロールプレーン/ワーカーノードがあり、その上のPodでWordPressが稼働する構成において、(1) 訪問者の実IPアドレスが正しく取得できない、(2) `wp_mail()` によるメール送信が失敗する、という2つの不具合が報告された。
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ apiVersion: v2
|
||||
name: wordpress-nginx
|
||||
description: WordPress with Nginx and PHP-FPM on Kubernetes
|
||||
type: application
|
||||
version: 7.1.0
|
||||
version: 7.1.0-a
|
||||
appVersion: "7.1.0"
|
||||
keywords:
|
||||
- wordpress
|
||||
|
||||
@@ -403,20 +403,19 @@ helm install my-wordpress ./wordpress-nginx \
|
||||
## 初期化の動作
|
||||
|
||||
### 新規インストール時
|
||||
1. WordPress本体ファイルをemptyDirにコピー(使い捨て領域)
|
||||
2. wp-contentディレクトリをPVCに作成(永続化領域)
|
||||
3. シンボリックリンクで wp-content を接続
|
||||
4. wp-config.phpをSecretから生成
|
||||
5. データベース接続を確認
|
||||
6. テーブルが存在しない場合:
|
||||
1. WordPressコアファイル(wp-content以外)をemptyDirにコピー(使い捨て領域)
|
||||
2. wp-contentディレクトリのPVCが空の場合のみ、イメージ同梱のデフォルトwp-content(デフォルトテーマ、Akismet、Hello Dolly等)で初期化(永続化領域)
|
||||
3. wp-config.phpをSecretから生成
|
||||
4. データベース接続を確認
|
||||
5. テーブルが存在しない場合:
|
||||
- WP-CLIを使用してWordPressをインストール
|
||||
- 管理者アカウントを作成
|
||||
- パスワードが未指定の場合は16文字のランダム生成
|
||||
7. ads.txtが有効な場合は配置(使い捨て領域)
|
||||
6. ads.txtが有効な場合は配置(使い捨て領域)
|
||||
|
||||
### アップデート/再起動時
|
||||
1. WordPress本体ファイルを新しくコピー(常にクリーン)
|
||||
2. 既存のwp-content(PVC)をシンボリックリンクで接続
|
||||
1. WordPressコアファイル(wp-content以外)を新しくコピー(常にクリーン)
|
||||
2. 既存のwp-content(PVC)はそのまま利用(**wp-content配下は一切上書きしない**。デフォルトプラグイン等を削除していればその状態を維持)
|
||||
3. wp-config.phpを再生成
|
||||
4. データベーステーブルの存在を確認
|
||||
5. テーブルが存在する場合:
|
||||
@@ -425,6 +424,8 @@ helm install my-wordpress ./wordpress-nginx \
|
||||
- 必要に応じてデータベーススキーマをアップデート
|
||||
6. 既存データ(wp-content)を保持したまま起動
|
||||
|
||||
**注意(v7.1.0-aで修正)**: それ以前は、WordPressコアファイルのコピー処理が `cp -r /usr/src/wordpress/* /var/www/html/` という実装になっており、`wp-content` を除外していませんでした。このため、Pod再起動のたびにイメージ同梱のデフォルトwp-content(Hello Dolly、Akismet、デフォルトテーマ等)がPVC上の既存wp-contentへ**毎回上書きマージ**され、ユーザーが削除したはずのプラグインが復活する不具合がありました。v7.1.0-aでコアファイルのコピーからwp-contentを除外し、PVC上のwp-contentは新規インストール時(PVCが空の場合)以外は一切触らないよう修正しています。
|
||||
|
||||
### セキュリティ更新の適用方法
|
||||
|
||||
```bash
|
||||
|
||||
@@ -28,7 +28,18 @@ spec:
|
||||
echo "=== WordPress Initialization Started ==="
|
||||
|
||||
echo "Copying WordPress to emptyDir..."
|
||||
cp -r /usr/src/wordpress/* /var/www/html/
|
||||
# wp-contentは別マウントのPVCのため、ここではコアファイルのみコピーする。
|
||||
# "cp -r /usr/src/wordpress/* /var/www/html/" のようにwp-contentを含めて
|
||||
# 丸ごとコピーすると、既存のPVC上のwp-contentディレクトリにイメージ同梱の
|
||||
# デフォルトファイル(hello.php等)が毎回上書きマージされてしまい、
|
||||
# ユーザーが削除したはずのプラグインがPod再起動のたびに復活する原因になる。
|
||||
for item in /usr/src/wordpress/*; do
|
||||
name=$(basename "$item")
|
||||
if [ "$name" = "wp-content" ]; then
|
||||
continue
|
||||
fi
|
||||
cp -r "$item" /var/www/html/
|
||||
done
|
||||
echo "WordPress files copied"
|
||||
|
||||
if [ ! -d /var/www/html/wp-content/themes ]; then
|
||||
|
||||
Reference in New Issue
Block a user