メニュー 閉じる

WEB で公開中のWordPress サイトをローカル環境で再構築する。

WEB で公開しているWordPress(以降、WP)で作成したブログサイトをローカル環境にて再構築する手順を検証しています。

目的は、WP サイトのバックアップの内容に問題がないかの確認を兼ねつつ、検証環境も作ることです。

WEB で公開中のWordPress サイトをローカル環境で再構築する。

再構築に必要なので、準備するもの。

  • WordPress がインストール可能な環境のサーバー
    • Apache、PHP、データーベース などのWP 動作に必要なものがインストールされている。
      (新規でWP をインストールして動けばOKだと思います。)
  • 再構築するWP サイトのバックアップデータ
    • WP のインストールフォルダ
    • データベースのエクスポートデータ

再構築の手順

  • WordPress インストールフォルダのコピー
  • データベースのインポート
  • wp-config の編集
  • (必要に応じて)Apache の設定など

WordPress インストールフォルダのコピー

ダウンロードしたWP インストールフォルダをApache のドキュメントルートに設定されているフォルダ以下へ移動。

この時、サイトURLが「localhost/フォルダ名」になります。

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

新規でデータベースを一つ作成し、インポートタブからバックアップしたファイルをインポートします。

新規作成をクリックし、データベースを作成するの画面で、データベース名と、照合規則を入力(WEB サイトのものに合わせればいいと思います。)し、作成ボタンをクリックします。

新規作成したデータベースを選択して、インポートタブをクリック。

デフォルトだとインポートできるファイルの最長(最大値)が2M しかないので、以下の設定をしてファイルサイズを変更します。
(サイズ的に足りている、既に拡張済み、最初から大きい、という場合は不要な手順です。)

※インポートするファイルサイズが上限(最長)より大きい場合は、php.ini ファイルを編集して最大の値を変更して下さい。

php.ini ファイルで下記の設定値を変更します。

#php.ini
post_max_size = ***M
upload_max_filesize = ***M

ファイルサイズの問題がクリア出来たら、気を取り直してインポート。

ファイルを指定してOK すると、選択したインスタンスにテーブルがインポートされます。

さらに「タイムアウトしました・・・」のエラーが出る場合はこちらが参考になれば。

[phpMyAdmin]スクリプトがタイムアウトしました。完了させたいのであれば同じファイルを再送信すればインポートが再開されます。

URL の変更

WP サイトのURL をローカル向けのURL に変更します。

また、大概のWEB サイトはSSL 接続なので、ローカル環境がSSL 接続に対応していないのなら、ここでWP サイトのURL を「HTTPS」から「HTTP」へ変更して非SSL 接続への変更が必要になる(・・・はず。)という訳です。

この場合、SSL 接続じゃないとダッシュボードにアクセスできないので、データベースの値を直接変更して、サイトのURL を変更してしまいましょう。

ちなみにSSL 接続にすれば、URL を直打ちしてダッシュボードにアクセスし、URL を変更することが出来ます。

データベース上でURL の値が保存された箇所は、下図のようにサイトのURL を検索することでとあっさりと見つかると思います。

ダブルクリックすると値が編集できますので、ダブルクリックしてローカル向けのURL に変更します。

まずは、「HTTPS」を「HTTP」に変更します。
 →非SSL 化されます。

次に、アドレスの部分を修正。

デフォルトでは、
「<Apacheインストールフォルダ>\htdocs」フォルダ が、
「http://locahost」のURL になるので、htdocs 直下にWP インストールフォルダをコピーした場合、
「http://locahost/<WP インストールフォルダ名>」
がサイトのアドレスになります。

私の場合は、「http://localhost/zapping_backup」になりますね。
「localhost」は自分自身を指すURL なので、自分以外の他のローカル上の端末からこのサイトにアクセスしたい場合は、localhost の部分をホスト名に変更します。
例えば、http://localserver.co.jp/zapping_backup こんな感じで。

データベースの参照情報の変更。

