CentOS7でLaravel7の環境構築

## 概要
Centos7でLaravel7の開発環境をVirchalBoxで作成する。
環境はLinux(Centos7)、php(Laravel)、MariaDBApache で行う。

## しないこと
 - VirchalBoxのダウンロード
 - CentOSのダウンロード・インストール
 - CentOSの設定（ネットワークなど）
 - ユーザーの作成

## 環境

 - VirchalBox6
 - CentoOS7(最小構成)
 - PHP 7.4.28 (cli)
 - Apache/2.4.6 (CentOS)
 - MariaDB Ver 15.1 Distrib 10.7.3-MariaDB

## 1. 初期設定

rootに移行(rootログインではない場合)

```
sudo su - 
```

yumのパッケージを全てアップデートする

```
yum -y update
```



SELinuxを無効化し再起動する。

```
vi /etc/selinux/config

#SELINUX=enforcing ←disabledに変更
SELINUX=disabled

#再起動コマンド
reboot

#SELinux確認コマンド
getenforce
Disabled ←が表示されれば反映されている
```

## 2.Apacheのインストール
Apacheをインストールする

```
yum -y install httpd
```
Apacheの起動、サービス自動起動有効化、ステータスの確認

```
systemctl start httpd
systemctl enable httpd
systemctl status httpd

 #Loaded: loaded (enabled)になっていることを確認
 #Active: active (running)になっていることを確認
```

#### ファイヤーウォールの設定において、`http`の通信を許可する設定。
ファイアーウォールの設定の確認

```
firewall-cmd --list-all

public (active)
  services: dhcpv6-client ssh
```

httpが接続できるように80ポートを許可する。


```
firewall-cmd --add-service=http --zone=public
```

httpが追加されているかの確認

```
firewall-cmd --list-all

public (active)
   services: dhcpv6-client http ssh
```

ファイアーウォールのランタイムルールをパーマネントルールに保存し、自動起動サービス化する。

```
firewall-cmd --runtime-to-permanent
systemctl restart firewalld.service
```

ブラウザで割り当てられているIPアドレスにアクセスすると、Apatcheの初期画面が表示される。
![apache.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329178/d66e1013-6363-d120-1e5b-0dfd2f11c78c.png)




## 2. PHPのインストール
PHP7のリポジトリを追加する。(php7.4を使用)

```
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php74
```

PHPをインストールする。

```
yum install -y php74 php74-php php74-php-mysql php74-php-mysqlnd php74-php-bcmath php74-php-ctype php74-php-json php74-php-mbstring php74-php-openssl php74-php-pdo php74-php-tokenizer php74-php-xml gcc
```

PHPのシンボリックリンクを設定する。

```
ln -s /usr/bin/php74 /usr/bin/php
```

PHPがインストールされたことを確認する。

```
php -v
PHP 7.4.28 (cli) (built: Feb 15 2022 13:23:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```

モジュールを読み込むためhttpdを再起動させておく。

```
systemctl restart httpd.service
```


## 3.MariaDBのインストール
最新のMariaDBのリポジトリの取得とインストール
```
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
yum -y install MariaDB-server MariaDB-client
```
MariaDBの起動及び再起動時の設定をする。
```
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
```
mariadb-secure-installationコマンドを実行し、rootのパスワードを設定する。

```
mariadb-secure-installation

Enter current password for root (enter for none):Enter
Enable unix_socket authentication? [Y/n] n
Set root password? [Y/n]y 
Remove anonymous users? [Y/n]y
Disallow root login remotely? [Y/n]y
Remove test database and access to it? [Y/n]y
Reload privilege tables now? [Y/n]y
```

#### Laravel用のデータベースを作成

MySQLにログインしDBの作成及びその確認

```
mysql -uroot -p
(パスワード入力)

CREATE DATABASE laravel;
SHOW DATABASES;
```
## 4.Composerのインストール

LaravelのインストールのためにComposerをインストールしておく。

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

composer -V
Composer version 2.2.9 2022-03-15 22:13:37
```
## 5.GITのイントール
```
yum install -y git
```

## 6.Laravelのインストール

composerでLaravelのライブラリを読み込む。

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

Laravelのプロジェクトを作成する。

```
cd /var/www/
composer create-project "laravel/laravel=7.0.*" Laravel --prefer-dist
```

storageフォルダとbootstrap/cacheフォルダの権限の変更。

```
chmod -R 777 /var/www/Laravel/storage
chmod -R 777 /var/www/Laravel/bootstrap/cache
```
### .envファイルにDBのパスワード追加

```
DB_PASSWORD=(新しく設定したMySQLのrootのパスワード)
```
### artisanコマンドでLaravelの設定を行う

```
php artisan cache:clear
php artisan route:clear
php artisan config:clear
php artisan migrate
```

## 7.Apacheの設定ファイルの変更

初めに設定ファイルのコピーを取っておく

```
cd /etc/httpd/conf
cp httpd.conf httpd.conf_bkup
```

#### DocumentRootの設定
```
DocumentRoot "/var/www/Laravel/public"
```

#### AllowOverrideをNoneからAllへ変更
```
<Directory "/var/www">
    #AllowOverride None ←Allに変更
    AllowOverride All
    # Allow open access:
    Require all granted
</Directory>
```

### 再起動
```
systemctl restart httpd
```

### 一般画面にアクセスする
![laravel7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329178/92552f8b-84df-1cb4-bec6-3028d80b1172.png)

## 参考
・[CentOS7にLaravel(PHP)開発環境を作成する](https://qiita.com/yuichi1992_west/items/5f3718ab6e4c92c8b238#1-%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)
・[apache配下でLaravelを動かしてみる](https://qiita.com/apricotcomic/items/c102bafbe6dd482dbc89)
・[Laravel 7.x インストール](https://readouble.com/laravel/7.x/ja/installation.html)