見出し画像

これが俺流 WordPress引っ越し方法

「WordPressでできたどこそこのHP移管して」
「WPのHPを移管したいんですけど」
「ステージング/開発環境いるよね」
こんな依頼が私のところにやってきたりします。
そんな時、何を使ってどうするかを紹介します。

あっ、この記事長いです。
部分的に雑なところもあります。
また更新するので許してください


使うもの

Windows環境でする前提です。

・秀丸(テキストエディタ)

・Devas(一括置換アプリ)

・WinSCP(FTPソフト)

これじゃなくても良いとは思いますが、不測の事態が起こりにくいソフトなのでおススメの1点

Hosts File Editor(IPアドレスの参照先を無理やり変更するソフト)

※DNS切り替え前提の移管の場合は必ず必要
 それ以外の場合はインストールの必要はありません。

phpMyAdmin(MySQL 管理ツール)


※移管先のWEBサーバーに設置。
 元々あればそちらを使用
※自分で設置する場合、DBのリストアにこれを使うと楽なので
 DBデータの肥大化に対応できるように
 upload_max_filesizeを大きくできるとよい。

・BigDump(データーベースインポートツール)

※移管先・移管元のWEBサーバーに設置。
 データーベースのデータ量が多い時に使用
※使えないサーバーもある。

・Search Replace DB(データーベース置換ツール)

※移管先・移管元のWEBサーバーに設置。
 移管先のドメインやインストールディレクトリが異なる場合に使用
※DLサイトにはメールアドレスの登録が必要になりますが、
 登録後に広告メールなどが来たりはしないので安心してください。

それぞれダウンロードしてZIP解凍やインストールを事前に行っておいてください。
一部英語のサイトがありますが気合でDLしてください。

移管の流れ

1. バックアップ(FTP上)を取る

移管元・移管先のどちらもFTP上にある全てのファイルをDL。
SSHが使える環境であれば、公開領域直下のファイルをtar.gz形式で圧縮してからまとめてDLするのが早かったりしますが、コマンドとか何それって人は普通に全部ガッと落としてきても大丈夫です。

2. データーベース(DB)のバックアップを取る

