Wordpress移行作業メモ（移行先：CPI ビジネススタンダード）

Wordpressの移行作業メモになります。
移行先はCPIの共用サーバ（ビジネススタンダード）です。
基本的には、フォルダ・ファイルを丸々コピー＋MySQLのデータ移行で
移行できましたが、いくつかポイントがありました。

★CPIが準備してくれていた移行プラグインは残念ながら使えませんでした
★MySQLのデータ移行は、以下の手段でOKでした
　エクスポート（旧サイト）：プラグインBackWPup使用で簡単
　インポート（新サイト）：TeraTerm（SSH接続）でインポート
　※phpmyadminからのインポートは容量オーバーでNGでした。
★データベースへの接続がうまくいかないときは、
　ポート番号（3307）の明示が必要でした。（CPI独特の仕様？）
★FileZilla（FTPソフト）のバグ？（転送するとファイルが壊れる）
　への対応として特定ファイルで「手動転送＋バイナリモード」の指定が必要でした。
★新旧ドメイン名が同じ場合、新サイトの確認作業は、Windowsの場合
　hostsファイルを使うことで簡単にできました

ほぼ自分用のメモですが、もしどなたかの参考になれば大変嬉しいです。

## 旧サイト側の作業
### ① Wordpress関連ファイルのコピー（FTP）
・もし自動バックアップ等で生成されてそのままにしまっている
　巨大ファイル群があれば一時避難（引っ越し時間節約のため）
　![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/9fe9d1b4-4cc7-8d1b-c182-6515346bc5ce.png)
 　バックアップ用のプラグインを使っていて、上図のような大きなファイルがあれば
  どこか別の場所に逃がしておきます。（そのままだと時間がかかってしまって大変！）

・FileZilla（FTPソフト）でhtmlフォルダ以下のファイルをすべて
　ダウンロードします・・・結構時間がかかります
　![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/182b1577-054f-57ee-28e8-79985f2cfd53.png)
　（上図はwordpressをルートにインストールしている場合）
　イメージとしてはhtmlフォルダ以下をすべて新しいサーバに移行し
　データベース（MySQL）のデータを移せば引っ越しは完了となります

・今回CPI専用の移行プラグイン（下図）も試してみましたがNGでした。
   ![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/59d0fc51-a0df-37cc-f530-38b0dd3d88e0.png)
　エクスポートは出来るのですが、インポート時になぜか進捗0.56%でストップ
　してしまうので、3回ほどトライしてあきらめました。

### ② MySQLのデータをエクスポート（BackWPup）
・プラグイン「BackWPup」で簡単に出力できます。
　![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/a5f3bf24-e33e-dcd1-5ba4-709124ee29af.png)
　〇〇〇〇〇（データベース名）.sql　というファイルでダウンロードできます。

## 新サイト（CPI : Business Standard）側の作業
### ① データベース（MySQL8.0.29）を新規作成
・旧サイトではMySQL5を使っていましたが、サイトヘルスで「古いDBです」
　というメッセージが出るのが気になるため、新サイトではMySQL8を選択

#### 新規データベースを作成
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/f02d3f08-2255-8132-8edf-7f23dcb47461.png)
・「新規追加」ボタンで新しいデータベースを作成します
・「パスワード管理」をクリックし、データベースパスワードを変更します

#### 新規作成したデータベースについて
　下記3項目の情報は後にwp-configの設定で使います。
##### 【データベース名】
「現在の登録状況」の真下にある文字列
![画像14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/7aac214d-cbab-da3d-e5d7-1e2324753f4f.png)
##### 【データベースのユーザー名】
マルチドメイン設定完了のメールに記載があります。
（ウェブコントロールパネルIDの文字列と同じでした）
![画像15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/95e9c8a7-f9ca-d026-2121-dc6bcedb1266.png)
##### 【データベースのパスワード】
　上記作業で設定したパスワード

