【WordPress】Linux と無縁の人でも hosts を知っておくと便利だよ

フリーとして頑張り始めた友達のデザイナさんから、WordPress の環境構築方法について、色々と相談を受けました。

その中で、一番「もっと早く知っておけば良かった！」と言われたのが、`hosts` の話です。

Windows や Macintosh でも使えるという事を知らないまま、面倒な作業をしている方もいらっしゃるかもしれませんので、「概念的なこと」や「どういった事ができるのか？」といったところを、簡単に紹介したいと思います。

--------------------------------------------------------------------------------

## 対象としている人

1. 自分のパソコン上(local) に、WordPress 環境は作れるが、本番環境へのデータ移行で手間取る。

2. ドメインはそのまま、サーバーだけを移転する際、移転前にテストをしたい。

3. ドメイン取得をできるだけ後回しにしたい。

このような方には、是非活用して欲しいなと思います。

--------------------------------------------------------------------------------

## hosts？

- https://ja.wikipedia.org/wiki/Hosts

> hosts（ホスツ）とは、TCP/IPを利用するコンピュータにおけるホスト名のデータベースで、IPアドレスとホスト名の対応を記述したテキストファイルである。

あ、もう私には無理…と思った人は、ちょっとお待ちを。

使い方はめちゃくちゃ簡単で、`hosts` というファイルを開いて、簡単なルールを書くだけです。

--------------------------------------------------------------------------------

## hosts の使い方

### 【1】hosts ファイルを開く

- [Windows 環境の方](https://www.google.co.jp/search?q=Windows+hosts+%E3%83%91%E3%82%B9&ie=utf-8&newwindow=1)
- [Macintosh 環境の方](https://www.google.co.jp/search?q=Macintosh+hosts+%E3%83%91%E3%82%B9&ie=utf-8&newwindow=1)

ググった結果で申し訳ありませんが、全てを説明するのは大変なので、↑を参考にして下さい。

--------------------------------------------------------------------------------

### 【2】ルールを書き足す

`#` で始まる行は、「コメント」になります。

特に慣れない内は、内容を「上書き」するのではなく、↓の例のように「コメントアウト」した上で、メモも残しておくと良いです。

```:hosts
#-- 1.コメントアウトしてから…
# 127.0.0.1    localhost

#-- 2. 設定を書き加える
127.0.0.1    example.com
```

そうすれば、もしトラブルになってもすぐ元に戻せます。

--------------------------------------------------------------------------------

### 【3】ウェブブラウザへルールを適応

ウェブブラウザを一度終了させて起動し直しても良いのですが、少し面倒です。

Chrome(Chromium) では、以下のようにすれば、すぐに設定をブラウザへ反映できます。

1. `chrome://net-internals/#dns` を開く ⇒ `Clear host cache` を押す
2. `chrome://net-internals/#sockets` を開く ⇒ `Flush socket pools` を押す

--------------------------------------------------------------------------------

使い方は、これだけです。

--------------------------------------------------------------------------------

## 何を設定したの？

Google の URL は、「[http://216.58.197.206/](http://216.58.197.206/)」です！と言われても、見ただけでは何のサイトか分かりませんし、なかなか覚えられません。

でも、「[http://google.com/](http://google.com/)」なら、分かりやすいですよね。

`google.com` と打てば Google が見れるのは、`216.58.197.206 ⇔ google.com` というルールを、[DNS](https://www.google.co.jp/search?q=DNS%E3%81%A8%E3%81%AF&ie=utf-8&newwindow=1) と呼ばれるものが管理してくれているお陰です。

そのルールとは別に、「独自のマイルールを上書きした」のだと思ってください。

【2】のマイルールを設定したパソコンでは、`http://example.com/` と打てば `http://127.0.0.1/` にアクセスできるようになるわけです。

--------------------------------------------------------------------------------

## 何ができるの？

本番環境で使うドメインを、`example.com` だとすると…

1. 自分のパソコン上の WordPress で、初めから `example.com` を設定して作業すれば、本番環境へデータを移しても、ほとんどそのまま使える。

2. `example.com` というドメインは同じまま、サーバーだけを移転する際に、設定を変更する前でもテストができる。

3. `example.com` というドメインをまだ取得していなくても、`example.com` が実在するドメインであるかのように、扱うことができる。

…という事になります。

--------------------------------------------------------------------------------

## 設定例

例えば以下のようにすれば、複数のドメインを自分のパソコン上で使い分ける事もできます。

- `hosts` の設定

```:hosts
127.0.0.1    project01.jp
127.0.0.1    project02.jp
```

- Apache の VirtualHost の設定

```apache:httpd-vhosts.conf
<VirtualHost *:80>
    ServerName project01.jp
    DocumentRoot "/path/to/wordpress/project01.jp"
</VirtualHost>

<VirtualHost *:80>
    ServerName project02.jp
    DocumentRoot "/path/to/wordpress/project02.jp"
</VirtualHost>
```

--------------------------------------------------------------------------------

設定例については、かなり説明不足で申し訳ありません。（力尽きた…）

- [MAMP WordPress hosts](https://www.google.co.jp/search?q=MAMP+WordPress+hosts&ie=utf-8&newwindow=1)
- [XAMPP WordPress hosts](https://www.google.co.jp/search?q=XAMPP+WordPress+hosts&ie=utf-8&newwindow=1)

のように、ご自分の環境に合わせて `hosts` というキーワードを使ってググれば、より詳しく説明してくれているサイトも見つかるのではないかと思います。

--------------------------------------------------------------------------------

### 【余談】他に話題になった事

今回の相談の中では、以下のような事も話題となりました。

1. データ移行の際、プラグインや phpMyAdmin を使うのは、極力避けた方が良い
    - バックアップやデータ移行系のプラグインには、脆弱性が発見される事もあり、データ漏洩時の被害も大きい
    - [Google Hacking](https://qiita.com/fallout/items/6a3e1970f7b2d8f70fef) の例：[`inurl:"/wp-content/uploads/db-backup" intitle:Index of`](https://www.google.co.jp/search?q=inurl%3A%22%2Fwp-content%2Fuploads%2Fdb-backup%22+intitle%3AIndex+of&ie=utf-8&newwindow=1)
    - phpMyAdmin は、常に狙われていると思っておいた方が良い
    - `mysqldump` などのコマンドに慣れれば慣れる程、作業効率は上がる

2. せっかく Mac 環境なら、`rsync` を覚えると良い
    - コマンド 1 つで、同期やバックアップなど応用範囲が広い
    - ただし、まずはとにかく dry-run する癖をつけておかないと、慣れた頃に絶対やらかす

3. `WP-CLI` は神

4. MAMP は卒業して、`VCCW` + `Wordmove` へのステップを

普段 Linux 環境に触れない方には、かなりとっつきにくいかもしれません。

しかし、ホンの少しコマンドを覚えるだけで、劇的に作業効率が上がることもありますので、興味がある単語があれば、まずはググってみて欲しいなと思います。