laravel5.6をcentOS7.2にインストールして動かしてみた 

最近ぐうたらしているのでPHPフレームワークで新しくアプリを作成しようかと思い、最近のトレンドを調べてみました。

業務では `cakePHP` や `symfony2` などを利用していますが、調べたところやっぱり最近のイチオシは `laravel` だということなので、暫く動かしていなかった `vagrant` マシンに `laravel` を入れてみようという記事です。

# 前提
- ホストOSはwindows10
- ゲストOSはcentOS7.2
- vagrant,VirtualBoxは最新版(2018/07/21時点)をインストール済み
- ゲストOSは以前vagrantで構築済み(IPは `192.168.33.20`)
- PHPはremiで7.1をインストール済み（remiはyumでインストール）
- composerもインストール済み

---

# やったこと
- PHP7.1をアンインストールして7.2をインストール（関連モジュールも一緒にインストール）
- VirtualBoxのディレクトリ共有を使ってホストOSとゲストOSのディレクトリを繋ぐ
- composerをアップデートしてlaravelをインストール
- apacheのconfを変更
- webブラウザでアクセス

---


## PHP7.2をインストールする
### PHPのバージョンを確認する。
とりあえず今インストールされているPHPを確認します。

```sh
php -v
```

【結果】

```sh
PHP 7.1.11 (cli)
以下略
```

ということで、まずはPHPを7.2にアップグレードしました。

### yumでremiをアップデートする。
まずはremiで利用できるPHPを確認します。

確認コマンド

```sh
ll /etc/yum.repos.d/ | grep remi-
```

【結果】

```sh
-rw-r--r-- 1 root root  456  6月 19 09:28 remi-php54.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php70.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php71.repo
-rw-r--r-- 1 root root  750  6月 19 09:28 remi-safe.repo
```

PHP71までしかリポジトリ登録されていないのでremiを更新します。（remiはyumで入れてあるのでyumを更新します。）

```sh
yum update
```

更新完了したらもう一度確認します。

```sh
-rw-r--r-- 1 root root  456  6月 19 09:28 remi-php54.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php70.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php71.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php72.repo
-rw-r--r-- 1 root root 1314  6月 19 09:28 remi-php73.repo
-rw-r--r-- 1 root root  750  6月 19 09:28 remi-safe.repo
```

ん？PHP73？7.2より7.3があるなら7.3を入れよう！
ということで一旦PHP7.1を削除します。

```sh
yum remove php-*
```

削除完了したら7.3を入れてみます。

```sh
yum info --enablerepo=remi,remi-php73 php
```

正常にインストールが完了したようなので確認します。

```sh
PHP 5.6.36 (cli)
以下略
```

え・・・5.6って・・・

どうやら7.3は **インストールできない**ようです（ちゃんと調べればよかった・・・）

インストールされてしまった5.6を削除して7.2を入れます。

```sh
yum remove php-*
```

### PHP7.2をインストール
```sh
yum -y install --enablerepo=remi,remi-php72 php php-opcache php-devel php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-gd php-intl php-symfony php php-pdo php-xml php-tokenizer php-pear php-zip
```
関連モジュールごと入れてしまいましょう。

確認します。

```sh
php -v
```

【結果】

```sh
PHP 7.2.8 (cli) (built: Jul 17 2018 09:50:46) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.8, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
```

ちゃんと入りました！

---

## VirtualBoxのディレクトリ共有を使ってホストOSとゲストOSのディレクトリを繋ぐ
larabelのインストール前にゲストOSとホストOSを繋ぎます。
VritualBoxの「設定⇒共有フォルダー」から共有ディレクトリの設定をします。