#### 新規データベースへのログイン確認
・「MySQL8.0.29管理画面」をクリックし、phpmyadminを開いて
　新しいデータベースにログインができるかどうかを確認します。

### ② 作成したDBにデータをインポート（SSH）
・phpmyadminを使ってインポートしようとすると、2M制限にひっかかりNG！
　![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/671508e1-c1ad-659b-cde5-a35d1b426c59.png)

・制限を解除するためには、phpmyadminのphp.iniを変える必要がありますが
　CPIの場合、phpmyadminのphp.iniにアクセスするのが難しそう・・・
・仕方がないのでSSHでインポートすることにしました。

#### FTPでインポートしたいsqlファイルをルート直下にアップロード
　![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/0c2d6151-cb68-a6ab-8335-82ec18db2577.png)
　さきほど旧サイトで出力したデータベースのデータ（test.sql）を
 　新サイトのルート直下（htmlフォルダ直下）にFTPでアップロードします。

#### TeraTerm（SSHソフト）でCPIに接続

##### TeraTermで公開鍵と秘密鍵を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/62710c1b-eaa5-c2a4-7298-8b3644ac7362.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/36365ddf-1709-a322-3482-e8ebd2e400aa.png)
![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/6632a8d5-1f1c-15b6-888f-a70652d53c1d.png)
　わかりやすい場所（C:¥SSH）に公開鍵と秘密鍵のファイルを保存します

##### 公開鍵をCPI（新サーバ）に登録します
![画像11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/2d3ff7ef-d161-5d31-f59e-379ba31e9ffe.png)
　・Web→SSH→公開鍵登録
 　　　さきほど、C:\SSHに保存した公開鍵のファイルをテキストエディタで開いて
   　　　中身の文字列をコピー・貼り付けして登録をします
　・スイッチを「有効」にスライドさせ、SSHを有効にします
 　
##### TeraTermでCPIにSSH接続します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/8d8778f0-47db-dab3-8ebf-7911e6c7ffa1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/88cee65d-872b-19db-4660-6152183c3a41.png)
・秘密鍵は、さきほど保存した秘密鍵のファイルを指定します。
・ここで入力するウェブコントロールパネルIDの文字列は下図の画面で確認ができます。
![画像12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/4bc5b6dc-cc6e-090b-0ecb-3a53a68ed7fd.png)
（参考URL）
https://support.cpi.ad.jp/manual/bs/tools/sshkeys

##### SSH接続ができたらコマンド入力でMySQLにデータをインポートします
①cd html　で、test.sql（旧WordpressのDBデータ）があるディレクトリまで移動
②下記コマンドを入力
~~~
mysql -u データベースのユーザー名 -p -h 127.0.0.1 -P 3307 データベース名 < test.sql

※CPIの場合、ポート番号の入力（-P 3307）がポイント
※test.sql：旧WordpressのDBデータ（BackWPupで出力したファイル）
~~~
③Enter password: データベースパスワードを入力（パスワードは表示されません）
（参考URL）
https://www.flying-h.co.jp/media/2019/04/26/sql_upload_error/

##### phpmyadminでインポートが成功したかどうかを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/36294e78-e653-6df9-35a4-f660a8ef8119.png)
　新規作成したデータベースの中に項目がたくさん増えていればOK
 
### 新サイト側（CPI）の作業③　Wordpress関連ファイルのアップロード（FTP）
ダウンロードした旧Wordpressのファイルをすべて新サイトにFTPでアップロードします。

### .htaccessの設定（PHP使用バージョンの設定）
旧サイトからもってきた.htaccessファイルの中身を修正します。
・phpのバージョンを旧サイトと最も近いものに合わせます
　・新サイト（CPI）の選択肢・・・	7.4.30 / 8.0.30 / 8.1.29 / 8.2.23 / 8.3.11
　・phpのバージョンが離れると動かなくなるプラグインが多くなります
　・今回は旧サイトのphpバージョンに最も近かった、php74　に設定
・サーバ固有の情報が入っている箇所を、新サーバの情報に修正します。
　（下図の例では、データベースID（＝データベース名）を変更）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/627d5a4d-dc93-54d8-da88-8caf82c299f1.png)

