Wordpressのローカル環境を、Vagrantでゼロから構築

## 目標

- vagrantを立てる
- Wordpressの最初の画面が見れるまで！

## 詳細

- Ubuntu16.04
- PHP：7系
- Mysql：5.7系
- Apache：2.4系

とても普通の構成です。

# VirtualBoxとVagrantのインストール
割愛しますmm

以下の記事を参考にすればできると思います。

# vagrant upをするまで

## vagrant initを叩く
ここまでで、以下のコマンドを叩いた時に、同様の結果がでるように頑張ってください！

```
$vagrant box list
ubuntu16.04                (virtualbox, 0)

$vagrant init ubuntu16.04
```

## Vagrantfileの編集
これでVagrantfileができますので、それを編集。

以下のように。

```
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu16.04"

  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.synced_folder ".", "/var/www/html", nfs: true

end
```

「nfs使わないよ。」という方は無視してく↓。
`config.vm.synced_folder ".", "/var/www/html"`でも大丈夫でしょう。

## vagrant up&ssh
```
$vagrant up
$vagrant ssh
```

これで仮想環境の中に入れます。
ここからは基本的にvagrantの中での操作です。

# 　各種インストール

## とりあえずアップデート
```
$sudo apt update
```
自分は盲目的に最初のvagrant sshのあとにアップデートするのですが、アカン!!という方はよく調べてから・・・。

## Apacheのインストール

```
$sudo apt install apache2

# 以下でバージョンを確認できたらok
$apache2ctl -v
```

## Mysqlのインストール

```
$sudo apt install mysql-server #途中紫の画面がでますが、無視してEnter！セキュリティを気にする方は注意して設定してください。

# このままだと、rootログインできないので。
$sudo rm -fr /var/lib/mysql
$sudo mkdir /var/lib/mysql
$sudo chown mysql:mysql /var/lib/mysql
$sudo /usr/sbin/mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
$sudo /etc/init.d/mysql restart

# ↓でログインできたらok
$mysql -u root -p

# DBの作成
mysql> create database wordpress;
```

## PHPのインストール

```
$sudo apt install php libapache2-mod-php php-mysql php-mbstring php-mcrypt php-curl php-gd php-xml

# 以下でバージョンが確認できたらok
$php -v
```

# 設定ファイルの変更など

## apache2.confの編集

`$sudo vim /etc/apache2/apache2.conf`
中頃に`<Directory />・・・`などと書かれているところがあると思うので、その周辺を以下のように。

```
<Directory />
	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>

<Directory /usr/share>
	AllowOverride None
	Require all granted
</Directory>
<Directory /var/www/html/wordpress>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
<Directory /var/www/html/wordpress>
        AllowOverride All
</Directory>
```

なお、今回wordpressのプロジェクトディレクトリは`/var/www/html/wordpress/`とします。

編集後は以下コマンドでシンタックスチェックをします。

```
$apache2ctl configtest #Syntax okみたいなのがでます。

# 以下コマンドで動けばok
$sudo service apache2 start
```

## wordpressを持ってくる

`https://ja.wordpress.org/`
本家のダウンロードをボタンを押します。
zipを解凍したら、`wordpress`というディレクトリが出てくると思います。
それをVagrantfileと同じディレクトリへ移動します。

### 共有ディレクトリについて
vagrantはmac側とディレクトリを共有することができます。
今回はmacのVagrantfileの場所と、vagrant側の`/var/www/html/`を共有しています。

## wordpressをApacheで動かせるように。
現状で、Apacheもwordpress本体も用意されていますが、それらが結びついていません(適切な表現が・・・)。

vagrant側です。

```
$sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/010-wordpress.conf

# ディレクトリ設定
$sudo vim /etc/apache2/sites-available/010-wordpress.conf
```

以下のようにします。

```
<VirtualHost *:80>

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html/wordpress/


	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
```

DocumentRootを書き換えただけです。

バーチャルホストを有効に

```
$sudo a2dissite 000-default
$sudo a2ensite 010-wordpress
$sudo systemctl restart apache2
```

## wordpressディレクトリの権限を変更

```
$sudo chown -R vagrant:www-data wordpress
```

## 最後にApache Restart！

```
$sudo systemctl restart apache2
```

## ブラウザにアクセス
http://192.168.33.10/ ここにアクセスしたらwordpressの初期画面が見れると思います。

## データベース情報
wordpressの初期画面で入力するDB情報です。

```
データベース名: wordpress
ユーザー名: root
パスワード:
データベースホスト名: localhost
テーブル接頭辞: wp_ ※ パスワードなしでOK
```

# まとめ

最後までたどり着けたでしょうか・・・。
解説が少ない、稚拙な文章です申し訳ないです。

ちなみに今回作った環境を、`$vagrant package`すると、次回以降簡単に構築できるようになります。
詳しくは調べてみてください！