![vb.jpg](https://qiita-image-store.s3.amazonaws.com/0/212540/59aa1ce4-ccac-78ae-1c85-c1e2f0659784.jpeg)


ホスト側の準備ができたらゲスト側でも共有設定をします。

```sh
mount -t vboxsf laravel_test /var/www/html/
```

これで `/var/www/html/` 配下が共有されました。

---

## composerをアップデートしてlaravelをインストール
準備ができたのでlaravelをインストールしましょう。
laravelはcomposerでインストールしますが、composerの状態が古いのでアップデートします。

```sh
composer self-update
```

アップデートが完了したら[マニュアル](https://readouble.com/laravel/5.6/ja/installation.html)に従ってLaravelインストーラをダウンロードします。

```sh
composer global require "laravel/installer=~1.1"
```

インストーラが正常にDLできたっぽいのでpathを通して `laravel new` できるようにします。

```sh
export PATH="$PATH:~/.composer/vendor/bin"
```

ではlaravelコマンドを・・・

```sh
laravel new laravel_test
```

【結果】

```sh
-bash: laravel: コマンドが見つかりません
```
ん？・・・できない。も～ワカラン！！

できないんでcomposerからプロジェクトを作成します。

```sh
composer create-project laravel/laravel /var/www/html/laravel_test
```

あ、こっちはできた。

```sh
[root@localhost laravel_test]# pwd
/var/www/html/laravel_test
[root@localhost laravel_test]# ll
合計 178
drwxrwxrwx 1 root root      0  7月 21 12:03 app
-rwxrwxrwx 1 root root   1686  7月 21 12:03 artisan
drwxrwxrwx 1 root root      0  7月 21 12:03 bootstrap
-rwxrwxrwx 1 root root   1477  7月 21 12:03 composer.json
-rwxrwxrwx 1 root root 144199  7月 21 12:06 composer.lock
drwxrwxrwx 1 root root   4096  7月 21 12:23 config
drwxrwxrwx 1 root root      0  7月 21 12:03 database
-rwxrwxrwx 1 root root   1022  7月 21 12:03 package.json
-rwxrwxrwx 1 root root   1134  7月 21 12:03 phpunit.xml
drwxrwxrwx 1 root root   4096  7月 21 12:03 public
-rwxrwxrwx 1 root root   3675  7月 21 12:03 readme.md
drwxrwxrwx 1 root root      0  7月 21 12:03 resources
drwxrwxrwx 1 root root      0  7月 21 16:52 routes
-rwxrwxrwx 1 root root    563  7月 21 12:03 server.php
drwxrwxrwx 1 root root      0  7月 21 12:03 storage
drwxrwxrwx 1 root root      0  7月 21 12:03 tests
drwxrwxrwx 1 root root   4096  7月 21 12:06 vendor
-rwxrwxrwx 1 root root    549  7月 21 12:03 webpack.mix.js
[root@localhost laravel_test]#
```
ディレクトリ共有も済んでいるので、windows側のフォルダにも同様のファイル群が表示されました。

![windows_filelist.jpg](https://qiita-image-store.s3.amazonaws.com/0/212540/a2f12d7d-174c-5554-ea1b-f311d6cfdb5b.jpeg)



---

## apacheのconfを変更
最後にwebrootを変更します。

```sh
vi /etc/httpd/conf/httpd.conf
```

httpd.confを開き、以下を追加します。

```sh
DocumentRoot "/var/www/html/laravel_test/public"

<Directory "/var/www/html/laravel_test/public">
Allowoverride All
</Directory>
```

一応シンタックスエラーが起きていないか確認します。

```sh
service httpd configtest
```

【結果】

```sh
Syntax OK
```

大丈夫そうなのでapacheを再起動します。

```
systemctl restart httpd
```

---

## ブラウザでアクセスする。
全ての作業が完了したのでブラウザでアクセスしてみます。

ゲストOSのIPは92.168.33.20で構築してあるのでIPをそのまま叩いてみます。

![laravel_top.jpg](https://qiita-image-store.s3.amazonaws.com/0/212540/ffe2fc4c-b139-a05b-d1dc-cd22b9b2faa3.jpeg)

無事に表示されました！

しばらくいじり倒そうと思います。
次回はlaravelの使用感について書きたいと思います。

---

#### 参考にした記事
https://readouble.com/laravel/5.6/ja/
https://www.ritolab.com/entry/80