プラグインを利用しないWordPressサイトのお引越し手順

プラグインがうまく動かない

ファイルデータ容量の増大のためなのか、WordPressサイトのお引越しプラグインを利用しているのですが、うまく動きません。

仕方がないので手動でWordPressサイトの引っ越しをしてみます。

基本的に必要な手順

  1. 移行元データベースのバックアップ
  2. 移行先へデータベースの復元
  3. WordPressデータのコピー
  4. wp-config.phpの編集
  5. データベース内URL文字列の置換

この記事に書いてある事

ロリポップからロリポップへの手動でWordPressサイトを移動する

  • MySQLデータベースの移動について
  • WinSCPでのデータコピー
  • SSHでのデータコピー
  • wp-config.phpの編集について
  • Database Search and Replace Script in PHP を使ったURLの置換について

データベースバックアップ

引っ越し元のDBを開きます。

データベースをエクスポートします

データベースの復元

データベースを新しく作成します。

先ほどの手順でバックアップしたSQLファイルをサーバへインポートします。

WordPressデータのコピー

FTPソフトを利用し、WordPressデータをコピーします。

私は、WinSCPというFTPソフトを利用しています。レンタルサーバを運営している会社が準備しているFTP機能でもできるはずなのですが、私の場合は、WordPressのwp-contents/uploadフォルダが大きすぎてロリポップ!FTPではコピーできませんでした。

ロリポップ!FTPの制限は50Mまで。

他の会社に移行する際にもFTPソフトを利用する必要があるかと思います。コピーするソフトは、WordPressをインストールした際に、できているファイル・フォルダ全てです。

WinSCPでもうまくいかなければSSHで

データ量が多いと、コピーに時間もかかりますが、SSH接続でコマンドでコピーするとすぐに終わります。これは、同じレンタルサーバ内の契約の場合にできる手法です。

ロリポップはSSH接続が許可されているので、SSHで接続しコマンドを利用してコピーする方法があります。こちらはGUIではなくCUIでの操作になります。

[chips.jp-mahikari@users web]$ cp -r tech/ tech02

 

データ量が多くても、ローカルコピーなのでめちゃくちゃ早く終わります。

wp-config.phpを修正する

wp-config.phpを修正します。とりあえず元のファイルをコピーしてバックアップしておき、万一おかしくなったら、そのバックアップから復元して操作します。

wp-config.phpはテキストファイルです。

この作業もロリポップ!FTPでは、名前を変えて同じフォルダに保存する事ができないのでWinSCPを利用しました。

変更する項目は

  • /** WordPress のデータベース名 */
  • /** MySQL のユーザー名 */
  • /** MySQL のパスワード */
  • /** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */

の4つの項目です

.htaccessの編集

ディレクトリ構成が変わる場合は、.htaccessの編集が必要になります

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /新しいディレクトリ/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /新しいディレクトリ/index.php [L]
</IfModule>

# END WordPress

AddType video/mp4 .mp4
AddType video/webm .webm
AddType video/ogg .ogv

php_value memory_limit 128M
php_value upload_max_filesize 100M
php_value post_max_size 100M

 

編集する項目は

  • RewriteBase
  • RewriteRule

の2か所です。

例 https://techlive.tokyo/develop → https://tech-live.tokyo/develop02に変更したい場合

RewriteBase /develop/ → RewriteBase /develop02/

RewriteRule . /develop/index.php [L] → RewriteRule . /develop02/index.php [L]

ドメイン変更のためDB内のURLを置換する

URL置換のためのツールの配置

URLの置換には、「Database Search and Replace Script in PHP」を利用します。

ダウンロードしたら、解凍してできたフォルダをアップロードします。

解凍してできたフォルダは

Search-Replace-DB-4.1.1

アクセスする時に長いので、フォルダ名は

SRD

としました。

置換ツールの使い方

http://URL/WordPressディレクトリ/SRD

にアクセスします。設定は下記の通り

※移行元、移行先URLについて

移行元と、移行先のhttp://, https://が変わる場合、URLには、http://まで含めます。変わらない場合は、http://は必要ありません

例 http://techlive.tokyo/develop → https://tech-live.tokyo/develop02 に変更したい場合

移行元 http://techlive.tokyo/develop

移行先 https://tech-live.tokyo/develop02

例 https://techlive.tokyo/develop → https://tech-live.tokyo/develop02に変更したい場合

移行元 techlive.tokyo/develop

移行先 tech-live.tokyo/develop02

置換ツールをDBに接続

DB関係の値を入れて[Test connection]ボタンを押し、DBへの接続がうまくいくと、Success,You are connected.と緑色で表示されます。

[Ds a safe test run]をクリックすると、置換状態がテストされていきます。

プライマリーキーが設定されていないテーブルが出てきて、Search and Replaceがクリックできない状態。

エラー内容は、

The table "wp8_uam_accessgroups_1-4" has no primary key. Changes will have to be made manually.

The table "wp8_uam_accessgroups_1-5-1" has no primary key. Changes will have to be made manually.

The table "wp8_uam_accessgroup_to_object_1-4" has no primary key. Changes will have to be made manually.

The table "wp8_uam_accessgroup_to_object_1-5-1" has no primary key. Changes will have to be made manually.

 

置換する

テーブルにプライマリーキーがないって。移行元のDBを見てみましたが、元々プライマリーキーがないようです。とりあえず、このテーブルは無視し、もう一度[Test connection]して、[Do safe test run]しない状態で、

Search and Replace してみます。

移行完了!

とりあえず、ホームページ移行完了しました。表示できました。

内部(URL)リンクが切れてる

しばらくして、内部URLリンクが切れている事にきづきました。

こんな時は、プラグインの力を借りてしまいます。(表題と矛盾してるけど)メインはデータコピーでいけるのですが、データベース内に記録してあるURLリンクの文字列を全部一気に変更できるプラグインがあります。

DB操作でこだわってやってもいいのですが、プラグインで済むところはプラグインで済ませます。

Search Regex は、WordPress の投稿、固定ページ、独自の投稿種別、またほかの入力元に対する、強力な検索と置換の機能を追加します。これは WordPress に標準で内蔵されている検索機能を超えており、サイト内に保存されているほぼすべてのデータを検索し置換することができます。単純な検索に加えて、PHP の正規表現を自由に使うことができます。

Search Regexの簡単な使い方

ツール → Search Regex

後は、検索のところに変更したい文字列、置換のテキストボックスに置換後の文字列を入れて検索すれば、置換対象になる文字列が検索されます。

検索ボタンを押すと、対象の文字列を含むページが検索されます。

問題がなければ、「すべて置換」します。

引っ越しの際に使ったSearch Regexプラグインは、その後使う事はないと思います。

プラグインは削除してしまって構いません。