前回はもともと公開していたサイトがPHP5.4で動いていて、そのサーバーにPHP8のサーバーで構築していたWPを移管するために、まずは現存のサイトをPHP8に対応させ、公開にまで至ったというお話でした。

なぜこれをしたかったというと、新しいサイトを移管させるまでは現在のサイトを公開しておきたかったということが主な目的です。

さて、今回は別サーバーからのWP移管です。

まずは別サーバーにFTPでWPのデータをごっそりダウンロードします。uploadsやpluginsのデータなどが多ければかなりの時間がかかりますので、しばらく待ちます。

その間に、DBデータをエクスポートします。

ここで個人的にやっていたこと、それはwp_postsのコンテンツデータは別にしておくことです。

それは、記事内にメディアから挿入したりした場合、ソースを示すパスは絶対パスになっていたりします。移管するサーバーに同じような構造で構築されていたとは限りませんし、ドメインも違います。

そのため、DBを後にインポートするときはwp_postsのテーブルは作っても空の状態にし、wp_postsのデータをテキストエディタで対象の文字列を今回移管する形に合うよう文字置換してからインポートすると、あとでWPにログインして一記事ごと確認する手間が省けます。

ダウンロードが終了したら、前回のアップロードと同じ手順で行います。サーバーのルートディレクトリに今回のWPをアップロードするためのフォルダを用意し、そこにデータすべてアップロードします。フォルダごとアップロードして後でフォルダ名変えるという方法でも良いです。

 

// 例:hagahagaというフォルダ名
//サーバールート htdocs
htdocs / hagahagaフォルダ ← この中にWPデータをアップロード

 

アップロード終了したら、そのフォルダに入り、.htaccessの編集を行います。

 

// wpフォルダ内にある.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /hagahaga/ ← /だけからフォルダ名追加
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /hagahaga/index.php [L] ← /だけからフォルダ名追加
</IfModule>

 

そのままついでに同じフォルダ内にあるwp-conrfig.phpを開き、DB接続情報を編集します。

 

これらが終わったらDBをインポートします。

ここで再度確認しておきたいのは、PHPのアップロード容量がどれくらいあるか。前回までにphp.iniの編集ができるのであればアップロードの容量制限を大きくしておくとよいというお話しました。これができているとすんなりアップできたりしますが、デフォルトで低いままだと、もし移管元のDBデータが大きいとインポート失敗することがあります。

もしこのようなことがあれば、まずはテーブルをクリエイトするデータと、インサートするデータに分けておくとよいと思います。

今回実際にインサートデータで不具合があり、途中で止まりうまくインポートできないということがありました。どこに不具合があるか調査しながらでは時間がかかりましたので、テーブルとデータを分けでインポートすると少しは楽になるかと思います。

 

DBインポートが完了したら、wp_optionのsiteurlとhomeを編集します。

移管先のドメインと、アップロードしたフォルダ名を含んだURLに変更します。

 

// URLがhttps://hagahaga.comだった場合
siteurl : https://hagahaga.com → https://hogehoge.co.jp/hagahaga

 

こうすることで、現在公開中のサイトとフォルダが違うため、ドメインの後にフォルダ名つけたURLをブラウザに入力することで、今回移管したWPを確認することができます。

 

// 現サイト確認する場合
https://hogehoge.co.jp

// 新サイトを確認する場合
https://hogehoge.co.jp/hagahaga

// ログインする場合
https://hogehoge.co.jp/hagahaga/wp-login.php

 

これでログインできたら不具合がないかブラウザ見ながら確認し、調整していきます。

もじ問題がなければ、ドメインを新サイト側に適用する作業をします。

管理画面に入り、設定 > 一般 にあるサイトアドレスを変更します。

 

https://hogehoge.co.jp/hagahaga → https://hogehoge.co.jp

 

そして、サーバーのルートディレクトリにあるindex.phpの内容を一部変更します。

 

// htdocsにコピペしたindex.php
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' ); //
↓
require( dirname( __FILE__ ) . '/hagahaga/wp-blog-header.php' ); // 新サイトのフォルダに変更

こうすることで、https://hogehoge.co.jpとブラウザに入力すると、データの読み込み先がhogehogeからhagahagaに切り替わり、新サイトデータを読み込みします。

もしこれで前サイトが表示するのであれば、編集したデータが間違い、キャッシュが残ってるなど考えられますので、もう一度確認してみてください。

前サイトは、ドメインの後にwpフォルダ名つけることで、確認することができるので、過去情報を確認したいということも可能になると思います。

 

以上で今回のWP移管作業が終了となりました。