コピーしたWP のインストールフォルダ内にある、wp-config.php の下記の設定値をローカル環境に合わせて編集します。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
 /** WordPress のためのデータベース名 */
 define('DB_NAME', 'local-db'); データベースのインポート先
 /** MySQL データベースのユーザー名 */
 define('DB_USER', 'sqladmin'); インポートしたデータベースにアクセスできるユーザー
 /** MySQL データベースのパスワード */
 define('DB_PASSWORD', '**********'); 同パスワード
 /** MySQL のホスト名 */
 define('DB_HOST', 'localhost'); MySQL のインストール先による。

php.ini にて、mbstring を有効化します。
その他のphp の設定もレンタルサーバーの設定と合わせると良いと思います。

Apache を再起動。

この時点でサイトのトップは閲覧可能、ダッシュボードにアクセス可能。になると思います。

早速、WP サイトへアクセスしてみましょう。
ローカル環境はWEB から切り離した状態で検証しないとうっかりWEB 上のサイトにつながったりしますので、ご注意ください。

ただし、パーマリンクが「日付と投稿名」だと記事が見れない、ページ遷移できないという、現象が起きるかもしれません。(環境に依存する問題なので。)
簡単な対策としては、パーマリンクを「基本」に設定することで解決すると思います。

パーマリンクの問題

以下は、私の環境でそれが起きた時の対処内容のまとめです。
パーマリンクを基本以外で使用したい場合は、参考になるかもです。

現象

パーマリンクが「日付と投稿名」だと記事が見れない、ページ遷移できない。

見られない(日付と投稿名)
localhost/zapping_backup/2020/12/16/where-is-share-folder-in-linux-centos/

見られる(基本)・・・ID による参照
localhost/zapping_backup/?p=11883

ID による参照では問題ないところを見ると、URL の変換の問題か、URL がデータベースに書き込まれているか、です。

投稿名については、書き込まれているのを見つけましたが、以前のURL が書き込まれている様子は見当たりません。

調べていくうちに、浮かんできたのが以下の2つ。

Apache のhttpd.conf の設定「AllowOverride」を「all」に設定する。

mod_rewirte の導入。

モジュールが同梱されていることは確認したので、httpd.conf でrewrite_module を有効化する。
大体のモジュールは同梱されていて助かりますね。

LoadModule で有効化する。
コメントアウトしてあるだけなので、削除するだけです。

最後に、Apache を再起動。
ブラウザのキャッシュも消した方がいいかもです。

日付と投稿名のURL で、記事が見られるようになった。

画像がリンク切れになる。

リンクを調べると、移設前のURL がそのまま使用されていました。

画像へのリンクはDB に直接書かれているので、リンクが切れてしまいます。
サイトのURL などでDB を検索すると、どの程度直接書き込みされているか把握できます。

ここは手動で置換していきましょう。

phpmyAdmin でSQL を実行して文字列を置換する方法

置換の例

DB 内で、サイトURL を検索してみると、いくつかのテーブルでかなりの数ヒットしてきました。

テーブルの内容を確認。

SQL タブでクエリを流す。

UPDATE wp1_posts SET guid=REPLACE(guid,"https://zapping.beccou.com","http://***.bbtec.net/wp-backup-zapping");

リンク切れが直らない。ここは違うな。

今度は直接、画像のURL で検索したところ、post-content に直接URL が書かれているっぽいです。

ここを置換するSQL を実行したところ、画像が表示されるようになりました。

UPDATE wp1_posts SET post_content=REPLACE(post_content,"https://zapping.beccou.com","http://***.bbtec.net/wp-backup-zapping");

WP のバージョン更新や、プラグインの更新できない時

忘れがちですが、この2行を php.ini に追記します。

extension=php_curl.dll
extension=php_openssl.dll

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache24\htdocs\【wordpress のフォルダ】\wp-includes\Requests\Transport\cURL.php on line 484

これが出た場合は、さらにphp.ini で下記の値を変更する。

max_execution_time = 30

--> max_execution_time = 300

以上です。

(Visited 15 times, 1 visits today)
Posted in backup, WordPress

関連投稿