ここからちょっとだけ難しいかも。
移管先のDBバックアップは気になる人のみ取ればいいかと思います。
あればミスった時に復旧できるんで。(やった方がいいですよ。
ここでは移管元だけ取る形とします。

こちらも本当はSSHが使える環境であれば以下のコードにあるコマンドを流せばDBのバックアップファイルが生成されるのですが、
それができない環境である前提とします。

WordPressであればインストールディレクトリに「wp-config.php」というファイルがあるので、そちらにDB情報が記載されています。
まずはそこから、「データーベース名」「データーベースのユーザー名」「データーベースのパスワード」をそれぞれ秀丸に書き込んでおきます。

次に、以下の情報が書き込まれたPHPファイルを作成

<?php
$cmd = 'mysqldump -u データーベースのユーザー名 -p データーベース名 > わかりやすいファイル名.sql --password=パスワード';

exec($cmd, $opt);

echo "<pre>";
print_r($opt);
echo "</pre>";
?>

秀丸にメモした情報を上記のコードに沿ってそれぞれ書き換え、
適当なファイル名を付けてPHPファイルをUTF-8にして作成します。
※環境によってはDBホスト名を必要とする場合があります。
 その場合は-pの隣に半角1文字開けて「-h 127.0.01」などと
 必要なホスト名やIPを記載してください。

作成したPHPファイルを移管元WEBサーバーにアップロード

アップロードが完了しましたら、そのファイルに対して
WEBブラウザでURLを叩いてアクセスします。
アクセス後に配列などが表示されますが
無視してブラウザを閉じてください。
そうすると、PHPファイルをアップロードした同じ領域にFTPで覗くと
「わかりやすいファイル名.sql」が出来ているかと思います。
※生成されるファイル名は英数字になるように必ず書き換えてください。
 バックアップがとれた後は削除するのですが、2バイト文字で生成された
 ファイルは環境によってはエラーで削除できなくなったりします。
これを自分のPC環境の任意のディレクトリにDLしてバックアップとします。

これで、
・移管のデーターベースのバックアップ
・移管のFTP上からバックアップしたWordPress丸々のファイル
・移管のFTP上からバックアップした諸々のファイル
のおよそ3点のバックアップが取れたと思います。
これらはわかりやすいようにお使いのPC上でそれぞれ保管してください。

3. 移管先にアップロードするファイルの準備

先ほど移管元からFTPでDLしたファイルをディレクトリごとコピーし、
アップロード準備ファイルとします。

Devasを使ってアップロードするファイルに変な記述を排除するためや、移管先で思い通りに動いてもらうために置換作業をします。

※置換とは、ファイルに記載されている文字を違う文字に置き換える作業です。

起動するとこんな感じです。

Devas 検索画面

先ほどコピーしたディレクトリパスを
「対象ファイル/フォルダ」に記載もしくはコピぺし、
対象ファイルの条件を画像の状態にします。
「サブフォルダも検索」にチェックを入れ、検索文字列に文字を入力すると、ゴゴゴゴゴゴゴって感じで検索してくれます。

検索文字列入力例:test、var_dump、移管元でしか使えないような絶対パス
移管元のドメインなど

検索結果画面で置換したい対象がザッと出てくるので
移管先で動けるように消すなり書き換えるなどします。

この段階でもし、移管先のデーターベースがない場合は
新規で作成しておいてください。

4. いざアップロード

WinSCPを使ってさっき置換したファイル達を上げたい場所にガンガン上げます。
また、このとき、phpMyadminがなければ一緒に上げます。
Search Replace DBも上げます。(DB置換の必要がない場合はこの限りではありません)
何か適当にディレクトリ名つけて上げてください。

4.1. データーベース置換(簡易版)

この作業は条件によってするか否かが分かれます。
・移管するWordPressのテーマファイルが自作である
・記事を作成するのに単なるビジュアルエディタを使っている
そうでない場合はこの作業をスキップして4.2に進む

バックアップとして生成したデーターベースは文字列がいっぱい詰まった1つのファイルになっています。
これによりデーターベース上の内容がテキストエディタによって視覚化できるんです。
上記の条件によっては直接下記の形で書き換えることで、
移管先のデーターベースや環境に応じて柔軟に調整できます。

やり方は次の通りです。
秀丸使って直接sqlファイルを開き、キーボードのCtrl+rキーを押すと
ダイアログボックスが開くので上に置換前の文字列を入れ、
その下に置換したい文字を入力してGO!!!!!
ギャァァァァァって置換されるので
できあがれば保存してください。

秀丸を起動して「Ctrl+r」を押したときの図
置換したい文字列を「検索」部分に入力し、
その下の「置換」部分に書き換えたい文字を入れ、
その右のボタンで「全置換」を選んでください。

※間違った場合はCtrl+Zで戻れます。
戻り方も秀丸がどうするか聞いてくるのでそれに従って戻ってみてください。
完了しましたら6へ進んでください。

4.2. データーベース置換(ちょっとややこしいかも)

簡易的に調整できない場合の作業はこちらです。
条件としては
・テーマファイルがSWELLとかのフルサイト編集系のものを使っている
・記事を作成するのにグーテンベルク使っている
・何か判断できない
です。

やり方は次の通りです。
・何も考えずにとりあえず移管先のデーターベースに
先ほどアップロードしたphpMyadminを使ってデータをリストアする
ここのやり方は一瞬だけ5の部分を見てください。

・Search Replace DBを使って移管先に合うように置換する
4でアップロードしたと思います。
とりあえずブラウザからSearch Replace DBにアクセスします。
操作方法は以下の内容が分かりやすいです。

これらが終わればほぼ完了です。
6へ飛んでください。

5. データーベースリストア

先ほどアップロードしたphpMyadminにブラウザからアクセスし、移管先のDBのユーザー名とパスワードを使ってログインします。
そして、

  1. データベース管理ツール画面上の「データベース」をクリックします

  2. 作成済みのデータベース名をクリックします

  3. 「インポート」をクリックします

  4. アップロードファイルの「参照」ボタンをクリックし、コンピューター上にあるバックアップファイルを選択します

アップロードした瞬間
ほぼ完了しています。

6. 確認

新規サイトや、単に移管先にディレクトリ分けてインストールしただけなどであれば、移管はここで完了です。
お疲れ様でございます。
そうでない場合はDNS切り替え作業が必要かと思いますので
Hosts File Editorを使って移管先のIPアドレスを入力して確認します。

7. 完了

6番で問題なければDNSを切り替えてください。
数時間から数日で完了するでしょう。
※FTPでアップロードしたphpMyadminとSearch Replace DBは削除してください。
そのままだとそれぞれ単なるフリーソフトなので
もしかすると脆弱性を突かれて攻撃される可能性があるかもしれません。
気を付けて削除してください。

いやぁお疲れ様でした。
ここまで読んでくれてありがとうございます。
記事書くって大変ですね。
遅すぎるとも思いますが少しずつ勉強します。
先輩方はすごい。

やらかした話 ー 大体DB破壊

phpMyadminのみでバックアップとインポートを完結させるとDBの一部が欠損してしまう

⇒DB移管の方法が自分でよく確立できてない時代に上記の方法でHPを消してしまった。
悲しかった。これは全部の記事などをキャッシュやアーカイブサイトから寝ずに手でコピってなおしました。

インポート先のDBを稼働しているDBと間違ってインポート

⇒たまたま全部テーブル名が違ったから消えることはなかったけど生きた心地しなかった

社内DNSに変更前WEBサーバーのIPアドレス書いてる悪い人がいた

これはDBでも移管の手順などの問題でもなく
これに気が付くのはマジで大変でした。
ほんまやめて欲しい。

キャッシュ系プラグインやそれらの機能はバックアップ前にOFFすること

これにハマった時焦った。
何を置換しても移管前のサイトが表示されるんです。
また、DB置換作業中にはこれらのデータはヒットしないのでわかりにくい。
バックアップする前にキャッシュ削除するかプラグインなら無効化して公開後に設定することをお勧めします。
※大丈夫かはわかりませんが、移管作業完了後に単にキャッシュ削除でも動くっちゃ動きますが僕は不安なので最初から上記のスタイルがいいと思います。

DBのバックアップ取ったら100M以上

フルサイト編集系のテーマを使っていると、結構な確率で遭遇しますね。
そうすると、phpMyadminではインポートできなくなる場合があります。
WEBサーバーによっては100M近くのデータを上げるだけで大体固まるか落ちることもあるかと思います。
※レンタルサーバー会社が用意しているphpMyadminを使う場合はよく見られる気がしますね。
そうでなければpost_maxサイズを上げるなどで大抵は対応できるんですけどそうもいかないこともありますよね・・・
で、どうしてもうまくいかなくなった時に使うのが「BigDump」です。
ここで書いてしまってすみません。
使い方は以下のサイトがわかりやすかったです。

ここにハマったら落ち着いて上記を試してください。

DBバックアップのためにDUMPしたら1回目は不完全ファイル

よーしバックアップ取ったしリストアするぞーってmysqlでインポートしたら何回やっても完了しない。
挙句の果てmysql落ちたり・・・
落ち着いてもう一度DUMPしてインポートするとうまくいったりする。
基本はスルっとリストアできるはずなので時間がかかりすぎる時は落ち着いてやりなおすとよい。

これらの部分は思い出したらまた更新します!
ではでは!

この記事が気に入ったらサポートをしてみませんか?