WordPressの引っ越し記録

WordPressの引っ越しをプラグインなしで実施しました。
cocoonの設定もバックアップし引っ越し先も同じ設定になりました。

このサイトが引っ越し後になります。

条件

今回のこのサイトは以下のプラグインを利用している状態でこれらの設定も引き継ぐことができました。(引っ越し作業はプラグインを利用していません)

  • Contact Form 7
  • Custom Post Type UI
  • Highlighting Code Block
  • Intuitive Custom Post Order
  • SiteGuard WP Plugin
  • Smart Slider 3
  • Two Factor
  • Ultimate Member
  • WP Multibyte Patch
  • Groups

手順

手順をここで掲載しますが、この手順にたどり着くまでのトラブル集も最後に書いてあります。もしトラブルを抱えている方はそちらもご覧ください。

説明書きを加えながら飽きていますが、2回目の実施などでは赤字だけをだどればできるように書いています。

準備段階

まずはバックアップ

このバックアップは引っ越しに直接関係はありません。
もしも、失敗して移行元のサイトを壊してしまった場合に備える処置です。
今回はレンタルサーバーが提供してくれているバックアップツールをそのまま利用してサイトのバックアップを取得しました。

cocoonのバックアップを取得

cocoon設定のバックアップ機能でダウンロードできます。

データベースも正しく編集すればcocoonの設定も引き継がれます。失敗に備えてバックアップを取得しておきましょう。

プラグインの設定等を記録する。

後の手順でプラグインを無効化するので準備をします。

無効化する前に現在有効としているプロがグインの一覧を取得しましょう。

WordPressの設定で「プラグイン」⇒「インストール済みのプラグイン」⇒「使用中」と選択することで有効化された一覧にできますので、この有効なプラグインをスクリーンショットを取得して記録します、後でこの画像を参考にプラグインの復元を行います。

また、プラグインの中にはいったん無効化すると有効化した時にデフォルトに戻るものがあります。なので無効化前の詳細設定も記録します、これもプラグインの設定ページをスクリーンショットで記録します。Excelに画像を張り付けて保存しています。

サイトをメンテナンス表示にする。

WprdPressのメニューで以下の様に進みます。
[外観]⇒[テーマファイルエディター]⇒[functions.php]
図のコードをfunctions.phpに記載する。
このコードによりサイトにアクセスするとメンテナンス中と表示されるようになります。

WordPressの管理画面からの編集ではなくてもFFTで直接ファイルを処理してもOK

function maintenance_mode() {
	if(!current_user_can('edit_themes') || !is_user_logged_in()){
		wp_die('メンテナンス中です。しばらくお待ちください。');
	}
}
add_action('get_header','maintenance_mode');

移行データの取得

プラグインの無効化

バックアップを行うにあたってプラグインが機能していると失敗する場合があるようです、特にセキュリティー関係は無効化が必須という記事もありました。何が無効化が必須なのかを調べるのも手間なのですべてのプラグインを無効化することにします。

ファイル一式をダウンロード

WordPressのファイル一式をzip形式でダウンロードします。
レンタルサーバーのFTP機能を利用してZip化してのダウンロードを行います。
サーバではなくパソコン側のFTPソフトを利用してのダウンロードがデータ量やタイムアウトの関係で利用できない場合があります。ご利用の環境でうまくいかない場合はいくつかの手法を試してみましょう。

データベースのダウンロード

続いてデータベースをダウンロードします。
サーバーが提供するSQLツールを利用してダウロードします。
いくつかの設定がありますが図の部分のみ変更しています。

データベースのダウンロードオプション

プラグインを戻す

無効化してたプラグインの復元を行います。
もしうまく引っ越しできなかった場合には旧サイトをもうしばらく利用することになることと、作業中も見に来てくれているユーザもいるため、なるべく早く復元しましょう。

メンテナンス中の解除

メンテナンス中のコードをコメントアウトして旧サイトの復元完了です。

旧サイトの復元確認

復元の確認を別のパソコンや、別のブラウザもしくはスマホなどから行いましょう。
メンテナンス用のコードのコメントアウトを忘れていたとしても、ログイン状態ではメンテナンス中の表示が行われません。


ここまでで、旧サイトからのデータ取得作業は完了です。
ここまでの作業は途中で休まず一気に片付けましょう、時間がかかった場合はここで一休み。

新サイトのデータベース操作

