Skip to content

Commit

Permalink
Merge pull request #327 from ji-eunsoo/feature/add_update43
Browse files Browse the repository at this point in the history
4.2から4.3への本体バージョンアップ
  • Loading branch information
shinya authored Jul 29, 2024
2 parents f426c5b + 707dd81 commit ea57abb
Show file tree
Hide file tree
Showing 3 changed files with 269 additions and 1 deletion.
3 changes: 3 additions & 0 deletions _data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ docs:
- title: バージョンアップ
output: web, pdf
children:
- title: 4.2から4.3への本体バージョンアップ
url: /update43
output: web, pdf
- title: 4.2から4.3へのマイグレーション
url: /update-42-43
output: web, pdf
Expand Down
264 changes: 264 additions & 0 deletions _pages/quickstart/update43.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,264 @@
---
layout: single
title: 4.2から4.3への本体バージョンアップ
keywords: howto update
tags: [quickstart, getting_started]
permalink: update43
summary : EC-CUBE4.2から4.3への本体バージョンアップ手順について記載します。
---

本番環境でバージョンアップを行う前に、テスト環境で事前検証を必ず行ってください。
{: .notice--danger}
この手順では、ec-cube.netからダウンロードしたEC-CUBEのパッケージを利用していることを想定しています。
{: .notice--danger}
この手順では、EC-CUBE4.2.3から4.3.0へのバージョンアップを想定しています。
{: .notice--danger}
EC-CUBE本体のコード(app/config/eccube, app/DoctrineMigrations, bin, src, htmlディレクトリ)をカスタマイズしている場合、ファイルが上書きされてしまうため、この手順ではバージョンアップできません。[各バージョンでの変更差分](#変更差分)を確認して必要な差分を取り込んでください。
{: .notice--danger}

## 事前準備

### プラグインの対象バージョンの確認

- プラグインをインストールしている場合、EC-CUBE4.3に対応しているかどうかをご確認ください。
- 4.3へのバージョンアップを実施する前に、使用されているプラグインを 4.3対応バージョンにアップデートしてください。

### カスタマイズや独自プラグインを利用している場合のマイグレーション

- Customize領域を使ったカスタマイズや、独自プラグインを利用している場合は、[EC-CUBE4.2から4.3へのマイグレーション](/update-42-43)を参考に、4.3対応を行ってください。

## 作業の流れ

1. サイトのバックアップ
1. メンテナンスモードを有効にする
1. プラグインのアップデート
1. EC-CUBEのソースファイルをバージョンアップしたものに置き換え
1. 個別ファイル差し替え
1. composer.json/composer.lockの更新
1. スキーマ更新/マイグレーション
1. キャッシュ等の再生成
1. フロントテンプレートファイルの更新
1. メンテナンスモードを無効にする

## 手順詳細

### 1. サイトのバックアップ

EC-CUBEのインストールディレクトリ以下をすべてバックアップしてください。

お使いのデータベースも全てバックアップしてください。

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

EC-CUBEの管理画面へアクセスし、「コンテンツ管理」の「メンテナンス管理」から、メンテナンスモードを有効にしてください。

または、EC-CUBEのルートディレクトリに「.maintenance」ファイルを設置することでメンテナンスモードを有効にすることもできます。

```
[root]
├──.maintenance
```

※ メンテナンスモード使用時は、管理画面以外のページにアクセスするとメンテナンス画面が表示されます。

### 3. プラグインのアップデート

インストール済みのプラグインのうち、アップデート可能なものがあれば、事前にアップデートを行ってください。

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

EC-CUBEのソースファイルについて、ディレクトリごとにそれぞれバージョンアップしたソースファイルに置き換えていきます。置き換える対象のディレクトリとなるのは、今回のバージョンアップで変更となったものとなります。
`app/config/eccube` `app/DoctrineMigrations` `bin` `src` `html` `vendor` など)

#### `vendor` ディレクトリ以外の置き換え

置き換える対象となるディレクトリを削除し、バージョンアップするEC-CUBEのバージョンのディレクトリにそれぞれ置き換えてください。

(対象ディレクトリの上書きではなくディレクトリの中のすべてのファイルを置き換える必要があります。古いファイルが残ってしまうと、予期せぬ動作となる恐れがありますので、必ず置き換える対象となるディレクトリごとにすべてのファイルを置き換えるようにしてください。)

```
[root]
├──[app/config/eccube]
├──[app/DoctrineMigrations]
├──[bin]
├──[src]
├──[html]
```

#### `vendor` ディレクトリの置き換え

`vendor` ディレクトリは削除せず、バージョンアップするEC-CUBEのバージョンの `vendor` ディレクトリで上書きしてください。

( Web API プラグインなど Symfony bundle を利用の場合に `vendor` ディレクトリを完全に削除してしまうと以降の手順でエラーが発生します。ステップ(5) の `bin/console eccube:composer:require-already-installed` コマンドで `vendor` ディレクトリ内の不要なファイルは削除されます。)

```
[root]
├──[vendor]
```

### 5. 個別ファイル差し替え

下記の差し替え対象ファイルを確認して最新のファイルで上書きしてください。

- composer.json
- composer.lock
- package.json
- package-lock.json
- index.php

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

packagist等の外部ライブラリを独自にインストールしている場合は、再度requireしてください。

例えば、psr/http-messageをインストールしている場合は、以下のようにインストールしてください。

```
composer require psr/http-message --no-plugins --no-scripts
```

Symfony Bundleを使ったプラグインを利用している場合、プラグインのcomposer.jsonを確認し、依存しているライブラリをインストールしてください。

