５分でwordpressをローカル環境に用意する


## 前提 - 環境

* Mac OSX 10.10.5
* vagrant 1.8.5
* VirtualBox 5.1.4
* ゲストOS - centos6.8

※ vagrantでのcentos環境の構築は、[以前の自分の記事](http://qiita.com/ritukiii/items/9933e1497237bdac9500)を参考にしてください。

## 概要

* wordpressをインストールし
* 初期設定を行い
* 5分でサイトを公開しよう

## 1. wordpressをインストールしてくる

[公式](https://ja.wordpress.org/)からダウンロード出来るので、本体をDLしておきます。
(2016-08-24時点では、バージョンは4.6でした)

## 2. wordpress用のデータベースを作成する

wordpress用のDBが必要なので作っておきます

```sql
mysql> create database wordpress_test;
mysql> grant all on wordpress_test.* to wp_test_user@localhost identified by 'xxxx';
```

## 3. 1でダウンロードしてきたwordpress本体をドキュメントルート配下に配置する

```
$ cd ~/Download/wordpress/* ~/centos/src/
```

#### 補足

※ 私の環境では、`~/centos`に、Vagrantfileが配置されてます。

```~/centos/Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos6.7"
  config.vm.provision :shell, :path => "provision.sh"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./src/", "/var/www/html/"
end
```

※ ホストOSの`~/centos/src/`をゲストOSの`/var/www/html/`に共有しています。

## 4. wp-configを編集する

さて、先ほどドキュメントルートに配置した、`~/centos/src/`の中に、`wp-config-sample.php`というファイルがありますので、こいつをコピーして、`wp-config.php`を作ります。

```
$ cd ~/centos/src/
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php
```

編集するのは次の4箇所です

* wordpress用のデータベース名
* wordpress用のユーザ名
* wordpress用のパスワード
* 認証用ユニークキー

上の３つはこの辺にあります。

```
 27 // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
 28 /** WordPress のためのデータベース名 */
 29 define('DB_NAME', 'wordpress_test');
 30
 31 /** MySQL データベースのユーザー名 */
 32 define('DB_USER', 'wp_test_user');
 33
 34 /** MySQL データベースのパスワード */
 35 define('DB_PASSWORD', 'xxx');
```

最後の、認証用ユニークキーというのは、`wp-config`にこのような記載があるので、
指示通りに行います。

```
 46 /**#@+
 47  * 認証用ユニークキー
 48  *
 49  * それぞれを異なるユニーク (一意) な文字列に変更してください。
 50  * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で>    自動生成することもできます。
 51  * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザ>    ーを強制的に再ログインさせることになります。
 52  *
 53  * @since 2.6.0
 54  */
```

 ということなので、 https://api.wordpress.org/secret-key/1.1/salt/ にアクセスしてみます。
 すると、なんかランダムな文字列が生成されているので、それを全選択＞コピーします。
 
そして、`wp-config`の認証用ユニークキーの下の部分にすべてペーストで上書きしちゃいます。

```
 55 define('AUTH_KEY',         '5kN_DjG8/M9db|1IhAz*&gWT8$)CfX`g#GpF-@EgPUh&^>_p1?$s0E?pbu3)Myc!    ');
 56 define('SECURE_AUTH_KEY',  '-l5|r+n`^@7OuZ*H58m%UubRK-(m%]&okof]-.YtgN-O;2g7A}@&T$_D:~HZWLbC    ');
 57 define('LOGGED_IN_KEY',    '-m*wqGjIoH;}zK=ky&s:@JfWH4@Z3+awc6D[Rfx4PE2l(A-h+Me5@3$z[1-|Rz-W    ');
 58 define('NONCE_KEY',        '+Pr g3t&0i#HT[bu<z0N6 LJjs!}P@Bj.$!rqwv27{/F^lo8xaHNf:G:C<R?$O^-    ');
 59 define('AUTH_SALT',        '3u&_2P(&+|?J70hchy|sI<0:xl9h0eu(3z7wY%`*^E?*<g[p{cm=b6*/wB:J8(77    ');
 60 define('SECURE_AUTH_SALT', 'yB@#M4iY$<lp_%_jM^?EenmZ-~Rv2hk`; )76+N%Q6&vT=e1mS|n t+))O6*4Es(    ');
 61 define('LOGGED_IN_SALT',   'q_Gg&RrvMQM+b+y0R_~FsW(3Rj/|-!4zu}0XKoR$-m.9@^5QLs.e<N^%[D-=+0pW    ');
 62 define('NONCE_SALT',       't2|$-*At8Z|!@/{4IMh*)`93RVlj*sQF&p~9+6FA=h6k-~F/EYhrD*i-?[^qoOB]    ');
```
 
こんな感じですね。

## 5. ブラウザから初期設定を行う

ブラウザで、`192.168.33.10`にアクセスします。
おそらく下のような画面が表示されると思います。

![スクリーンショット 2016-08-25 08.16.20.png](https://qiita-image-store.s3.amazonaws.com/0/23276/b5861e85-40f5-49b2-b418-49f9d2f6190d.png "スクリーンショット 2016-08-25 08.16.20.png")

#### データベース確立エラーが起きてしまったら・・・？

* `wp-config`の、データベースの設定に誤りがないか見直しましょう
* 実際に`mysql -u [ユーザ名] -p[パスワード] [テーブル名]`でログイン出来るか
* mysqlが実際に稼働しているか、`sudo service mysqld status` で動いてるか確認しましょう
	* 起動してない場合は、`sudo service mysqld restart`で再起動しておきましょう

### 初期設定

ここで、サイトのタイトルやユーザ名、メールアドレスを登録して、`wordpressをインストール`すれば完了です。
次に出てくるログイン画面で、実際にログイン出来るか確認してみましょう。
ログインに成功すると、↓のようなダッシュボードが表示されるはずです。

![スクリーンショット 2016-08-25 08.19.08.png](https://qiita-image-store.s3.amazonaws.com/0/23276/94f24695-9850-a63f-c1f2-5a968eff2efa.png "スクリーンショット 2016-08-25 08.19.08.png")

## 6. パーマリンクの設定

wordpressで投稿した記事のURLは、デフォルトでは記事の`id`っぽくなっていますので、
それを`日付`や`記事の内容に合わせた文字列`に変更することが出来ます。
これは簡単なのでやっておきましょう。

ダッシュボードの左側のメニューから、`パーマリンク設定`をクリック

![スクリーンショット 2016-08-25 08.24.46.png](https://qiita-image-store.s3.amazonaws.com/0/23276/260e3fde-1d2b-fe2e-14ea-1f2e60cf0785.png "スクリーンショット 2016-08-25 08.24.46.png")

デフォルトで、`基本`になっているので、`日付と投稿名`などに変えてみます。

![スクリーンショット 2016-08-25 08.28.45.png](https://qiita-image-store.s3.amazonaws.com/0/23276/59b017d0-75e7-29e6-698d-2910daab9e47.png "スクリーンショット 2016-08-25 08.28.45.png")

この状態で、`変更を保存`すると、画面下の方に、
```
.htaccess が書き込み可能ならこの操作は自動的に行われますが、そうでない場合は .htaccess ファイルに mod_rewrite ルールを書き込む必要があります。以下のフィールドをクリックし、CTRL + a ですべてのコードを選択してください。
```

という指示があります。
ドキュメントルートにapacheが書き込める権限があれば自動的に`.htaccess`が作られるんだと思いますが、
作成されてなければ自分で作ってしまいましょう。

```
$ vi /var/www/html/.htaccess
```

内容は、ダッシュボード上にある文字列のコピペでOKです。

#### もし、パーマリンク設定して、404に遭遇したら・・

順番に疑ってみます

* `mod_rewrite`が有効になってない
	* `/etc/httpd/conf/httpd.conf`で、` 190 LoadModule rewrite_module modules/mod_rewrite.so`の行の先頭が`#`でコメントアウトされている場合
	* `#`を消して上書き > `sudo service httpd restart`
* `.htaccess`が使えない
	* `/etc/httpd/conf/httpd.conf`の、`<Directory "/var/www/html">`の項目を見てみましょう
	* `AllowOverride None` になっていませんか？
	* その場合は、`AllowOverride All`にして上書き> `sudo service httpd restart`

これで記事投稿・パーマリンク設定まで出来ました。