EC-CUBE Ver3のサーバ移行作業の手順を整理しました。EC-CUBE 3には、WordPressなどのようなデータのエクスポート・インポート機能がないため、EC-CUBE 3で運用しているサイトのデータを別サーバに引っ越しするには、自分で作業する必要があります。大まかな手順としては、旧サーバからデータベースとファイル一式をダウンロードして、新サーバにインポート。そして設定ファイルを編集すれば完了です。操作はコマンドを実行しない方法で行っています。

サーバ環境

項目移転前サーバ移転先サーバ
WebサーバーソフトウェアApache / 2.2.15Apache / 2.4.41
PHP5.67.3.12
MySQL5.15.7

移転前サーバからデータベースを取得

まずは移転前サーバからデータベースを取得します。EC-CUBEの管理画面からは行えないので、バックアップコマンドか phpMyAdminから取得します。phpMyAdminがない場合は、phpMyAdminをインストールする必要があります。

phpMyAdminのインストールと設定

phpMyAdminの公式サイトからデータをダウンロードします。ダウンロードしたzipデータを解凍すると、その時のバージョン次第ですが「phpMyAdmin-5.0.1-all-languages」というディレクトリができます。長いので「phpMyAdmin」などにリネームして、FTPでまるごとアップロードします。

そのあと、旧サーバで「phpMyAdmin」にアクセスして、使っていたデータベースのユーザ名とパスワードでログインします。左側から該当のデータベースを選び、画面上の「エクスポート」をクリックします。エクスポート方法は「詳細」を選んで実行します。SQLファイルがダウンロードできたら成功です。ダウンロードできたら「phpMyAdmin」は削除しておきましょう。

移転前サーバからファイルデータ一式をダウンロード

続いてデータ一式をFTPからダウンロードします。親ディレクトリから丸ごとダウンロードしても大丈夫ですが、cacheフォルダのキャッシュデータが相当大きくなっていることがありますので「/app/cache/」ディレクトリ以外を細かく個別にダウンロードした方がスムーズだと思います。移転作業には「/app/cache/」は不要なのでダウンロードしなくても大丈夫です。「/app/cache/」データも移行すると、正常に表示されなくなることもありますので、新サーバへアップロードしないようにしましょう。

移転先サーバにEC-CUBE 3をインストール

他ページで紹介されていた「旧サーバからデータ一式をダウンロードした後は、新サーバへアップロードしてデータベースもインポート、設定ファイルを編集で完了」という手順だと、試行錯誤しても「システムエラーが発生しました」「403 Forbidden」「500 Internal Server Error」という画面が出て、うまくいきませんでした。そこで、EC-CUBE ver3 をインストールしてからデータを移行させる、という手順を試したところ、うまくいきました。

2020年2月現在、EC-CUBE公式サイトにはバージョン3のダウンロードができないみたいですが、GitHubから取得できますのでそこからダウンロードします。ダウンロードしたデータをFTPでアップロードして、移転先サーバの管理画面でデータベースを作っておきます。「vendor」フォルダもアップします。そして、ブラウザでインストール画面にアクセスして、指示通り進めます。EC-CUBEが正常に動作していることが確認できましたら、FTPから「/app/config/eccube/database.yml」「/app/config/eccube/path.yml」の設定ファイルをダウンロードしておきます。

移転先サーバにデータベースをインポート

次にデータベースをインポートします。移転先サーバのphpMyAdminにアクセスして(なければインストール)、左側から該当のデータベースを選び、画面上の「インポート」をクリックします。移転前サーバでダウンロードしたsqlファイルをここでアップロードします。

移転先サーバにファイルデータをアップロード

最後に移転先サーバに画像ファイルやテンプレートファイルをアップロードします。「app」「html」「src」フォルダをFTPで上書きします。そのあと、移転先サーバで生成された設定ファイル「/app/config/eccube/database.yml」「/app/config/eccube/path.yml」を再度上書きします。

DNS切り替え

最後にDNS切り替えを行なって、該当ドメインで接続できることを確認してください。これで移転完了です。最後に動作確認を行いましょう。以下は、作業中に起こりやすいエラーを紹介します。

管理画面のパスワードが分からなくなった場合

どこかで手順を間違えたり、設定画面で設定したパスワードを紛失してしまうと、EC CUBEの管理画面にアクセスできなくなります。WordPressであればパスワードをリセットする方法が用意されていますが、EC CUBEには、そのようなリセット方法が準備されておらず、自分で対処する必要があります。

vendor/symfony/security/Core/Authentication/Provider/UserAuthenticationProvider.php
86行目あたり

try {
$this->userChecker->checkPreAuth($user);
// $this->checkAuthentication($user, $token);
$this->userChecker->checkPostAuth($user);
} catch (BadCredentialsException $e) {
if ($this->hideUserNotFoundExceptions) {
throw new BadCredentialsException('Bad credentials.', 0, $e);
}

throw $e;
}
【引用元】EC-CUBE3系でパスワードを忘れた場合の対処法

一番スムーズな方法としては、上記ファイルの一部をコメントアウトして、IDパスワードのチェックを止めて、その間にログインしてパスワードを再設定する、という手順です。終わったらコメントアウトを解除しましょう。

RewriteRuleが正常に動作していない場合

環境によってはRewriteRuleが正常に動作せず「403 Forbidden」エラーがおこることがあります。この場合はサーバの公式サイトを調べて適宜調整しましょう。シンボリックリンクを有効にする「Options +FollowSymLinks」、MultiViewsオプションを有効にする「Options -MultiViews」などが考えられます。

その他エラーの原因

その他エラーの原因には「path.yml」ファイルで各種パス設定が正しくない、「database.yml」ファイルでホストやデータベース名などが間違っている、などの設定ファイルの問題があります。エラーの原因が分からない時は、デバッグモードを使ったり、EC CUBE管理画面からログを見たりして、原因を探ることもできます。他の要因も考えられますが、「システムエラーが発生しました」の時は「/app/config/eccube/path.yml」の設定、「403 Forbidden」は.htaccessファイルの設定、「500 Internal Server Error」は必要なファイルがアップロードされているかの確認をするとよいかもしれません。

注意

上記は今回のデータとサーバ環境で試した結果ですので、状況によっては問題が発生するかもしれません。あくまでも参考程度にみていただければと思います。また、EC CUBE2や4では移転方法が異なるようなので、他サイトで調べてみてください。

参考サイト