もっと素早くWordPressをインストールする

# はじめに
この記事は [WordPress Advent Calendar 2016](http://www.adventar.org/calendars/1628) 六日目の記事です。
前日は Ko Takagi さんの [2016年のWordPressの思い出を振り返ります](http://blog.ko31.com/201612/wordpress-2016/)でした。
もっと素早くWordPressをインストールするためにスクリプトを書きました。
ダウンロード、DBとかの入力、初回ユーザ作成を一発でいけるようになります。
過去に書いた記事の改訂です。

> 最速でWordPress環境を構築してみる
> http://qiita.com/yousan/items/7acfd8912dda1952d7d5

名前は`wphere`です。
https://github.com/yousan/wphere

# 使い方
## 設定ファイル
設定ファイルを作成します。
スケルトンファイルを落として編集します。

```bash
$ curl -o .htenv https://raw.githubusercontent.com/yousan/wphere/0.1/.htenv.ja.sample
$ vi .htenv
```
このファイルにDBへの接続情報などを書いておきます。

```bash:.htenv
# ファイルは .htenv という名前で保存してください
# インストールが終わったら ** 必ず ** このファイルは削除してください。

# データベースへの接続情報です。
DB_USER=username
DB_PASS=password
DB_HOST=localhost
# 空の場合、wphereを実行した現在のディレクトリから自動で決定されます
# ex.) ~/public_html/example.dev => username_example
DB_NAME=username_example

# WordPressで追加される初期ユーザです。パスワードは後で変更してください。
WP_USER=username
WP_MAIL=username@example.com
WP_PASS=password
WP_PREFIX=wp_
```
設定ファイルは`.htenv`、`.env`というファイル名を受け付けます。

## WordPressのインストール
`wphere`を呼びます。

```bash
$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/yousan/wphere/0.1/wphere)"
```

![Screen Shot 2016-12-06 at 0.10.50.png](https://qiita-image-store.s3.amazonaws.com/0/47327/3322aca8-8333-607d-84c5-aec0ff11be2a.png)


インストール完了です！

# .htenvファイルについて
.htenvファイルは使い回し可能です。
データベースやユーザなどを設定した上で外からは見えない場所に置いておき、対象ディレクトリにコピーして`wphere`を呼ぶことを想定しています。

個人的に開発環境のドメインは’スラッグ’+'.dev'としていまして、そこですぐに運用することを想定しています。

```none:tree
~/public_html
|-- example1.dev
|-- example2.dev
|-- hogehoge1.dev
|-- anken1.dev
|-- anken2.dev
|-- anken3.dev
`-- tesuto.dev
```

`.htenv`はDB_NAMEを空にしておくと自動的にusername+'_スラッグ'として設定されます。

```bash:.htenv
# 空の場合、wphereを実行した現在のディレクトリから自動で決定されます
# ex.) ~/public_html/example.dev => username_example
DB_NAME=
```

DB_NAMEを空にしてこんな感じにするとどんどんインストールできます。

```bash
$ SLUG=exmaple1
$ mkdir ~/${SLUG}.dev 
$ cp ~/.htenv ~/public_html/${SLUG}.dev/; cd ~/public_html/${SLUG}.dev/
$ wphere


$ SLUG=exmaple1
$ mkdir ~/${SLUG}.dev 
$ cp ~/.htenv ~/public_html/${SLUG}.dev/; cd ~/public_html/${SLUG}.dev/
$ wphere
```

自分の環境で`~/public_html`を確認したところ80個ぐらいありました。
半分以上の環境にWordPressが入っています。

![1__yousan_aramaki____public_html__zsh_.png](https://qiita-image-store.s3.amazonaws.com/0/47327/0e9ee7ab-1c7f-9a02-3b79-5732bc5b3e21.png)


# その他
## セキュリティ
設定ファイル`.htenv`はインストールが終わったら消してください。
ウェブサーバの設定によっては外部から見えるので危険です。
`.ht`で始まるようにしたのは多くのウェブホスティングで403となるためです。
基本的には手元の環境構築用です。

## もっとやりたいこと

* WP-CLIを不要にしたい
* .htenvを自動で消す
* 上書きモードをY/Nする

## これを作るまでは
このコマンドを一元化するまでは以下のコマンドを暗記してました。
この後にブラウザを開くのが大変でした。

```
$ wget http://wordpress.org/latest.zip
$ unzip latest.zip
$ mv wordpress example2.com
$ cp ~/public_html/example.com/wp-config.php ./example2.com
$ emacs wp-config.php
(略)
```

また最近まで知らなかったのですが、`latest-ja.zip`ってあったのですね。
ずっと英語版でインストール->言語ファイルを落として変更とかやってました。
知らなかったです便利ですね。

## WP-CLI
上記のコマンドでインストールを覚えてからしばらくの後、WP-CLIが登場しました。
WP-CLIのおかげでインストールがすごく便利になったのですが、今度はコマンドが覚えられませんでした。そろそろ頭の容量が一杯になってきたのでひとまとめにしたい、というのがきっかけです。

ただWP-CLIもyamlファイルをうまく書けば`wphere`は不要な気もしますね。
http://wp-cli.org/config/
`wp-cli.yml`も時間をみてもっと活用します。

## 開発環境
こちらも自分の記事ですが、ローカルの開発環境を立てる仕組みも作りました。
中身は単なるdocker-composeです。

> ローカル開発環境をもっとたくさんの人に使ってもらいたくてDockerで作りました
> http://qiita.com/yousan/items/f05fa03c1f3951971f2f

このシステムと組み合わせるとホスト側のターミナルで`wphere`を呼べば開発環境が構築されます。

以上です。

明日は [misumi_takuma](http://www.adventar.org/users/6693) さんです。