わかる、なるほどなIT知識。ドメインと変える、サイトの価値。NoteWordPressを別サーバに移行する場面がありますが、その内容によって移行方法が若干異なります。この若干の差異が曲者で面倒なところです。Migration」を使って移行できます。WordPressのファイルとデータベース(Export/Import)を扱える方はそのままコンテンツ一式を移動しても可能です。バリュードメインでは、WordPress移行サービスがあります。Domainで提供されているサーバに移行できます。DomainのWordPress移行サービスは、All-in-Oneツールを使い、遠隔で移行元のWordPressのファイルとデータベース内容を取得しているようです。Migration」プラグインが入っている必要はありません。上手くいけばすごく簡単に数Gバイト程度のコンテンツであれば数分で移行できます。Plusのサーバで試したところ場合により移行エラーが発生しましたが、何度か実施すると成功しました。想像ですが受け入れ側のサーバが過負荷だったものかと思われますが詳細は不明です。移行エラーが起こった場合は時間を空けて試してください。それでも失敗する場合はサポート連絡窓口がありますのでそちらへお問い合わせ下さい。今回、紹介するのは移行元と移行先のURLが異なるもしくは、移行元と移行先の設置ディレクトリーが異なる場合です。筆者が採用している方法で少し上位者向けとなりますが、WordPressのデータ構造も少しだけ述べますので参考にしてください。自サイト内で同じコンテンツを別ディレクトリーに作成する場合4.最後に1.【WordPressの構造】URLが変更になる場合にそれぞれに移行パターンが異なりますが、どのパターンにせよ移行元のWordPressのコンテンツを取得する必要があります。WordPressのコンテンツとは、WordPressのファイル一式とデータベースから構成されます。WordPressはPHP言語で記述されています。管理者用でホームページの各種設定や記事を書くためのプログラムが入っています。基本プログラムフォルダーディレクトリー直下には上記以外のphpファイルがありますが、移転の設定で重要なものは.htaccess,index.php,wp-config.phpの3ファイルです。※移転先で動作しない場合はほぼこの3つのファイルの変更が間違っている場合が多い。1-2.データベースWordPressの設定情報や記事はデータベースに保管されています。プラグイン自体が利用するデータも同様です。phpMyAdminが使えるユーザであればデータベースの中身を参照できます。WordPressのテーブル名はデフォルトでwp_の接頭辞(プレフィックス)が付いています。※システムによっては違う文字列が付与されます。WordPress作成時に独自に設定することもできます。Typeのテーブルで今回は関係ありません。記事はwp_post、設定情報はwp_optionsというテーブルに格納されています。移行先のURLが変更になる場合、このwp_xxxxxテーブルのURLの文字列が関係するところを全て書き換える必要があります。単純にURL文字列が保存されていればそのまま旧URLから新URLへ書き換えればよいのですが、テーブルによってはデータがシリアライズ化されており、これを考慮して書き換えが必要になります。1-3.シリアライズとはシリアライズとはアプリケーション内部で扱っているデータをそのまま保存、取得してデータ変換できることをいいます。WordPressでは、wp_options中に例えば、www.picolix.jpという文字列は、a:1:{i:0;s:14:"www.picolix.jp";}のような文字列として格納されています。aは配列で次の数字は要素数(0から始まるのでこの場合2つ)です。iはinteger型で数値を表します。sはString型で文字列を表し、次の数字は文字数です。こんな面倒なデータをデータベースに入れているかというとデシリアライズ(アンシリアライズ)する時にアプリケーションは、そのまま配列データとして利用できるところにメリットがあります。上記をデシリアライズすると、内部では以下の配列変数として取り込めます。"www.picolix.jp"}業務系でデータベースを扱ってこられた方にはなんて面倒なことをしているとか、データベースをデータベースとして扱っていないじゃないと思われるかとも多々ありますが、そういう構造をしております。www.picolix.jpをop.gyに移設する場合、このデータは、a:1:{i:0;s:5:"op.gy";}に書き換える必要があります。文字列数を計算して数字部分も書き換える必要があるのです。DBツールは自動計算して書き換えてくれます。移行元のデータベースの例では以下とします。データベース名:wp2022ユーザ名:blogパスワード:1234567890不明な場合は、wp-config.php中の'DB_NAME'、'DB_USER'、'DB_PASSWORD'を確認してください。以下のいずれかの方法でWordPressのデータベースを取得します。方法1:WordPressのBackWPupプラグインで取得する場合は、BackWPupメニュー画面で「データベースのバックアップをダウンロード」をクリックすれば、取得できます。方法2:phpMyAdminが使える場合は、対象のデータベースを選択して「エクスポート」‐「実行」で取得できます。※この場合、出力された内容には表を作る(create)する前に表を削除(drop)するSQL文が入っていません。可能なオプションをすべて表示」で設定することができます。どちらでもかまいません。方法3:サーバにログインしてmysqldumpコマンドを実行する。/tmp/wp2022.sqlで出力できます。一つのデータベースに複数のWordPressや他システムのスキーマが混在している場合は、データベース丸ごと取得すると他のものも同時に取得してしまいます。その場合はWordPressのテーブル名に接頭辞(レフィックス)が付いていますのでwp_を検索して出力することもできます。システムによってはデフォルトのwp_以外に独自の接頭辞を付与する場合もあります。以下のいずれかの方法でWordPressのファイル一式を取得します。「宛先:フォルダー」タブが生成されます。※デフォルトではuploads/backwpup-xxxxx-backups/のようなフォルダーがセットされます。YYYY-MM-DD_HH-MI-SS_XXXXXXX.zipのようなバックアップファイルができますので、FTP,SFTPあるいはwebインターフェースのファイルエクスプロラー等で取得して下さい。※デフォルト設定では、YYYY-MM-DD_HH-MI-SS_XXXXXXX.zipにデータベースのエクスポートデータも含まれていますので、この場合個別にBackWPupでデータベースのバックアップをする必要はありません。方法2:FTP,SFTPあるいはwebインターフェースのファイルエクスプロラーでドキュメントルート配下にあるWordPressのフォルダーを丸ごとダウンロードしてください。方法3:サーバにログインしてWordPressのフォルダーを圧縮してダウンロード。ドキュメントルート配下にあるWordPressのフォルダーを圧縮してダウンロードします。blog/以上、ご自身のサーバ環境に合わせてバックアップを取得してください。WordPressのデータベースとファイルのバックアップさえあれば、復元、移設が可能になります。2-3.移行先にWordPressデータベースを作成し移行元データをインポートサーバでmysqlコマンドでWordPress用の空データベースとアカウントを作成します。(phpMyAdminのツールで画面からも操作できます)データベース名は移行元と同じ名前でも、違っても構いません。例ではデータベース:wp2022で作成します。'パスワード');を後で適宜変更する必要があります。mysqlコマンドだけでログインできます。OPTION;データベースとユーザを作成できたらデータのインポート(phpMyAdminのツールで画面からも直接インポート操作可)を実施します。DBをホームページに設置します。このツールはデータベースの中身を書き換えてくれるツールで、シリアライズされたデータにも対応しています。https://github.com/interconnectit/Search-Replace-DBから「code」‐「Download-Zip」でツールをダウンロードする。ダウンロードしたファイルをホームページに展開して、ブラウザで「https://ドメイン名/Search-Replace-DB-master/」にアクセスして以下のような画面が表示されればインストールは完了です。※移行元と移行先のphpバージョンはなるべく合わせておく。※セキュリティー上、不正アクセスされないためにも最終的にはこのツールは移行が完了した後は必要ないので削除してください。ツールの画面の[Delete]ボタンで自身を削除できます。手動でファイル削除する。2-3でインポートしたデータベースにアクセスできるかを確認します。※もしデータベースサーバが違うサーバにある場合はそのホスト名を指定してください。※デフォルトのポート番号以外を使っている方はそのポート番号を指定してください。Connecton」を実行してエラーがなく、他のボタンが有効化されれば正常にアクセスできています。されない場合はエラーメッセージを確認して適切なデータベースの情報を入力して再テストしてください。/blog_test上記の例でWordPressの移行パターンによって解説します。3-1.ドメイン名を変更しURLとディレクトリー構成は変わらない場合URL変更タイプ別パターン1の場合です。1.移行先へWordPressファイルの展開を行います。YYYY-MM-DD_HH-MI-SS_XXXXXX.gz(またはYYYY-MM-DD_HH-MI-SS_XXXXXXX.zip)を移行元と同じディレクトリー(トップディレクトリー配下)に展開します。(ファイルのオーナー、権限は必要なら適宜変更してください)2.移行先のURLにデータベース中のURLの文字列を書き換えます。ブラウザで「https://ドメイン名/Search-Replace-DB-master/」にアクセスして変更します。パターン1ー2の場合を記載します。Connection」を実行して他のボタンを有効化します。・//www.picolix.jp/blogを//op.gy/blogに置き換えます。run」を実行し、どのように置き換わるかシミュレーションします。changes」のリンクをクリックすれば置き換え後の内容が分かります。Replace」を実行して書き換えを行います。・同様に、www.picolix.jpをop.gyに置き換えます。Replace」を実行して書き換えを行います。最初から、www.picolix.jpをop.gyに置き換えても良いですが、途中の状態を都度確認しながら今回は2回変換しました。移行先のホームページ、管理画面が正しく表示されるか確認をしてください。ドメイン名を変更しURLもディレクトリー構成も変わる場合URL変更タイプ別パターン2の場合です。この場合.htaccess,index.php,wp-config.phpの書き換えが必要になります。1.移行先へWordPressファイルの展開YYYY-MM-DD_HH-MI-SS_XXXXXX.gz(またはYYYY-MM-DD_HH-MI-SS_XXXXXXX.zip)を移行元とは違うディレクトリーに展開する。(ファイルのオーナー、権限は必要なら適宜変更してください)2.移行先のURLにデータベース中のURLの文字列を書き換えます。」にアクセスして変更します。方法は前述と同様です。URLはhttps://op.gy/です。/virtual/lisa/public_html/op.gy/がホームディレクトリーとします。/virtual/lisa/public_html/op.gy/.htaccessを以下に書き換えます。[L]を以下の様に修正します。'wp-settings.php');この設定であればこのまま。違う場合は上記の設定にします。以上で完了しましたので、移行先のホームページ、管理画面が正しく表示されるか確認してください。URLはhttps://op.gy/です。・/virtual/lisa/public_html/op.gy/.htaccess以下に書き換えます。[L]を以下の様に修正します。[L]・/virtual/lisa/public_html/op.gy/にindex.phpを設置する。/virtual/lisa/public_html/op.gy/blog2/index.phpを/virtual/lisa/public_html/op.gy/index.phpにコピーします。・/virtual/lisa/public_html/op.gy/index.phpの内容を修正する。'blog2/wp-blog-header.php';に修正する。'wp-settings.php');この設定であればこのまま。違う場合は上記の設定にします。・データベースのwp_optionsテーブルのサイトURLとホームディレクトリーを変更します。https://op.gy/に書き換える必要があります。この項目はシリアライズされていませんので、文字列を書き換えるだけで良いです。phpMyAdminのツールから書き換えるか、mysqlをサーバ上で実行してSQLで書き換えます。commit;2-3は2-2と同手順で移行できます。管理画面URLはhttps://op.gy/blog2/wp-admin/になります。以上で完了しましたので、移行先のホームページ、管理画面が正しく表示されるか確認してください。自サイト内で、フォルダーを移動したり、あるいはフォルダーを違う名前でコピーしてデータベースも分けてテストサイトを作る場合も同様の手法で実施できます。(マルチサイトではなくてデータベース自体も分けます)ここでは、パターン3ー1の場合で、https://op.gy/を同内容でhttps://op.gy/blog_testでテストサイトを作りたい場合を記載します。./blog2にWordPressがあったとして、前回と同様にコンテンツとDBを取得します。2.データベースは新たにwp2022testとして空DBを作ります。3.WordPressのアクセスユーザも分かりやすいように新たにblogtestユーザを作成します。phpMyAdminのツールから作成するか、mysqlをサーバ上で実行してSQLで作成します。OPTION;4.wp2022testにデータをインポートします。wp2022.sql5.コンテンツを/virtual/lisa/public_html/op.gy/blog_testに展開します。6.Search-Replace-DB-master/で//op.gy/を//op.gy/blog_testに書き換える7.データベースのwp_optionsテーブルのサイトURLとホームディレクトリーを変更します。https://op.gy/に書き換える必要があります。[L]その他、注意事項、プラグイン、テーマファイルにURLを絶対パスで書き込んでいる場合は、別途変更が必要です。最後に移行してホームページ画面がデータベース接続エラー、画面が真っ白、404エラー、internalエラーが出た場合は以下の項目を見直し対処することで表示されるようになります。リダイレクトの情報が記載されています。管理画面から操作すると自動で生成されます。インストールディレクトリとは異なる場所を設定する場合はサイトトップにindex.phpを設置する必要があります。管理画面から操作すると自動で生成されます。データベース情報が記載されています。siteurlとhomeの文字列が格納されています。サイトの移行や同サイトに別途テストサイトを立ち上げたい時に参考にして下さい。Domainの提供サーバへ同URL、同ディレクトリーの移行であれば、必要な情報を入力した後、ボタン一つで移行もできますので重宝します。】のcomドメイン新規登録割引やドメイン・サーバー同時契約でドメイン更新費用永久無料!(年間最大3,124円お得)などお得なキャンペーン実施中です。お得なこの機会にご利用ください!最新のキャンペーンはこちらから※ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。メーカーで制御器系システム開発を経てIT系マルチエンジニアをしています。デザイン思考を実践し、アート思考などのいろんな思考方法に興味があります。レンタルサーバーや、SSL証明書などを提供するドメイン・ホスティング総合サービスです。