例えば、APIプラグインの場合は、以下のようにcomposer.jsonを確認し、依存ライブラリをインストールしてください。

```
$ cat app/Plugin/Api42/composer.json
...
"require": {
"ec-cube/plugin-installer": "^2.0",
"league/oauth2-server-bundle": "^0.5",
"nyholm/psr7": "^1.2",
"php-http/message-factory": "*",
"webonyx/graphql-php": "^14.0"
$ composer require league/oauth2-server-bundle:^0.5 --no-plugins --no-scripts
$ composer require nyholm/psr7:^1.2 --no-plugins --no-scripts
$ composer require php-http/message-factory --no-plugins --no-scripts
$ composer require webonyx/graphql-php:^14.0 --no-plugins --no-scripts
```

以下のコマンドでキャッシュの削除を行ってください。

```
rm -rf var
bin/console cache:clear --no-warmup
```

以下のコマンドを実行してください。

```
bin/console eccube:composer:require-already-installed
```

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

スキーマ更新およびマイグレーション機能を利用して、データベースのバージョンアップを行います。

以下のコマンドを実行してください。

<span style="color:#ff0000;">
※スキーマ更新のコマンドを実行した際に以下のエラーが発生する場合があります。
</span>

`In Eccube_KernelProdContainer.php line 1936:
Attempted to call an undefined method named "registerUniqueLoader" of class
"Doctrine\Common\Annotations\AnnotationRegistry".`


このエラーは、Symfonyのデータの内容が変更されたが、Symfonyのキャッシュ構成が古いままであるために発生します。
問題を解決するためには、キャッシュやログファイルなどが存在するvarフォルダを削除する必要があります。
以下のコマンドでvarフォルダを削除し、スキーマ更新を再実行してください。

varフォルダの削除

```
rm -rf var
```


スキーマ更新

```
bin/console doctrine:schema:update --force --dump-sql
```

マイグレーション

```
bin/console doctrine:migrations:migrate
```

### 7. キャッシュ等の再生成

autoloadファイルの再生成
```
composer dump-autoload
```

プロキシファイルを再生成
```
bin/console eccube:generate:proxies
```

キャッシュファイルの再生成
```
bin/console cache:warmup --env=prod
```

セッションの削除
```
rm -rf var/sessions
```

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

対象となるバージョンごとに、フロントテンプレートファイル(twig)の更新が必要です。

管理画面のコンテンツ管理もしくは店舗設定>メール設定から、該当するページ/ブロック/メールテンプレートを編集してください。

4.2.3から4.3.0への変更ファイル一覧は以下のとおりです。
変更対象の差分は、[変更差分](#変更差分)からご確認いただけます。

- src/Eccube/Resource/template/admin/Content/news_edit.twig
- src/Eccube/Resource/template/admin/Order/index.twig
- src/Eccube/Resource/template/admin/Order/shipping.twig
- src/Eccube/Resource/template/admin/Product/category.twig
- src/Eccube/Resource/template/admin/Product/class_category.twig
- src/Eccube/Resource/template/admin/Product/class_name.twig
- src/Eccube/Resource/template/admin/Product/csv_class_category.twig
- src/Eccube/Resource/template/admin/Product/csv_class_name.twig
- src/Eccube/Resource/template/admin/Product/product_class.twig
- src/Eccube/Resource/template/admin/Setting/Shop/mail.twig
- src/Eccube/Resource/template/admin/Setting/Shop/payment_edit.twig
- src/Eccube/Resource/template/admin/Setting/Shop/shop_master.twig
- src/Eccube/Resource/template/admin/Setting/System/system.twig
- src/Eccube/Resource/template/admin/Store/plugin_table.twig
- src/Eccube/Resource/template/admin/change_password.twig
- src/Eccube/Resource/template/admin/default_frame.twig
- src/Eccube/Resource/template/admin/error.twig
- src/Eccube/Resource/template/admin/info.twig
- src/Eccube/Resource/template/admin/notice_debug_mode.twig
- src/Eccube/Resource/template/default/Block/auto_new_item.twig
- src/Eccube/Resource/template/default/Block/google_analytics.twig
- src/Eccube/Resource/template/default/Block/new_item.twig
- src/Eccube/Resource/template/default/Cart/index.twig
- src/Eccube/Resource/template/default/Shopping/alert.twig
- src/Eccube/Resource/template/default/Shopping/shipping.twig
- src/Eccube/Resource/template/default/default_frame.twig

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

EC-CUBEの管理画面へアクセスし、「コンテンツ管理」の「メンテナンス管理」から、メンテナンスモードを無効にしてください。

または、EC-CUBEのルートディレクトリに「.maintenance」ファイルを削除することでメンテナンスモードを無効にすることもできます。

## 変更差分

4.2.3から4.3.0への詳細な変更差分は、以下のリンク先で確認することができます。

[https://github.com/EC-CUBE/ec-cube/compare/4.2.3...4.3.0](https://github.com/EC-CUBE/ec-cube/compare/4.2.3...4.3.0?w=1#files_bucket){:target="_blank"}
3 changes: 2 additions & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ EC-CUBEの基本情報やご確認いただきたいことについてまとめ

本体のバージョンアップやマイグレーションについてまとめました。

+ [4.3から4.3へのマイグレーション](/update-42-43)
+ [4.2から4.3への本体バージョンアップ](/update43)
+ [4.2から4.3へのマイグレーション](/update-42-43)
+ [4.1から4.2へのマイグレーション](/update-41-42)
+ [4.0から4.1への本体バージョンアップ](/update41)
+ [4.0から4.1へのマイグレーション](/update-40-41)
Expand Down

0 comments on commit ea57abb

Please sign in to comment.