EC-CUBE 4.0.4 -> 4.0.5 へのアップデート @ OpenBSD

nabbisen - May 5 '21 - - Dev Community

EC-CUBE 4.0.5 が 2020 年 9 月 15 日にリリースされました。

OpenBSD にインストールしていた EC-CUBE を 4.0.4 -> 4.0.5 にアップデートしました。その手順を記します。
公式ドキュメントをもとにしています。
なお OS 上、PHP 7.4 が使用できる状態でしたが、7.4 ではキャッシュ生成時にエラーが発生して、実施時(2020 年末)どうしても解消できなかったため、7.3 を使用しました。

環境

  • OS: OpenBSD 6.7 amd64
  • Web サーバー: OpenBSD httpd
  • AP サーバー: PHP 7.3 + PHP-FPM
  • カートシステム: EC-CUBE 4.0.4 -> 4.0.5
  • DB: MariaDB 10.4

4.0.4 -> 4.0.5 変更ファイル一覧

Github で Tag 間の差分を見ることで確認できます:
https://github.com/EC-CUBE/ec-cube/compare/4.0.4...4.0.5?w=1#files_bucket:

差分を整理して、手順用の一覧メモを作成しました:

# 変更ディレクトリ / 変更ファイル
## 変更ディレクトリ 
gulp/
src/Eccube
html/template/admin
html/template/default
## 変更ファイル
.devcontainer/devcontainer.json
.htaccess
Dockerfile
composer.json
composer.lock
gulpconfig.js.sample
gulpfile.js
package-lock.json
package.json
robots.txt
symfony.lock
web.config
## 削除ファイル
html/user_data/.gitkeep
## 作成ファイル
app/template/plugin/.gitkeep

# Git の変更履歴はあるが、ダウンロードパッケージには含まれないファイル群
codeception/
tests/
.editorconfig
.github/workflows/action.yml
.gitignore
gulpconfig.js.sample
.travis.yml
Enter fullscreen mode Exit fullscreen mode

アップデート手順

1. メンテナンスモードを有効にする

$ touch eccube/.maintenance
Enter fullscreen mode Exit fullscreen mode

ファイルバックアップ時のパフォーマンスを良くするために、事前に cache をクリアしておきます。

$ cd eccube
$ # php-7.4 failed on EC-CUBE 4.0.3
$ doas -u www php-7.3 bin/console cache:clear --no-warmup
$ cd ../
Enter fullscreen mode Exit fullscreen mode

2. サイトのバックアップ

$ mkdir eccube-4.0.4-bk
$ cd eccube-4.0.4-bk

$ doas -u www mysqldump $DATABASE -u $DB_USER -p -h $DB_HOST $DATABASE > database-backup.sql
$ gzip database-backup.sql

$ doas tar cfzp eccube-4.0.4.tgz ../eccube
tar: Removing leading "../"
...

$ cd ../
Enter fullscreen mode Exit fullscreen mode

以降は eccube ディレクトリの中で実施します。

$ cd eccube
Enter fullscreen mode Exit fullscreen mode

3. EC-CUBEのソースファイルをバージョンアップしたものに置き換え

開発時のテスト用途である tests / codeception 関連は対象外です。Github の差分には現れますが、ダウンロードしたパッケージには含まれていません。同様に .git / .travis 関連や LICENSE.txt / README.md も対象外です。

ディレクトリ
$ set -l arr 'bin' 'vendor' 'dockerbuild'

$ for x in \
    'gulp' \
    'src/Eccube' \
    'html/template/admin' \
    'html/template/default' \
; \
    echo $x; \
    doas rm -rf ./$x; \
    doas -u www cp -r ~/eccube-4.0.5/$x ./$x; \
    if contains $x $arr; doas chown -R $MY_USER: ./$x; end; \
end
Enter fullscreen mode Exit fullscreen mode


備考: for 文 / if 文は fish シェルの記法です。if contains による存在チェックは、事前に配列を宣言する方法と直接配列を指定する方法の 2 通りで書けます。

  1. 事前に配列を宣言する方法

    set -l arr 'bin' 'vendor'
    if contains $x $arr; doas chown -R $MY_USER: ./$x; end
    
  2. 直接配列を指定する方法

    if contains $x {'bin' 'vendor'}; doas chown -R $MY_USER: ./$x; end
    
ファイル
$ mkdir ./.devcontainer

$ set -l arr '.htaccess' 'robots.txt' 'web.config'

$ for x in \
    '.devcontainer/devcontainer.json' \
    '.htaccess' \
    'Dockerfile' \
    'composer.json' \
    'composer.lock' \
    'gulpfile.js' \
    'package-lock.json' \
    'package.json' \
    'robots.txt' \
    'symfony.lock' \
    'web.config' \
; \
    echo $x; \
    doas rm $x; \
    cp ~/eccube-4.0.5/$x ./$x; \
    if contains $x $arr; doas chown -R $WEB_USER: ./$x; end; \
end
Enter fullscreen mode Exit fullscreen mode

4. 個別ファイル差し替え

composer.json / composer.lock

プラグインをインストールしていなかったため、特別な操作は不要でした。
(なお、プラグインをインストールしている場合は php-7.3 bin/console eccube:composer:require-already-installed の実行が必要です。)

.htaccess
  • .htaccess
    • httpd.conf の条件変更: block 対象を追加 = ^\.editorconfig / ^gulp / ^\.devcontainer/
app/template/plugin
$ doas cp -pr ~/eccube-4.0.5/app/template/plugin ./app/template
$ doas chown -R www: ./app/template/plugin
Enter fullscreen mode Exit fullscreen mode
その他(私的な都合によるもの)

対象はありませんでした。

5. composer.json/composer.lockの更新

$ doas -u www php-7.3 bin/console cache:clear --no-warmup
Enter fullscreen mode Exit fullscreen mode

6. スキーマ更新/マイグレーション

対象はありませんでした。

7. プロキシの再生成

スキップしました。(4.0.2 -> 4.0.3 へのアップデート時のみ必要な手順です。)

8. フロントテンプレートファイルの更新

対象はありませんでした:
https://github.com/EC-CUBE/ec-cube/pulls?q=is%3Apr+label%3Aaffected%3Atemplate+is%3Aclosed+milestone%3A4.0.4

9. メンテナンスモードを無効にする

$ rm ./.maintenance
Enter fullscreen mode Exit fullscreen mode

10. その他

特別な操作は必要ありませんでした:

4.0.4 -> 4.0.5 のアップデートに特記事項はありません。

以上でアップデートは完了です。

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .