EC-CUBE 4.0.0 -> 4.0.1 へのアップデート @ OpenBSD
Tags: eccube, ecommerce, openbsd, migration
Published: 2018-12-26 08:25:49

---
title: EC-CUBE 4.0.0 -> 4.0.1 へのアップデート @ OpenBSD
published: true
description: 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) で吸収する。
tags: eccube, ecommerce, openbsd, migration
series: EC-CUBE On OpenBSD
---

# 概要

先日、[OpenBSD](http://openbsd.org) 6.4 に [EC-CUBE](https://www.ec-cube.net/) 4.0.0 をインストールしました。
\* 詳細を以下の記事に書きました:
{% link nabbisen/ec-cube-4--openbsd-64--30pd %}

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

1. PHP のコマンドを実行する時は `php` の代わりに `php-7.2` を使用する。
1. パッケージ内に複数の [`.htaccess`](https://httpd.apache.org/docs/current/ja/howto/htaccess.html) が存在するが、そのどこかに更新がある場合、必要に応じて差分を [`httpd.conf`](https://man.openbsd.org/httpd.conf.5) / [`php.ini`](http://php.net/manual/en/configuration.file.php) (`php-72.ini`) で吸収する。

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

### 環境

- OS: OpenBSD 6.4 amd64
- Web サーバー: OpenBSD [httpd](https://man.openbsd.org/httpd.8)
- カートシステム: EC-CUBE 4.0.0 -> 4.0.1
- DB: [MariaDB](https://mariadb.com/) 10.0

### 注意点

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

[公式ドキュメント「ご注意」](http://doc4.ec-cube.net/quickstart_update#%E3%81%94%E6%B3%A8%E6%84%8F):

> EC-CUBE本体のコード(app/config/eccube, app/DoctrineMigrations, bin, src, htmlディレクトリ)をカスタマイズしている場合、ファイルが上書きされてしまうため、この手順ではバージョンアップできません。
> [各バージョンでの変更差分](http://doc4.ec-cube.net/quickstart_update#%E5%90%84%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A7%E3%81%AE%E5%A4%89%E6%9B%B4%E5%B7%AE%E5%88%86)を確認して必要な差分を取り込んでください。

<center>✿ ✿ ✿</center>

# アップデートの手順

### 前提

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

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

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

---

### 手順 1: [バックアップを取得する](http://doc4.ec-cube.net/quickstart_update#1-%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)

##### \#1. バックアップディレクトリを作成する

```shell-session
$ mkdir %backup-dir%
```

%backup-dir% は、実際には、以下のように命名しました: ``` eccube4.0.0-`date '+%Y%m%d'` ```

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

[`mysqldump` で MariaDB / MySQL のバックアップを取得できます。](https://dev.to/nabbisen/mariadb-backing-uprestoring-databases-on-the-command-line-351j)

```shell-session
$ mysqldump -u %user% -p %database% > %backup-dir%/database-backup.sql
```

##### \#3. ソースファイルのバックアップ

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

```shell-session
$ cp -rp eccube %backup-dir%/eccube-4.0.0
```

##### \#4. バックアップの完了

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

```shell-session
$ ls -l %backup-dir%
```

---

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

*\* 注釈: EC-CUBE 4.0.1 以降は [メンテナンスモードを使用する](http://doc4.ec-cube.net/quickstart_update#2%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3401%E4%BB%A5%E9%99%8D) ことが可能です。4.0.0 においても、ルートディレクトリ `eccube` に空ファイル `.maintenance` を一時的に作成することで行なえます。*

##### \#1. [公式サイトのダウンロードページ](https://www.ec-cube.net/download/) から最新の EC-CUBE パッケージを取得する

```shell-session
$ wget http://downloads.ec-cube.net/src/eccube-4.0.1.zip
$ unzip eccube-4.0.1.zip
```

##### \#2. [共通ファイルを更新する](http://doc4.ec-cube.net/quickstart_update#3-%E5%85%B1%E9%80%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%B7%AE%E3%81%97%E6%9B%BF%E3%81%88)

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

```shell-session
$ 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/
```

##### \#3. [個別ファイルを更新する](http://doc4.ec-cube.net/quickstart_update#4-%E5%80%8B%E5%88%A5%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%B7%AE%E3%81%97%E6%9B%BF%E3%81%88)

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

```shell-session
$ 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/
```

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

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

```shell-session
$ cd eccube

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

$ cd ../
```

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

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

##### \#4. [`composer.json` / `composer.lock` の更新](http://doc4.ec-cube.net/quickstart_update#5-composerjsoncomposerlock%E3%81%AE%E6%9B%B4%E6%96%B0)

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

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

[Composer](https://getcomposer.org/) の [`composer.json` / `composer.lock`](https://getcomposer.org/doc/01-basic-usage.md) を更新します:

```shell-session
$ cd eccube

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

$ cd ../
```

##### \#5. [スキーマ更新/マイグレーション](http://doc4.ec-cube.net/quickstart_update#6-%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E%E6%9B%B4%E6%96%B0%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)

今回は本項は不要です:

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

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

```shell-session
$ cd eccube

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

$ cd ../
```

##### \#6. [テンプレートファイルの更新](http://doc4.ec-cube.net/quickstart_update#7-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9B%B4%E6%96%B0)

ファイルの上書き もしくは [差分](http://doc4.ec-cube.net/quickstart_update#%E5%90%84%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A7%E3%81%AE%E5%A4%89%E6%9B%B4%E5%B7%AE%E5%88%86) の取込み を行います。

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

|ページ名|ファイル名|
|-------|--------|
|お問い合わせ                          |[`Contact/index.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Contact_index_twig.htm)|
|会員登録(入力ページ)                   |[`Entry/index.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Entry_index_twig.htm)|
|MYページ/会員登録内容変更(入力ページ)     |[`Mypage/change.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Mypage_change_twig.htm)|
|MYページ/お届け先追加                  |[`Mypage/delivery_edit.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Mypage_delivery_edit_twig.htm)|
|商品購入                              |[`Shopping/index.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Shopping_index_twig.htm)|
|非会員購入情報入力                     |[`Shopping/nonmember.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Shopping_nonmember_twig.htm)|
|商品購入/お届け先の追加                 |[`Shopping/shipping_edit.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Shopping_shipping_edit_twig.htm)|
|商品購入/お届け先の複数指定(お届け先の追加)|[`Shopping/shipping_multiple_edit.twig`](http://doc4.ec-cube.net/documents/updatedoc/4.0.1/Shopping_shipping_multiple_edit_twig.htm)|

##### \#7. [メンテナンス機能を有効にする（4.0.0 -> 4.0.1 特有）](http://doc4.ec-cube.net/quickstart_update#400---401)

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

```ini
ECCUBE_LOCALE=ja
ECCUBE_ADMIN_ROUTE=admin
ECCUBE_TEMPLATE_CODE=default
```

##### \#8. `.htaccess` の変更内容の取込み（OpenBSD 特有）

[`.htaccess` の変更内容](https://github.com/EC-CUBE/ec-cube/compare/4.0.0...4.0.1?w=1#diff-8052c42ab3b8aa06a3f5f788a4ddccc2) を、以下のように吸収しました。

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

```apache
location "/.maintenance"                        { block }
```

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

```ini
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 5M
```

##### \#9. アップデートの完了

[PHP-FPM](https://php-fpm.org/) / httpd を再起動します:

```shell-session
# rcctl restart php72_fpm
# rcctl restart httpd
```

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

<center>✿ ✿ ✿</center>

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