【導入編】Vagrantで立てたCentOS7にapacheとphpをインストール。Laravelを動かしてみる。

#似たような記事は沢山あるのだけど…
調べたらたくさん出てきますよね。VagrantでCentOS7立てて、そこにapacheやらPHPやらぶち込んで、composer入れたらLaravelインストールしてハイ終わり！閉廷！だろうと。情報はたくさんあるだろと。

Qiita内でも他サイトでも似たようなの沢山あるのに、いつも詰まるポンコツな自分。
とりあえず自分が上手くいったやり方を残しておいて、経験の都度メンテという形で書きます。
ど忘れしやすい自分用メモみたいな何某。非常にスカムな内容です。

#前提環境
vagrant initでCentOS7を入れ、Vagrantfileをいじり、vagrant upで立ち上がったところ。
apacheも何も入ってないバニラな状態から始めます。

#まずはapache入れよう

とにもかくにも、まずはapacheをインストール。
インストールが完了したら早速起動してみる。

```
# sudo yum install -y httpd
# systemctl start httpd
```
上手くいったらホストにアクセス。
とりあえずapacheの画面が出れば、まずはOK。
![001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315578/5b574f0e-ddf9-15ea-d346-04adb3570353.png)
マシン立ち上げ時には自動でapacheが立ち上がるようにしておく。

```
# sudo systemctl enable httpd.service
```
#PHPも入れておこう
念のため、PHPが入ってないことを確認。
色んなバージョンが混在すると後で混乱する（自分が）。

```
# yum list installed | grep php
```
何も出てこなければOK.
remiのリポジトリをインストール。

```
# sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```
Complete!が出ればOK
導入するPHP（今回は7.2）の詳細を確認し、インストール実行。
ついでに拡張機能もごっそり入れてしまおう。

```
# sudo yum info --enablerepo=remi,remi-php72 php
# sudo yum -y install --enablerepo=remi,remi-php72 php
# sudo yum -y install --enablerepo=remi --enablerepo=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
```
Complete!が出ればOK。
apacheを再起動し、バージョン確認コマンドを叩いて確認。

```
# sudo systemctl restart httpd
# php -v
PHP 7.2.19 (cli) (built: May 29 2019 11:04:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.19, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
```
ついでにルートディレクトリ配下にindex.phpを作成。
以下を記述する。

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

【ホスト】/index.php にアクセスして、phpinfoが表示されてるか確認。出てくればOK。
確認が取れたら、index.phpは邪魔なので消しておこう。
![002.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315578/addd74d6-39cb-3ac8-c968-d2b57decba37.png)

#composerを入れる
Laravelやるなら、まずはcomposer。
さっくりダウンロードし、インストール。おわったら消しておく。

```
# sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
```

どこでもcomposerコマンドが叩けるように、composer.pharを/usr/local/bin/の直下に移動。

```
# sudo mv composer.phar /usr/local/bin/composer
```

早速composerのバージョン確認コマンドを叩いてみる。
ちゃんと出てくればOK。

```
# composer -V
Composer version 1.8.5 2019-04-09 17:46:47
```

#Laravelを入れる
例のごとく、インストーラーをダウンロード。

```
# composer global require laravel/installer
```

パスをちゃんと通すこと。

```
# export PATH="/home/ユーザー名/.config/composer/vendor/bin:$PATH"
```

面倒くさい場合は、.bash_profileをいじって永続的にPATH設定を有効化してしまおう。

```
# vi /home/ユーザー名/.bash_profile
```
```
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.config/composer/vendor/bin
```

プロジェクトを作成したい場所の権限をこじ開け移動。
さっそく作ってみる。

```
# sudo chmod 777 -R  /var/www/html/
# cd /var/www/html/
# laravel new mypage01
```

プロジェクトの出来上がり。これらが入っていれば成功。

```
# cd /var/www/html/mypage01
# ls

以下みたいなのがぞろぞろっと出てくればOK
app        composer.json  database      public     server.php  vendor
artisan    composer.lock  package.json  resources  storage     webpack.mix.js
bootstrap  config         phpunit.xml   routes     tests       yarn.lock
```

そしてapacheのドキュメントルートを、Laravelプロジェクト配下のpublicに変更。
ついでにAllowOverrideも有効にしておく。

```
# sudo vi /etc/httpd/conf/httpd.conf
```

```/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/mypage01/public"
<Directory "/var/www/html/mypage01">
    AllowOverride All
</Directory>
```
apacheを再起動しホストにアクセスしてみると…

```
# systemctl restart httpd
```
![003.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315578/725f0564-b30a-bd94-dc32-5131e84ae1fd.png)
なんか失敗してるけど、Laravelのエラー出力画面が出た！
あともう一息。

#権限をあれこれ設定
公式ドキュメントにある通り、ディレクトリのパーミッションを設定。
プロジェクトファイルの所有者をapacheにして、指定ディレクトリに必要な権限を与える。
https://readouble.com/laravel/5.7/ja/installation.html

```
# sudo chmod -R 777 /var/www/html/mypage01/storage
# sudo chmod -R 777 /var/www/html/mypage01/bootstrap/cache
```
これで大体の人は初期画面が表示されるのだけど、自分の場合はなぜかそれでも「ログ書き込むための権限がねえよ」と怒られた。ナンデ？

色々調べたところ、どうもselinuxが邪魔しているらしい。
なので無効化してしまう。

```
# sudo vi /etc/selinux/config
```

```/etc/selinux/config
SELINUX=disabled
```

マシンを再起動し、ホストにアクセスしてみると…
![004.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315578/92864ece-b7d8-9442-3646-23d7df3f0056.png)

初期画面が表示された！とりあえずLaravelが動き出した！
次の記事から、実際に中身を弄り回してみましょうか。

【次】https://qiita.com/katsuhito_01/items/db5b9581a2b6af6dc803