ドメインを移動するにあたり、データベース内に記録されているドメインやファイル構成を修正する必要があります。単純に置換処理でよい部分もありますが、シリアライズ化されたデータの場合は文字数の変化にお合わせて数値の編集が必要になります。

置換とシリアライズの修正を行ってくれるツールを利用

Search And Replace Serialized String.phpを利用しました。ツールの概要や使い方等はGoogleで!

置換を行う項目は以下

項目

新サイト用のデータベースのアップロード

ダウンロードしていたデータベースを移行先にアップロードします。

データベースの編集

図のSQLを実行する(図に対して3点編集してください)

図は私の場合は次のSQL文で関係するアドレスを書き換えできます。

UPDATE wp_options SET option_value=REPLACE(option_value,"https://tonapaso.com","https://tona.tonapaso.com");
UPDATE wp_options SET option_value=REPLACE(option_value,"/tonapaso/www/tonapaso/","/tonapaso/www/tona.tonapaso.com/");
UPDATE wp_posts SET post_content=REPLACE(post_content,"https://tonapaso.com","https://tona.tonapaso.com");
UPDATE wp_posts SET guid=REPLACE(guid,"https://tonapaso.com","https://tona.tonapaso.com/");
UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"https://tonapaso.com","https://tona.tonapaso.com");
UPDATE wp_cocoon_speech_balloons SET icon=REPLACE(icon,"https://tonapaso.com","https://tona.tonapaso.com");
UPDATE wp_nextend2_image_storage SET image=REPLACE(image,"https://tonapaso.com","https://tona.tonapaso.com");
UPDATE wp_nextend2_smartslider3_slides SET thumbnail=REPLACE(thumbnail,"https://tonapaso.com","https://tona.tonapaso.com");

変更が必要なのは次の3点です。あなたのWordPressに合わせて変更してください。
・wp_:データベースお接頭語
・各行の最初の”https://…は旧のアドレスです。
・各行の後方の ”https://…は新のアドレスです。

注意

もしかするとあなたのサイトは他にも編集が必要なデータベースがあるかもしれません。
次の手順で編集が必要そうな部分を探索しましょう。
SQL文を使って検索などが難しい方は、データベースをCSVなどあなたのパソコンで読み取れる形式でダウンロードします。
ダウンロードされたファイル内で旧のアドレスやファイルの保存先などで検索して上のSQL文に含まれない元がないか探します。

シリアライズされたデータの修正

データベースに記録されたデータにはシリアライズされたデータが含まれます。
”シリアライズとは”については別途Googleとうで検索してみてください。
編集を加えた文字列をキーワードに検索しシリアライズされてデータの場合は数値を編集してください。
私の場合はデータベースからダウンロードして????.sqlデータをVSCで開いて文字列置換を実施、その後に変換した文字列で検索しシリアライズされたデータがあった場合にはそれらを手作業で修正しました。

専用のツールが世の中にはありますが、データベースのパスワード等を入力する必要がありそれらのツールが信用できるツールなのかを判断できないため自力で行うことを選びました。

シリアライズされたデータの修正が面倒なので可能ならば同じ文字数で変更することをお勧めします。

移行先のファイル操作

ファイルをアップロード

ダウンロードしたZipファイルを新フォルダにアップロードし解凍します。。
パソコン側で解凍せずにダウンロードしたzipファイルをそのままアップロードします。

wp-config編集

移行先のwp-config.phpを編集します。
この変更はデータベースとの紐づけの設定です。

ファイル名:wp-config.php
ファイルの場所:WordPressをインストールしたファイル直下。
編集箇所:下のxxxxxの部分を移行先のデータベースに合わせて変更する。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'xxxxxxxxx');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'xxxxxxx');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'xxxxxxxxxxxx');

/** MySQL のホスト名 */
define('DB_HOST', 'xxxxxxx.xxx.xxx.xxxxxxxxxxx.ne.jp');

移行先のWordPress操作

新サイトへログイン

https://xxxxxxxxxx/xx/wp-admin へログインする。

新しいサイトへログインして各種設定を開始します。
プラグインが無効な状態のため標準的なログインアドレスになります。

プラグインの有効化

プラグインの有効化と設定の復元を行う

まずは無効化したプラグインを有効化していきます。準備段階で記録した有効なプラグイン一覧を見ながらすべてを同じ状態にします。

プラグインの設定復元

プラグインの設定を復元します。

cocoonのバックアップを復元

cocoonのバックアップ機能を開き編集済みのファイルを使って復元を実行します。

動作確認

