EC-CUBE 4.0.0 -> 4.0.1 へのアップデート @ OpenBSD

nabbisen - Dec 26 '18 - - Dev Community

概要

先日、OpenBSD 6.4 に EC-CUBE 4.0.0 をインストールしました。
* 詳細を以下の記事に書きました:

その後に EC-CUBE の 4.0.1 がリリースされたので、今回アップデートしました。
手順は、公式ドキュメント「EC-CUBE本体のバージョンアップ」 に従いました。
OpenBSD に特有だったのは、以下の 2 点です。

  1. PHP のコマンドを実行する時は php の代わりに php-7.2 を使用する。
  2. パッケージ内に複数の .htaccess が存在するが、そのどこかに更新がある場合、必要に応じて差分を httpd.conf / php.ini (php-72.ini) で吸収する。

後者については、後述の「注意点」にある EC-CUBE 本体のコードカスタマイズ時の差分更新と同じ要領で、アップデートを行いました。

環境

  • OS: OpenBSD 6.4 amd64
  • Web サーバー: OpenBSD httpd
  • カートシステム: EC-CUBE 4.0.0 -> 4.0.1
  • DB: MariaDB 10.0

注意点

EC-CUBE のカスタマイズを行っている場合は、注意が必要です。
アップデート手順通りにファイルの上書きを行うと、カスタマイズ内容が消えてしまうことがあります。

公式ドキュメント「ご注意」:

EC-CUBE本体のコード(app/config/eccube, app/DoctrineMigrations, bin, src, htmlディレクトリ)をカスタマイズしている場合、ファイルが上書きされてしまうため、この手順ではバージョンアップできません。
各バージョンでの変更差分を確認して必要な差分を取り込んでください。

✿ ✿ ✿

アップデートの手順

前提

更新対象のルートディレクトリの名前を eccube とします。

まず現状のバックアップを取得します。
次に最新パッケージをダウンロード & 解凍します。
最新パッケージのファイルをもとに、アップデートを行って行きます。
全体として、以下のような階層関係になります:

.
|
+-- eccube          * アップデート対象
|   +-- app
|   +-- bin
|   +-- ...
+-- eccube-4.0.1    * 最新パッケージ
|   +-- app
|   +-- bin
|   +-- ...
+-- %backup-dir%    * バックアップ
    +-- database-backup.sql
    +-- eccube-4.0.0
Enter fullscreen mode Exit fullscreen mode

手順 1: バックアップを取得する

#1. バックアップディレクトリを作成する
$ mkdir %backup-dir%
Enter fullscreen mode Exit fullscreen mode

%backup-dir% は、実際には、以下のように命名しました:

eccube4.0.0-`date '+%Y%m%d'`

#2. データベースのバックアップ

mysqldump で MariaDB / MySQL のバックアップを取得できます。

$ mysqldump -u %user% -p %database% > %backup-dir%/database-backup.sql
Enter fullscreen mode Exit fullscreen mode
#3. ソースファイルのバックアップ

パッケージのルートディレクトリからファイルをすべてコピーします。

$ cp -rp eccube %backup-dir%/eccube-4.0.0
Enter fullscreen mode Exit fullscreen mode
#4. バックアップの完了

以上でバックアップは完了です。
ヒューマンエラー防止のための最終確認として、作成したものをチェックしておくと良いと思います。

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

手順 2: アップデートを行う

* 注釈: EC-CUBE 4.0.1 以降は メンテナンスモードを使用する ことが可能です。4.0.0 においても、ルートディレクトリ eccube に空ファイル .maintenance を一時的に作成することで行なえます。

#1. 公式サイトのダウンロードページ から最新の EC-CUBE パッケージを取得する
$ wget http://downloads.ec-cube.net/src/eccube-4.0.1.zip
$ unzip eccube-4.0.1.zip
Enter fullscreen mode Exit fullscreen mode
#2. 共通ファイルを更新する

更新バージョンに関わらず常に更新対象になるファイル群です。

$ cp -r eccube-4.0.1/app/config/eccube      eccube/app/config
$ cp -r eccube-4.0.1/app/DoctrineMigrations eccube/app
$ cp -r eccube-4.0.1/bin                    eccube/
$ cp -r eccube-4.0.1/src                    eccube/
$ cp -r eccube-4.0.1/html                   eccube/
$ cp -r eccube-4.0.1/vendor                 eccube/
Enter fullscreen mode Exit fullscreen mode
#3. 個別ファイルを更新する

