WEB で公開しているWordPress(以降、WP)で作成したブログサイトをローカル環境にて再構築する手順を検証しています。
目的は、WP サイトのバックアップの内容に問題がないかの確認を兼ねつつ、検証環境も作ることです。
WEB で公開中のWordPress サイトをローカル環境で再構築する。
再構築に必要なので、準備するもの。
- WordPress がインストール可能な環境のサーバー
- Apache、PHP、データーベース などのWP 動作に必要なものがインストールされている。
(新規でWP をインストールして動けばOKだと思います。)
- Apache、PHP、データーベース などのWP 動作に必要なものがインストールされている。
- 再構築するWP サイトのバックアップデータ
- WP のインストールフォルダ
- データベースのエクスポートデータ
再構築の手順
- WordPress インストールフォルダのコピー
- データベースのインポート
- wp-config の編集
- (必要に応じて)Apache の設定など
WordPress インストールフォルダのコピー
ダウンロードしたWP インストールフォルダをApache のドキュメントルートに設定されているフォルダ以下へ移動。
この時、サイトURLが「localhost/フォルダ名」になります。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-84.png)
データベースのインポート
新規でデータベースを一つ作成し、インポートタブからバックアップしたファイルをインポートします。
![](https://zapping.beccou.com/wp-content/uploads/2021/01/image-79.png)
新規作成をクリックし、データベースを作成するの画面で、データベース名と、照合規則を入力(WEB サイトのものに合わせればいいと思います。)し、作成ボタンをクリックします。
新規作成したデータベースを選択して、インポートタブをクリック。
![](https://zapping.beccou.com/wp-content/uploads/2021/01/image-80-1024x364.png)
デフォルトだとインポートできるファイルの最長(最大値)が2M しかないので、以下の設定をしてファイルサイズを変更します。
(サイズ的に足りている、既に拡張済み、最初から大きい、という場合は不要な手順です。)
※インポートするファイルサイズが上限(最長)より大きい場合は、php.ini ファイルを編集して最大の値を変更して下さい。
![](https://zapping.beccou.com/wp-content/uploads/2021/01/image-85-edited.png)
php.ini ファイルで下記の設定値を変更します。
#php.ini
post_max_size = ***M
upload_max_filesize = ***M
ファイルサイズの問題がクリア出来たら、気を取り直してインポート。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-86-1024x692.png)
ファイルを指定してOK すると、選択したインスタンスにテーブルがインポートされます。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-87-1024x692.png)
さらに「タイムアウトしました・・・」のエラーが出る場合はこちらが参考になれば。
[phpMyAdmin]スクリプトがタイムアウトしました。完了させたいのであれば同じファイルを再送信すればインポートが再開されます。
URL の変更
WP サイトのURL をローカル向けのURL に変更します。
また、大概のWEB サイトはSSL 接続なので、ローカル環境がSSL 接続に対応していないのなら、ここでWP サイトのURL を「HTTPS」から「HTTP」へ変更して非SSL 接続への変更が必要になる(・・・はず。)という訳です。
この場合、SSL 接続じゃないとダッシュボードにアクセスできないので、データベースの値を直接変更して、サイトのURL を変更してしまいましょう。
ちなみにSSL 接続にすれば、URL を直打ちしてダッシュボードにアクセスし、URL を変更することが出来ます。
データベース上でURL の値が保存された箇所は、下図のようにサイトのURL を検索することでとあっさりと見つかると思います。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-88-1024x692.png)
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-89-1024x692.png)
ダブルクリックすると値が編集できますので、ダブルクリックしてローカル向けのURL に変更します。
まずは、「HTTPS」を「HTTP」に変更します。
→非SSL 化されます。
次に、アドレスの部分を修正。
デフォルトでは、
「<Apacheインストールフォルダ>\htdocs」フォルダ が、
「http://locahost」のURL になるので、htdocs 直下にWP インストールフォルダをコピーした場合、
「http://locahost/<WP インストールフォルダ名>」
がサイトのアドレスになります。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-90-1024x692.png)
私の場合は、「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 の設定もレンタルサーバーの設定と合わせると良いと思います。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-98.png)
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」に設定する。
![](https://zapping.beccou.com/wp-content/uploads/2021/02/image-88.png)
![](https://zapping.beccou.com/wp-content/uploads/2021/02/image-87.png)
![](https://zapping.beccou.com/wp-content/uploads/2021/02/image-89.png)
mod_rewirte の導入。
モジュールが同梱されていることは確認したので、httpd.conf でrewrite_module を有効化する。
大体のモジュールは同梱されていて助かりますね。
![](https://zapping.beccou.com/wp-content/uploads/2021/02/image-90.png)
LoadModule で有効化する。
コメントアウトしてあるだけなので、削除するだけです。
![](https://zapping.beccou.com/wp-content/uploads/2021/02/image-92.png)
最後に、Apache を再起動。
ブラウザのキャッシュも消した方がいいかもです。
日付と投稿名のURL で、記事が見られるようになった。
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-101-1024x793.png)
![](https://zapping.beccou.com/wp-content/uploads/2020/12/image-108-1024x793.png)
画像がリンク切れになる。
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-23.png)
リンクを調べると、移設前のURL がそのまま使用されていました。
画像へのリンクはDB に直接書かれているので、リンクが切れてしまいます。
サイトのURL などでDB を検索すると、どの程度直接書き込みされているか把握できます。
ここは手動で置換していきましょう。
phpmyAdmin でSQL を実行して文字列を置換する方法
置換の例
DB 内で、サイトURL を検索してみると、いくつかのテーブルでかなりの数ヒットしてきました。
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-33.png)
テーブルの内容を確認。
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-25-1024x329.png)
SQL タブでクエリを流す。
UPDATE wp1_posts SET guid=REPLACE(guid,"https://zapping.beccou.com","http://***.bbtec.net/wp-backup-zapping");
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-27.png)
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-295.png)
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-28.png)
リンク切れが直らない。ここは違うな。
今度は直接、画像のURL で検索したところ、post-content に直接URL が書かれているっぽいです。
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-29-1024x358.png)
ここを置換するSQL を実行したところ、画像が表示されるようになりました。
UPDATE wp1_posts SET post_content=REPLACE(post_content,"https://zapping.beccou.com","http://***.bbtec.net/wp-backup-zapping");
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-295.png)
![](https://zapping.beccou.com/wp-content/uploads/2022/04/image-30.png)
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
以上です。
ピンバック: [WordPress] バージョンの更新や、プラグインのインストールができない場合の対処法。 - .zapping
ピンバック: レンタルサーバー上のWordPress サイトをオンプレミス・サーバーで再構築する時の各種コンフィグ設定 – .zapping
ピンバック: ロリポップサーバーからConoHa WING へWordPress の移設がうまくいかない。 - .zapping