ここまでの作業ですべてが引っ越し完了のはずです。
新ドメインへアクセスし完了を確認しましょう。
当たり前ですが、新サイトと旧サイトは全く同じ見た目です。いろんなリンクをクリックしリンクがつながっているだけでは安心できません。リンク先が旧のサイトになっていないかアドレスを確認していきましょう。

旧サイトの閉鎖

転送処理を追加

旧サイトを訪れた方に新サイトを案内.htmlを作成して保存するか自動転送するかの処理を入れましょう。

旧サイトの無効化

新サイトが正しく動いてそうでも、細かい部分が旧のアドレスにあるがいるを参照している場合もあります。旧サイトのファイルを削除したりなどして旧サイトの参照先を無効な状態にします。
念のため、旧サイトのバックアップはしばらくは保持しておきましょう。

最後に動作確認をもう一度

旧サイトがなくなった状態で新サイトを再確認していきましょう。

おわり

どうでしたか、うまくいってますか?
私もこの手順で引っ越しできるようになるまで多くの壁に阻まれました。その内容をこの次からの「克服したトラブル記録」にのこします。参考になれば幸いです。

克服したトラブル記録

すんなり移行することができず、多くの壁がありました。

  • プラグインではDBが文字化け
  • cocoonの設定が継承されない
  • ファイルの属性が変化する
  • データベースの編集箇所がほかにも
  • シリアライズされたデータは単純な置換ではだめ

プラグインではDBが文字化け

プラグインのDuplicatorでバックアップを行いました。復元してサイトは動き出したものの記事の内容がすべて文字化けを起こしてしまいました。文字コードなど設定を一通り確認し疑わしい部分を変更してリトライを下のですがうまくいかずでした。
結局はデータベースの移動については手動で移動しました。
移動するだけでは旧サイトで設定されたリンクがそのまま引き継がれてしまうため、SQLでの置き換えなどを実施、しかしこれも後述するシリアライズの問題があります。

解決策

結論はあきらめました、自分で全部移動する。
プラグインに頼らずい引っ越しを行うとWordPressのファイル構成など良い勉強になりました。

cocoonの設定が継承されない

ファイルとデータベースの移動(リンクアドレス当は新アドレスに更新)してもcocoonの設定が引き継がれず、すべてがデフォルトの設定になってしまいました。

また、cocoonのバックアップ機能を利用して旧サイトから新サイトで復元することも失敗

解決策

cocoonのバックアップファイル内にhttps://…..のアドレスが記載されている部分があり、ここを新アドレスに編集する必要があるようです。また、アドレス部分のみではなく、その前にある”s:83”などと書かれえている数字も修正する必要がありました。”s:82″などの部分は後述のシリアライズされてデータです。

ファイルの属性が変化

ファイルをいったん自分のパソコンにダウンロードして編集してアップロードしていました。
このアップロードの時にFTPツールの設定が悪かった様でファイルが編集できない属性でアップロードされました。
その結果、WordPressの設定変更ができない状態となり、さらに、ファイルの削除もできない状態に。

解決策

ファイルのダウンロードは.zip化されてダウンロードされます。これを解凍せずにそのまま移行先のフォルダへアップロードしてサーバー内で解凍する手段を取りました。ファイルの編集もサーバーに置いたファイルを編集します。(自分のパソコンで編集してもよいですが、該当ファイルのみを編集してそれだけをアップロードすべきかと思います)

変更すべき箇所が多数

引っ越しに関するサイトは多数あります、それぞれに編集すべきデータベース名が記載されています、しかしながらプラグインによっては他にも編集が必要なデータベースも発生してくるようです。
いくつものデータベースでいくつもの置き換え処理とシリアライズの修正が必要になってきます。
ここで、すべてを探して置換してシリアライズされたデータは修正する作業を手作業で行う分けにはいきません。
これを自動で行うツールがいくつかありました

  • プラグインを利用(プラグインに頼りたくないので利用せず)
  • 変換してくれるサイト(セキュリティー的に信頼してよいのか不明なので利用せず)
  • 変換ツールの活用(データベース側が外部からのアクセスできない仕様でNG)
  • .sqlを変換するツール(これを利用)

最終的にはデータベースからダウンロードした”.sql”ファイルに対して処理を行うルーツを利用しました。ソースコードが公開されており、コードとしておかしな部分が無い事を確認

最後に

参考になったでしょうか、私の経験としてこれらのことを書いています。もっと良い方法もあるとおもいますが、一つの成功例として参考になればうれしいです。読んでいただきありがとうございます。

コメント