更新バージョンごとに追加で更新を行う必要があるファイルが存在する場合があります。
4.0.0 -> 4.0.1 への更新の場合、以下の通りです:

$ cp eccube-4.0.1/composer.json             eccube/
$ cp eccube-4.0.1/composer.lock             eccube/
$ cp eccube-4.0.1/.htaccess                 eccube/
$ cp eccube-4.0.1/index.php                 eccube/
$ cp eccube-4.0.1/maintenance.php           eccube/
Enter fullscreen mode Exit fullscreen mode

* 注釈: OpenBSD の httpd を使用しているため、Apache の .htaccess を更新しても、実際にはアップデートされません。その代替の対応として、バージョン間の差分の取込みを、後続の手順で行います。

ファイル上書き後に、アプリケーションのキャッシュをクリアします:

$ cd eccube

$ php-7.2 bin/console cache:clear --no-warmup

$ cd ../
Enter fullscreen mode Exit fullscreen mode

なお複数のバージョンをまたぐ場合は、段階的に更新を行う必要があるそうです:

4.0.0 → 4.0.2 のように複数バージョンをまたぐバージョンアップを行う場合は、4.0.0 → 4.0.1→4.0.1 → 4.0.2 のように段階的なバージョンアップを行ってください。

#4. composer.json / composer.lock の更新

以下の条件をすべて満たす場合に、必要な手順です(不要な場合、この手順はスキップします):

  • 個別ファイル差し替えの差し替え対象に、composer.json / composer.lock が含まれている
  • プラグインをインストールしている

Composercomposer.json / composer.lock を更新します:

$ cd eccube

$ php-7.2 bin/console eccube:composer:require-already-installed

$ cd ../
Enter fullscreen mode Exit fullscreen mode
#5. スキーマ更新/マイグレーション

今回は本項は不要です:

4.0.0 → 4.0.1 へのアップデートでは、スキーマ更新は必要ありません。

ただし、以下のように、更新が必要な場合の手順に則ってコマンドを実行しても、害にはなりませんでした:

$ cd eccube

$ # スキーマ更新
$ php-7.2 bin/console doctrine:schema:update --force --dump-sql
$ # マイグレーション
$ php-7.2 bin/console doctrine:migrations:migrate

$ cd ../
Enter fullscreen mode Exit fullscreen mode
#6. テンプレートファイルの更新

ファイルの上書き もしくは 差分 の取込み を行います。

4.0.0 -> 4.0.1 の更新対象は以下の通りです。

ページ名 ファイル名
お問い合わせ Contact/index.twig
会員登録(入力ページ) Entry/index.twig
MYページ/会員登録内容変更(入力ページ) Mypage/change.twig
MYページ/お届け先追加 Mypage/delivery_edit.twig
商品購入 Shopping/index.twig
非会員購入情報入力 Shopping/nonmember.twig
商品購入/お届け先の追加 Shopping/shipping_edit.twig
商品購入/お届け先の複数指定(お届け先の追加) Shopping/shipping_multiple_edit.twig
#7. メンテナンス機能を有効にする(4.0.0 -> 4.0.1 特有)

eccube/.env を更新します。
以下の 3 行のコメントアウトを解除しました:

ECCUBE_LOCALE=ja
ECCUBE_ADMIN_ROUTE=admin
ECCUBE_TEMPLATE_CODE=default
Enter fullscreen mode Exit fullscreen mode
#8. .htaccess の変更内容の取込み(OpenBSD 特有)

.htaccess の変更内容 を、以下のように吸収しました。

/etc/httpd.conf のサーバー定義に以下の block 定義を追加しました:

location "/.maintenance"                        { block }
Enter fullscreen mode Exit fullscreen mode

/etc/php-72.ini を以下のように編集しました:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 5M
Enter fullscreen mode Exit fullscreen mode
#9. アップデートの完了

PHP-FPM / httpd を再起動します:

# rcctl restart php72_fpm
# rcctl restart httpd
Enter fullscreen mode Exit fullscreen mode

* 注釈: メンテナンスモードを使用していた場合、それをオフにします。EC-CUBE のルートディレクトリの .maintenance ファイルを削除することで行なえます。4.0.1 以降では、管理画面からも操作できます。

✿ ✿ ✿

以上です。
お読み頂きどうもありがとうございました。

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