vagrantでwordpressの開発環境を構築する

# vagrant upだけでWordPressの環境を構築したい
vagrant upするだけでapache,mysqlの最低限の設定をし、WordPressの初期画面が表示できるようにした際のメモです。

# 事前準備
vagrantとvirtuakboxをインストールする。

- 下記リンクからvagrantをインストール
https://www.vagrantup.com/

- 下記リンクからvirtuakboxをインストール
https://www.virtualbox.org/

# WordPressをダウンロードする
開発用ディレクトリを作成し、下記コマンドを実行する
`wget https://ja.wordpress.org/wordpress-4.4.2-ja.zip`
ダウンロードに成功したら下記コマンドを実行し、解凍する
`unzip wordpress-4.4.2-ja.zip`


# vagrant環境構築手順

#### **1,boxファイルを取得し、osを追加する**

```Vagrantfile:Vagrantfile
config.vm.box = "OS名（任意）"
config.vm.box_url = 'https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box'
```
※boxファイルは下記から任意のosを選択する
http://www.vagrantbox.es/

#### **2,ipアドレスを設定する**

```Vagrantfile:Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"
```
#### **3,ローカルのファイルをvagrant環境と同期する**

```Vagrantfile:Vagrantfile
config.vm.synced_folder "ローカルの開発用ディレクトリパス", "vagrant上のディレクトリパス"
```
#### **4,apacheの設定ファイルを作成**
-開発用ディレクトリにhttpd.confを作成し、最低限の設定を記述

```:httpd.conf
ServerRoot "/etc/httpd"

Listen 80
Include conf.modules.d/*.conf


User apache
Group apache
ServerAdmin root@localhost

DocumentRoot "vagrant上のWordPressのディレクトリパス"

<Directory "vagrant上のWordPressのディレクトリパス">
    AllowOverride All
</Directory>

ErrorLog "logs/error_log"

<IfModule log_config_module>
LogLevel warn
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access_log" combined
</IfModule>


<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

EnableSendfile on

IncludeOptional conf.d/*.conf
```

#### **5,mysqlの初期設定用ファイルを作成**
開発用ディレクトリにsqlファイルを作成

```:mysql.sql
SET password FOR root@localhost=password('大小英数記号を含む8文字以上のパスワード');
create database wp;
grant all privileges on wp.* to wp@localhost identified by '任意のパスワード';
```

#### **6,初回構築時にapache,php,mysqlをインストールする設定をVagrantfileに追記**

```:Vagrantfile
  config.vm.provision "shell", inline: <<-SHELL
      yum -y install httpd php
      cp -f vagrant上に同期された手順4で作成したhttpd.confのパス /etc/httpd/conf/httpd.conf
      systemctl start httpd.service

      yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
      yum -y install mysql-community-server php-mysql

      password=`cat /var/log/mysqld.log | grep "A temporary password" | tr ' ' '\n' | tail -n1`
      mysql -u root -p${password} --connect-expired-password < vagrant上に同期された手順5で作成したsqlファイルパス
      systemctl start mysqld.service

      firewall-cmd --permanent --zone public --add-service http
      firewall-cmd --reload
  SHELL
```
#### **7,vagrant up時にapache,mysqlを起動する設定をVagrantfileに追記**
```:Vagrantfile
  SHELL
  config.vm.provision "shell", run: "always", inline: <<-SHELL
      systemctl restart httpd.service
      systemctl restart mysqld.service
  SHELL
```
#### **8,vagrantを起動し、WordPressにアクセス**
`vagrant up`し、下記にアクセス
http://192.168.33.10/wp-admin/setup-config.php

※別のマシンでvagrant upしたところアクセスできなかった。（httpd、mysqlは正常に起動していた）
一度`vagrant reload`するとアクセスできるようになった。
原因はまだわかっていない。。。