ほんとつらい
目的
サーバーが弱いっぽい気がするから強いサーバーに移してABテストしようぜ!
環境
ロリポップ ライトプラン(アップデート済み)
PHP7.3
アップデートしたらPHPバージョン幅が狭まっちゃった。
たまたまだけど7.2までは動作を確認できてる。
けど推奨環境は7.1までだよねこれ。
やること
- 新環境にECCUBEをインストールする
- DBの内容をまるっと移す
- FTPで諸々を移す
2と3の順番は正直どっちゃでも良くて、要は全部力技で移しますよって話。
一個ずつ再登録してるとめんどくさいからね。本体とかプラグインとかカスタマイズしまくってるし。
ECCUBE3のインストール
ロリポップは2.17を案内してるけどそういう訳にはいかないので手動でECCUBE3をインストールする。
直リンクになってるのでここからDLする。
zipファイルを解凍して、中身を全部FTPクライアントでアップロードする。
アップロードしたディレクトリに「/html/install.php」を追加してアクセス。
進めていくとDB設定で躓いた。
selectがぶっ壊れてる。 STEP4「データベースの設定」の「<select id>」が「selectid」になってて、それは調べてみたら他でも症例が出てた。こんなかんじ
<selectid="install_step4_database" name="install_step4[database]" class="form-control"><option value="pdo_pgsql">PostgreSQL</option><option value="pdo_mysql">MySQL</option><option value="pdo_sqlite">SQLite(開発者用)</option>
</selectid="install_step4_database">
こうする
<select id="install_step4_database" name="install_step4[database]" class="form-control"><option value="pdo_pgsql">PostgreSQL</option><option value="pdo_mysql" selected>MySQL</option><option value="pdo_sqlite">SQLite(開発者用)</option>
</select>
Chromeでインストール
検証で開いて<select>部を修正、</select>も影響を受けてるのでそこも整える。ついでだからoptionのmySQLにselectedを書き足したりする。
必須マークがなくて見落としがちだけど「データベースのホスト名」はロリポップのデータベースページでいう、一番上の項目の「サーバー」のやつを記入する。これが抜けるとエラーを吐いてやり直しになる。
壊れてなければ必須マーク付いてるんだけどね。危ない。
で、それができれば後はすんなりいく。
ロリポップを使用している場合、「サーバーの管理・設定」>「データベース」を参照しつつ以下を記入。
データベースの種類:MySQL
データベースのホスト名:データベース「サーバー」
データベース名:データベース「データベース名」
ポート番号:空欄
ユーザ名:データベース「ユーザー名」
パスワード:データベース「パスワード」
STEP5のデータベースの初期化は接頭語がない関係からの上書き問題についてなので、DBがまっさらにされるって意味での初期化じゃないんで、どちらにせよWPとかのECCUBE3に関係ないテーブルに影響はない。他にECCUBEをインストールしていて上書きしたければ初期化、したくなければ初期化しないを選ぶ。
データベースのエクスポート
元のサイトのphpmyadminを開いて、データベースをエクスポートする。
ロリポップの低価格プランみたいに1つのDBにまとまってるタイプならECCUBE3のテーブルだけを指定してDLする。
結果から言って、WPのときと同じ設定のエクスポートで良かった。
データベースのインポート
新しく作ったサイトのphpmyadminを開いて、今あるものを削除してインポートする。消すのになんでインストールしたんだっていう話だけど、まあ、PHPバージョン高くてもインストールできるのかっていうところからやってたもので。
データベースの「構造」から該当テーブルを全部選択して削除。
確認画面で「外部キーのチェック」のチェックを外す。
外さないと削除できないやつがある。
で、インポートするんだけど、DBの作成ができないのでエクスポートしたデータはそのまま使えない。
sqlをメモ帳とかで開いて、元のサイトのDB名だった部分を新しい環境のDB名に変更する。
--
-- Database: `【データベース名】`
--
CREATE DATABASE IF NOT EXISTS `【データベース名】` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `【データベース名】`;
この部分。
ついでに記述の全てを「SET FOREIGN_KEY_CHECKS=0;」と「SET FOREIGN_KEY_CHECKS=1;」で挟む。挟まないと外部キーのどうのこうのでエラーになる。
外部キーはエクスポートもインポートも両方引っかかるので厄介。
config.ymlを編集する
乱暴なことを言えば上書きでも良いんだけど。
このままだと管理画面にログインできないので一手間加える。
「/app/config/eccube/config.yml」を編集する。
「auth_magic」を元のサイトの文字列に変更する。
「auth_magic」っていうはパスワードの暗号化に関わる文字列で、これはインストール毎に異なる内容。インストール時に生成された内容ではDBにインポートしたアカウントが通らないので変更する必要がある。
変えたら管理画面にログインできるようになる。
ECCUBEの各データを移す
ここからが地獄。
カスタマイズしまくってると何がそのままなのかがわからないので、ほぼ全部を載せ替える。じゃあ最初から全部移せばいいって話だけど、でもなんか、調べてみたらインストールはしておかないとダメっぽいって書いてるのもあった。なんだろう。
商品画像とかめっちゃ重いやつあるから、DL用とUL用でFTPクライアントは2つ起動したほうがいいかも。
移し残しがあったらバグる自信がある。
あとはまあphpバージョンがどこで影響出るか。
とりあえず今はここまで。
ECCUBEの各データを移す:2
とりあえず、DBとかアカウントとかディレクトリ指定はそのままでそれ以外は全部移した。これのことがあるから一度インストールしとけってことかもしれない。インストール先は独自ドメイン直下じゃなくて下層ディレクトリだしね、混乱するかもだもんね。
※「/app/log」、「/app/config」は移さない
※.htaccessも怖いから移さない
回線が不安定なのか原因はよく分からんけども、大量のファイルを移してるとたまにエラーが出て止まることがあるんで、時間は掛かるけど完全放置しないでチェックできるようにしておいたほうがいい。スキップせずにリトライでとりあえずなんとかなった。完全に止まったらどこでやり直しになるかよく分からんので、小分けにアップしていくのが安全。
プラグイン
プラグインは新規インストールに関しては問題なく動いてるんだけど、移してきたものについてはそりゃ設定そのまま引っ張ってきたんだから有効・無効はそのままになってるんだけど、システム的に有効になってなかったりした。無効→有効で機能がアクティブになるので一旦全部そうした方がいいかも。
ブロック
ブロックの内容が反映されてない。
管理画面で見たら空になってた。
登録したら動いたんで個別対応でなんとかなるけど、なんなんだろうこれ。
反映されてるやつもあった。
独自ページ
独自ページがおかしい。
管理画面上では確認できるんだけどページ自体が表示されない。
「~/index.php/user_data/~」を噛ませないと表示されない。
ここにある内容でなんとかなった。
「URL」と「ファイル名」が一緒だと表示されない。
大文字小文字でもいいから違う文字列にする。
新規作成したページでも同様だったから、これは覚えておかないと危ない。
URLを変更するとなると面倒なので.twigの名前を変える。
多分PHPのバージョンのアレなんだろうなと思う。
ブロック・独自ページ:2
違うプランで同じようにやってみたら問題なく表示された。何が違うのか。
使ってみる
読み込みやら処理が劇的に早くなった。
やっぱサーバーが貧弱だったんだ。
購入やら管理画面の動作は今のところ問題なく出来てる。
PHPが推奨環境外なのが気がかり、どこで何が起きるのか、そこだけが残ってる。
とりあえず終わり。
PHP対象外バージョンでの稼働について
ぶっちゃけド素人だから下手なことは言えないけど、インストール時にselectがぶっ壊れてたので他のselectもそうなのかなと身構えたんだけど、商品ページの規格とか購入画面とか管理画面とかのselectは問題なく動いてた。
インストールさえ通れば他は大丈夫かなっていう甘い考え。
PHP7.4でインストールした場合
インストール自体は上記の処置でうまくいったんだけど、管理画面の左メニューのアイコンのところの表示が壊れた。中身を覗くと複数設定してるclassのスペースが消されてた。PHP7.3でインストール→7.4にアップグレードでもなんかだめっぽいなこれ。
移行時のpath.ymlの編集について
データ移行して動作確認して、いい感じだからドメインを移そう!ってなった場合、app/config/eccube/path.ymlの編集が必要になる。
開いたら分かるんだけど、ftp的なディレクトリ指定とURL的なディレクトリ指定が混在してる。これを修正しないといけない。
修正すべきはURLに関わるディレクトリ部分で、ざっと書くと
- root:
- tpl:
- admin_tpl:
- image_path:
- root_urlpath:
- admin_urlpath:
- front_urlpath:
- user_data_urlpath:
- plugin_urlpath:
になる。ロリポップでいう「/home/~」以外が書き始めになっているやつの大半。
「root_urlpath:」は下層ディレクトリを指定しない場合「null」となっている。ディレクトリ指定末尾が「/」じゃないからだと思う。
独自ページの問題について
ちょっと分かった。
ロリポップのドメインで、php7.3にした状態でインストールしたら独自ページが使えた。そのECCUBE3に別のドメインを当て込んで、そのドメインはphp7.4だった。そうするとselectがぶっ壊れたりした。php7.3に変更してしばらく待ったらselectは直ったけど、独自ページがぶっ壊れた。ページの名前とファイル名を別物にして、中身が空になってたので入れ直したら表示された。
どっかのタイミングでphp7.4にすると独自ページが壊れる。
簡単引っ越しフロー
もっかいやったら結構スムーズだった。
書いてる流れでやっていけば大丈夫。
準備(データ方面)
- ECCUBE本体のダウンロード・解凍
- 引越し元のDBのエクスポート
- 引越し元のapp・html・srcディレクトリのバックアップ
準備(サーバー方面)
- 引越し先のDB作成
- 引越し先のドメイン用意(ディレクトリ指定も)
- 引越し先適用ドメインのPHPバージョンを7.4にする
DBインポート
これ、ECCUBEインストール前に済ませておくのがポイント。
ECCUBEインストール
- 解凍データをドメイン適用先のディレクトリにアップロード
- install.phpにアクセスして進めていく
- インストール過程にあるDB初期化はしない
DBの初期化をしないで進めたらそのまま使えた。config.tmlのマジックなんちゃらを移植しなくてもDBの中身と紐付いた。これは大きい。
FTPアップロード
インストールして生成されたapp・html・srcを準備時にバックアップした内容で上書きする。
「app/config/」「app/cache/」「app/log/」は上書きしない。
.htaccessの内容が局地的なアレだったらこれも上書きしない。
プラグイン調整
有効でも有効になってなかったりするんで、無効→有効で繋ぎ直す。
おしまい。
実際の作業について
指定のドメインを適用すること前提だったんで予め用意したんだけど、そこからinstall.phpを開いてもバグったりエラーページになったりしてた。ロリポップで割り振られてるサブドメインでアクセスしたら問題なく動作したので、設定の反映ができてなかっただけかもしれない。ここがすんなり行けばpath.ymlのディレクトリ修正をしなくてよかったんだけど。
独自ページは修正しなくても表示された。
そういえばインストール時に<select>が壊れてなかった。なんでだろう。
コメント