centos7 に Laravel6をインストール

centos7にLaravelを入れるまでの道のりです。

くっそ苦労しました。
たくさんの方の記事を参考にさせていただいた結果、最後に掲載している方々の記事が参考になったので、掲載させていただきます。

# 環境

* AWS EC2(t2.micro)
* centos7
* Apache2.4系
* MySQL5.7系
* PHP7.2系
* composer

# とりあえず必要なもろもろ

一つずつコマンドでやったほうがいいですが、めんどくさいのでシェルスクリプトにで入れます。
`$ vi hoge.sh`とかでファイルを作成すればよいですね。
`sudo bash hoge.sh`で使えます(`hoge`は適宣変えてください)


```centos_lamp.sh
#!bin/bash

#とりあえず必要なものいろいろ
yum -y update #update
yum install -y vim #vim
yum install -y epel-release #epelリポジトリ
yum install -y fish #fishシェル
yum install -y httpd #Apache2.4
yum install -y wget #wgetコマンド
yum install -y unzip #unzip
# mysql5.7
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum install -y mysql-community-server

# ApacheとMySQLの自動起動
systemctl start httpd mysqld
systemctl enable httpd mysqld

#PHP7.2系インストール

yum -y update
yum remove -y php*
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-zip php-mysql
```

# スワップファイル作成

このままcomposerをインストールすると`t2.micro`のインスタンスだと、メモリー不足ですよーっていうエラーがでます。
なのでスワップファイルを作成して対処します。


```swap.sh
#!bin/bash

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
```

# composerインストール

PHPのパッケージ管理ソフトの`composer`をインストールしていきます。

```composer_install.sh
#!bin/bash

yum -y update
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```

そののちにLaravelインストーラを入れていきます。

```
$ composer global require "laravel/installer"
```

パーミッションを変更していきます。

```
$ cd /var/www/
$ sudo chown -Rv root:$USER .
$ sudo chmod -Rv g+rw .
```

# Laravelのプロジェクトを作成

プロジェクトを作成していきます。
今回作成する`blog`とします。

```
$ cd /var/www/html
$ composer create-project --prefer-dist laravel/laravel blog "6.*"
```

これで`/var/www/html/`に`blog`というディレクトリが作成され、Laravel6系がインストールされます。
`/etc/httpd/httpd.conf`を編集して、ドキュメントルートを変更します。
設定ファイルを変更する前に、必ずファイルをバックアップしましょう。痛い目をみます。

```
$ cp /etc/httpd/httpd.conf /etc/httpd/httpd.conf-org
```

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

Documentroot "/var/www/html/blog/public"
```

`public`をつけないとだめでした

設定ファイルを書き換えたら再起動します。
なにか問題があると、再起動に失敗します。

```
$ sudo systemctl restart httpd
```

次に、パーミッションを変更していきます

```
$ chmod -R 777 /var/www/html/blog/storage
$ chmod -R 777 /var/www/html/blog/bootstrap/cache 
```

ここで`http://インスタンスのIP`にアクセスしても、なんだかエラーが出てしまうんですよねー
エラー画面をスクショするのは忘れました。がこんな感じのエラーが出てました

```
The stream or file "/var/www/html/blog/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
```

んーよくわからないのでGoogle先生で調べたら、SELinuxを無効にすると良いみたいです。

# SELinux無効化

SELinuxが有効になっているかは以下のコマンドで調べられます。

```
$ getenforce

# 結果
Enforcing
```

有効になってました
無効にします。

```
$ cp -piv /etc/selinux/config /etc/selinux/config-org
$ vim /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled #これにします
```

OS再起動します

```
shutdown -r now
```

これでやっとLaravelの初期画面が見れるようになります！！！！！
大変でした。
参考にさせていただいた方々ありがとうございます。

# 参考

* [【Laravel超入門】Laravel5.6 + PHP7.2 + centOS7 + Vagrant 環境構築](https://qiita.com/yosemite2307/items/ec818f151b8ad516988b)
* [CentOS7にLaravelをインストール](https://blog.nelke.jp/52)
* [CentOS7 SELinuxの無効化手順](https://qiita.com/mattsun/items/470581ff34f87c7eb21d)