### wp-configの設定（新DBへの接続情報を設定）
・データベース名・データベースのユーザー名・パスワードを下記のように記入します
・MySQLのホスト名は「127.0.0.1:3307」という風にポート番号まで記入するのがポイント
![画像13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/5ec87714-5e6c-f05a-94dd-d87f8e612ad2.png)
（参考URL）
https://www.i-w.jp/mysql8/

## 動作確認・修正作業
### いったん全てのプラグインを無効に
FTPで「plugin」フォルダを任意の名前にリネームすることで
すべてのプラグインを無効にできます。
プラグインの不整合（phpのバージョン違いに対応できずエラーがでるものなど）で
管理画面が表示できなくなることを未然に防ぎます。
（管理画面に入れる状態をつくってから、ひとつずつ確認をしながら
　プラグインを有効にしていく手順を踏みます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/2491d670-c12c-2479-4a01-e502cc6ad470.png)

（参考URL）
https://tcd-theme.com/2019/03/plugin_invalidation.html

### 新サイト閲覧確認のためのhosts設定（新旧同一ドメイン名の場合）
新旧サイトが同一のドメイン名の場合は、ブラウザにURLを入力しても
旧サイトが表示されるため、新サイトの閲覧確認ができません。
そこでWindowsのhostsファイルを編集することで、自PCからのみですが
ブラウザから新サイトを見に行くようにすることができます。
#### hostsファイルの場所
C:\windows\system32\drivers\etc\hosts
#### hostsファイルの一番下の行にテキストエディタでIPアドレスとドメイン名を追加
（例）
サーバーのIPアドレスが「202.172.26.39」、
ドメイン名が「example.com」（www付きも含む）の場合
~~~~
202.172.26.39 example.com
202.172.26.39 www.example.com
~~~~
（参考URL）
https://help.coreserver.jp/manual/hosts-win/

### ブラウザにURLを入力し新サイトにアクセスしてみます
・エラーなく表示されればOK！
・エラーがでる、トップページが表示されない、等の場合は・・・
　（今回は残念ながらこちらでした）
#### トップページが表示されないときはデバッグモードにしてみる（wp-config）
wp-config.phpに以下の行を記載すればデバッグモードになり、
エラーが出ているファイル・該当行を特定できます。
~~~~
define('WP_DEBUG', false);
~~~~

#### wp-includes/formatting.php の再取得・アップロード
上記デバッグモードでエラーのファイルが特定でき、formatting.phpという
ファイルが問題のようでした。
調べてみたところ、FTPソフトでFileZillaを使用してWordpressの引っ越しをすると、
なぜかファイル転送の際にformatting.phpのみ壊れてしまうということでした。
(参考URL）https://trac.filezilla-project.org/ticket/11947

【解決策】
　formatting.phpを転送の際は、FileZillaの「手動転送＋バイナリモード」を使う
　 （この方法でファイルを壊さずに転送ができます）
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/289656ac-d928-4ad8-3f25-c235d9c22200.png)

　旧サイトからバイナリモードでformatting.phpを再取得し、
　新サイトにアップしなおすことで、エラーが発生しなくなりました。

### 新サイトの管理画面が表示できたら・・・
#### 旧サイトのWordpressと見比べてプラグインを有効にしていく
・FTPソフトでプラグインフォルダの名前を元に戻します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648912/2b9af143-47e3-b453-8dda-84a981e598ad.png)
　これで管理画面からプラグインを有効にできるようになります
 
・旧Wordpressの管理画面を開いて有効/無効のプラグインをメモします。
・新Wordpressの管理画面で上記メモを参考に、旧サイトで有効になっていたプラグインを
　新サイトでも有効にしていきます。
・プラグインを旧サイトと同じ状態にできれば、ひとまず引っ越しは完了です！