EC-CUBE 4.0.2 -> 4.0.3 へのアップデート @ OpenBSD

nabbisen - Jul 9 '20 - - Dev Community

EC-CUBE 4.0.3 が 2019 年 9 月 5 日にリリースされました。
2019 年 10 月の消費税 10% への増税を見据えた、軽減税率に関する対応が含まれています。

OpenBSD にインストールしていた EC-CUBE を 4.0.2 -> 4.0.3 にアップデートした手順を記します。(実施したのは 2019 年 11 月です。)
公式ドキュメントをもとにしています。

環境

  • OS: OpenBSD 6.6 amd64
  • Web サーバー: OpenBSD httpd
  • AP サーバー: PHP 7.3 + PHP-FPM
  • カートシステム: EC-CUBE 4.0.2 -> 4.0.3
  • DB: MariaDB 10.0

4.0.2 -> 4.0.3 変更ファイル一覧

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

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

# changelogs

app/DoctrineMigrations
app/config/eccube
src/Eccube/
html/template
maintenance.php
web.config
symfony.lock

# 4.0.2 -> 4.0.3 specific

.htaccess
composer.json
composer.lock
index.php

# ignored:

.dockerignore
.github/CONTRIBUTING.md
.github/ISSUE_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE.md
.gitignore
.php_cs.dist
.travis.yml
Dockerfile
LICENSE.txt
dockerbuild/
README.md
tests/Eccube/
tests/bootstrap.php
codeception.sh
codeception/

app/Plugin/AnnotatedRouting
app/Plugin/EntityExtension
app/Plugin/EntityForm
app/Plugin/FormExtension
app/Plugin/HogePlugin
app/Plugin/MigrationSample
app/Plugin/PurchaseProcessors
app/Plugin/QueryCustomize
Enter fullscreen mode Exit fullscreen mode

アップデート手順

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

$ touch %eccube-dir%/.maintenance
Enter fullscreen mode Exit fullscreen mode

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

$ mkdir %backup-dir%/eccube4.0.2-`date '+%Y%m%d'`

$ mysqldump -d %database% -u %dbuser% -h %dbhost% -p > %backup-dir%/eccube4.0.2-database-backup.sql
$ cp -rp %eccube-dir% %backup-dir%/eccube-4.0.2

$ # check
$ ls -l %backup-dir%
Enter fullscreen mode Exit fullscreen mode

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

$ ftp http://downloads.ec-cube.net/src/eccube-4.0.3.zip
$ unzip eccube-4.0.3.zip -d ~
/home/%my-user%/eccube-4.0.3/...
Enter fullscreen mode Exit fullscreen mode
$ cd %eccube-dir%

$ for x in \
    'app/DoctrineMigrations' \
    'app/config/eccube' \
    'src/Eccube' \
    'html/template' \
    'dockerbuild' \
    'bin' \
    'vendor' \
;
    echo $x;
    doas rm -rf $x;
    doas -u www mkdir -p $x;
    doas -u www cp -r ~/eccube-4.0.3/$x/* ./$x;
    if [ $x = 'vendor' ]; doas chown -R %my-user%: ./$x; end;
end
Enter fullscreen mode Exit fullscreen mode

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

$ for x in \
    'composer.json' \
    'composer.lock' \
    '.htaccess' \
    'index.php' \
; \
    echo $x; \
    doas -u www cp -f ~/eccube-4.0.3/$x ./$x; \
    if [ $x = 'composer.json' ]; doas chown %my-user%: ./$x; end; \
    if [ $x = 'composer.lock' ]; doas chown %my-user%: ./$x; end; \
end
Enter fullscreen mode Exit fullscreen mode
$ for x in \
    'maintenance.php' \
    'web.config' \
    '.dockerignore' \
    'Dockerfile' \
; \
    echo $x; \
    doas rm -rf $x; \
    doas -u www cp ~/eccube-4.0.3/$x ./$x; \
end
Enter fullscreen mode Exit fullscreen mode

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

$ doas -u www php-7.3 bin/console cache:clear --no-warmup

 [WARNING] Some commands could not be registered:                                                


In EntityProxyService.php line 46:

  Type error: Too few arguments to function Eccube\Service\EntityProxyService::__construct(),   
  1 passed in /var/www/sites/wanpaku-kozo.com/web/sale/eccube/var/cache/prod/ContainerZjohjxh/  
  getEntityProxyServiceService.php on line 10 and exactly 2 expected                            



 // Clearing the cache for the prod environment with debug false                                 


 [OK] Cache for the "prod" environment (debug=false) was successfully cleared.                   
Enter fullscreen mode Exit fullscreen mode

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

$ php-7.3 bin/console doctrine:schema:update --force --dump-sql
gen -> /tmp//proxy_WNS2tQvnvfyf/Customer.php
gen -> /tmp//proxy_WNS2tQvnvfyf/Customer.php

 The following SQL statements will be executed:

     ALTER TABLE ...
[...]

 Updating database schema...

     35 queries were executed


 [OK] Database schema updated successfully!                                                      

$ php-7.3 bin/console doctrine:migrations:migrate

                    Application Migrations                    


WARNING! You are about to execute a database migration that could result in schema changes and data loss. Are you sure you wish to continue? (y/n)y
Migrating up to 
[...]
  ++ migrated (1.13s)

  ------------------------

  ++ finished in 1.19s
  ++ 3 migrations executed
  ++ 2 sql queries
Enter fullscreen mode Exit fullscreen mode

7. プロキシの再生成

4.0.3 へのバージョンアップ時のみ、プロキシの再生成が必要です。

$ doas rm -f app/proxy/entity/*.php

$ php-7.3 /usr/local/libexec/composer.phar dump-autoload
Deprecation warning: require-dev.mikey179/vfsStream is invalid, it should not contain uppercase characters. Please use mikey179/vfsstream instead. Make sure you fix this as Composer 2.0 will error.
Generated optimized autoload files containing 5542 classes

$ php-7.3 bin/console eccube:generate:proxies
$ php-7.3 bin/console cache:warmup --env=prod
Enter fullscreen mode Exit fullscreen mode

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

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

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

$ rm .maintenance
Enter fullscreen mode Exit fullscreen mode

10. その他

4.0.2 -> 4.0.3 のアップデートには特記事項があります:

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