【Search Replace DB】WordPressをローカル環境から本番サーバーのルートへアップする方法

ローカル環境で作成したWordPressを、本番サーバーへ移行する。移行先はスタンダードに本番サーバのルート直下とする。なお、プラグインは使用せず、データベースに保存されたURLの書き換えはSearch Replace DBを使用する。

移行元と移行先の環境の確認

移行元のローカル環境でドメインのルート直下に作成したWordPressを、本番サーバーのルート環境へデプロイする。

環境ローカルサーバー
ディレクトリルート直下ルート直下
サーバーLocal by Flywheelレンタルサーバー
MySQL管理ツールAdminerphpMyAdmin
テーブル接頭辞wp_wp_
URL置換Search-Replace-DB

WordPressをローカル環境から本番サーバーへアップロードする手順

移行先の環境を準備する

データベースを新規作成する

本番サーバのphpMyAdminは、レンタルサーバ側でデータベースの新規作成機能が制御されており、phpMyAdmin上でデータベースを新規作成できなかった。

そのため、レンタルサーバのコンパネからベータベースを新規作成した。

この時、移行先環境のMySQL設定はメモしておくと良い。

データベースURLhttps://XXXXXX.XXX/
データベース名XXXXXX
MySQLユーザXXXXXX
パスワードXXXXXX
文字コードUTF-8

ローカル環境のWordPressフォルダをコピ

ローカル環境のWordPress作業フォルダをデスクトップなどに複製する。

コピーしたフォルダ内のwp-config.phpと.htaccessを編集する

ローカル環境でコピーしたフォルダの構成はこのようになっている。

  • 作業フォルダ
    • wp-admin
    • wp-content
    • wp-includes
    • .htaccess //こちらを編集する
    • wp-config.php //こちらを編集する

まず、wp-config.phpをエディターで開き、本番用に作成したデータベースの設定のとおりに編集する。

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'XXXXXX');

/** MySQL database username */
define('DB_USER', 'XXXXXX');

/** MySQL database password */
define('DB_PASSWORD', 'XXXXXX');

/** MySQL hostname */
define('DB_HOST', 'XXXXXX');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

.htaccessについては移行先のルート直下にアップロードするので、以下のまま修正を行わない。

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

本番環境へ資材をアップロード

WordPressフォルダをレンタルサーバへアップロードする

本番サーバとFTPで接続し、複製したWordPressフォルダをルート直下にアップロードする。この時、作業フォルダの中身のすべてをアップロードする。

  • 作業フォルダ  //アップロードしない
    • wp-admin //アップロードする
    • wp-content //アップロードする
    • wp-includes //アップロードする
    • 各ファイル //アップロードする

ローカル環境のデータベースをエクスポートする

ローカル環境のAdminerにアクセスし、エクスポートするデータベースのテーブルを選択し、エクスポートをクリックする。

出力を保存とし、形式をSQLを指定する。ほかの項目はデフォルトで良い。

拡張子が.sqlのファイルがダウンロードされる。

本番サーバにデータベースをインポートする

本番サーバのphpMyAdminを開く。

さきほど作成したデータベースをクリックし、インポートタブを表示する。

インポートするファイルで、ローカル環境からエクスポートしたファイルを選択し、実行をクリックする。

データベースのインポート完了

データベースを置換

Search-Replace-DBをアップロードする

URLの書き換えを行うため、Search-Replace-DBというフリーツールをダウンロードする。

Database Search and Replace Script in PHPへアクセスし、Search-Replace-DB v4.1.2から最新のSearch-Replace-DBをダウンロードする。Search-Replace-DB-4.1.2の末尾についているバージョン番号4.1.2は適宜読み替えること。

Search-Replace-DB-4.1.2.zipというzipファイルをダウンロードできるので解凍する。解凍したフォルダの構成は、

  • Search-Replace-DB-4.1.2
    • Search-Replace-DB-4.1.2 //フォルダごとアップロードする
      • tests
      • .editorconfig
      • .htaccess
      • index.php
      • etc

とこのようになっているので、Search-Replace-DB-4.1.2フォルダを、本番サーバのpublic_html直下(wp-contentと同階層)にアップロードする。

本番サーバの構成は次のようになる。

  • public_html
    • Search-Replace-DB-4.1.2
    • wp-admin
    • wp-content
    • wp-includes
    • 各種ファイル

URLを書き換える

Search-Replace-DBの操作画面である、https://XXXXXX.com/Search-Replace-DB-4.1.2/index.phpへアクセスする。

入力項目は以下の通り。

SearchReplace

replace置換URL
with置換URL

Database Details

database nameデータベース名
usernameデータベースのユーザ名
passデータベースのパスワード
hostホスト名
portポート番号

ポート番号は省略可能。MariaDB5 の場合は 3306、MariaDB10 の場合は 3307を試す

入力が完了したら、Test connectionボタンをクリックして、データベースに接続する。成功すると、Success. You are connected.と表示される。

次に、Let's goの右横にある、Do a safe test runボタンをクリックする。これは試行運転なので実際に置換は行われず、安全に置換が行えるかどうか検証することができる。

問題なければ、Let’s goの欄にあるSearch and Replaceボタンをクリックして、置換を実行する。

Search-Replace-DBを削除する

Search-Replace-DBがサーバー上に残っているとセキュリティ面で脆弱性となるため、速やかに削除する。

削除の方法は、DELETEの右横にあるdelete meボタンをクリックする。

削除が成功すると、アカウント登録を求められるがスルーで良い。

ただこれだけではサーバー上に残骸が残ることがあるので、必ず確認しサーバーからもSearch-Replace-DB-4.1.2フォルダを削除する。

本番URLへアクセスしよう

本番URLへアクセスすると、WordPressの移行が完了した状態(ローカル環境と同一)で表示される。もしもローカルのURLへリダイレクトした場合などは、キャッシュを削除すると良い。

以上で、ローカルからサーバーへ移行が完了する。画像の読み込み元がローカルになっていないか、リンクが適切に置換されているか確認すると良い。

またWordPressテーマがブロックテーマの場合は、テーマフォルダのドメイン部分も移行先の内容に置換する必要がある。