ゼロからphp7環境構築 - 2.Appサーバー設定


前回: [ゼロからphp7環境構築 - 1.DBサーバー設定](http://qiita.com/th_/items/dd3c61441bcf7fd58ebe)
次回: [ゼロからphp7環境構築 - 3.サンプルアプリ作成(laravel5)](http://qiita.com/th_/items/d4733b46b68cd8b1ae02)

# 概要
今回はappサーバーの設定を行います
[0.事前準備](http://qiita.com/th_/items/816328de5dec7ac513b4) で作成した環境を使用します。httpd,php7,mariaDBをインストールし、[1.DBサーバー設定](http://qiita.com/th_/items/dd3c61441bcf7fd58ebe) で作成したDBに接続してみます

# もくじ
* vagrant up
* httpd インストール・設定
* php7 インストール・設定
* composer インストール
* DB接続テスト
* DB接続テスト2(phpからの接続)
* box作成・追加

# vagrant up

```
cd C:\HashiCorp\Vagrant\work\testProject\appserver
vagrant up
```

192.168.33.11 (vagrant / vagrant) へssh接続

# httpd インストール

```
sudo yum -y install httpd
httpd -v
```

##  設定変更

```
sudo vim /etc/httpd/conf/httpd.conf
```

■66行目、67行目
User apache
Group apache
↓
User vagrant
Group vagrant

## 起動と自動起動設定

```
sudo systemctl start httpd
sudo systemctl enable httpd
```

## apachのwelcome画面表示
http://192.168.33.11/ へアクセス

Testing 123..　の画面が表示されることを確認

# php7インストール

```
sudo yum -y install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum -y install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-mysqlnd php-xml
php -v
```

## DocumentRoot変更

```
sudo vim /etc/httpd/conf/httpd.conf
```

■103行目
AllowOverride none
↓
AllowOverride All

■119行目
DocumentRoot "/var/www/html"
↓
DocumentRoot "/home/vagrant"

■124行目
Directory "/var/www"
↓
Directory "/home/vagrant"

■125行目
AllowOverride none
↓
AllowOverride All

■131行目
Directory "/var/www/html"
↓
Directory "/home/vagrant"

■151行目
AllowOverride none
↓
AllowOverride All

■164行目
DirectoryIndex index.html
↓
DirectoryIndex index.php index.html 

再起動

```
sudo systemctl restart httpd.service
```

## phpinfo表示

```
cd
vim index.php
```

> <?php phpinfo(); ?>

http://192.168.33.11/ へアクセス
phpinfo の画面が表示されることを確認

# composerインストール

```
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -V
```

Composer version 1.2.2 2016-11-03 17:43:15

# DB接続テスト
前回作成したDBサーバーに、Appサーバーから接続するための設定を行います

## vagrant up(DBサーバー)

```
cd C:\HashiCorp\Vagrant\work\testProject\dbserver
vagrant up
```

192.168.33.21 (vagrant / vagrant) へssh接続

### ユーザーごとのアクセス権限の確認

```
mysql -u root
MariaDB [(none)]> select user,host from mysql.user;
```

+------+-----------------------+
| root | 127.0.0.1             |
| root | ::1                   |
|      | localhost             |
| root | localhost             |
|      | localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+

### アクセス権限の追加

```
MariaDB [(none)]> grant all privileges on sample.* to root@"192.168.33.11" identified by 'vagrant' with grant option;
```

Query OK, 0 rows affected (0.00 sec)

### 確認

```
MariaDB [(none)]> select user,host from mysql.user;
```

+------+-----------------------+
| root | 127.0.0.1             |
| root | 192.168.33.11         | ← 追加された
| root | ::1                   |
|      | localhost             |
| root | localhost             |
|      | localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+

### Appサーバーで接続確認
192.168.33.11 に接続しているターミナルに移動

```
mysql -h 192.168.33.21 -uroot -p
-bash: mysql: command not found
```

mariaDBを入れてなかった。。。
[前回記事](http://qiita.com/th_/items/dd3c61441bcf7fd58ebe)を参考にmariaDBをインストール（省略）
mariaDBの起動と自動起動設定は不要

再チャレンジ（passWordは vagrant ）
接続、参照、レコード追加ができました。

```
[vagrant@localhost ~]$ mysql -h 192.168.33.21 -uroot -p
Enter password:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

MariaDB [(none)]> use test;

MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sample         |
+----------------+

MariaDB [test]> select * from sample;
+----+---------------+
| id | name          |
+----+---------------+
|  1 | Yamada Taro   |
|  2 | Tanaka Hanako |
+----+---------------+
2 rows in set (0.00 sec)

MariaDB [test]> insert into sample (name) values ('Nagata Yuki');
Query OK, 1 row affected (0.03 sec)

MariaDB [test]> select * from sample;
+----+---------------+
| id | name          |
+----+---------------+
|  1 | Yamada Taro   |
|  2 | Tanaka Hanako |
|  3 | Nagata Yuki   |
+----+---------------+
3 rows in set (0.00 sec)
```

> 参考: [MySQLに外部ホストから接続できるように設定する](http://linuxserver.jp/%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89/db/mysql/%E5%A4%96%E9%83%A8%E6%8E%A5%E7%B6%9A%E8%A8%B1%E5%8F%AF%E8%A8%AD%E5%AE%9A)

## DB接続テスト2(phpからの接続)

```
vim index.php
```

編集内容

```
<?php
//phpinfo();

$dsn='mysql:dbname=test;host=192.168.33.21';
$user='root';
$pass='vagrant';
try{
  $db=new PDO($dsn,$user,$pass);
  $sql = "select * from sample";
  foreach($db->query($sql) as $row){
    echo($row['id'] . ":" . $row['name'] . "<br>");
  }
}catch(PDOException $e){
    die("die");
}
$db=null;

```

下記の表示がされていればOK
>1:Yamada Taro
>2:Tanaka Hanako
>3:Nagata Yuki

## box作成・追加
pc側で

```
cd C:\HashiCorp\Vagrant\work\testProject\appserver
rm package.box
vagrant halt
vagrant package
vagrant box add --name centos72-httpd-php-maria package.box
vagrant box list
```
centos72-httpd-php-maria が追加されていることを確認

***
前回: [ゼロからphp7環境構築 - 1.DBサーバー設定](http://qiita.com/th_/items/dd3c61441bcf7fd58ebe)
次回: [ゼロからphp7環境構築 - 3.サンプルアプリ作成(laravel5)](http://qiita.com/th_/items/d4733b46b68cd8b1ae02)