centos7にLAMP環境を作ってみる

LaravelはHomesteadやらLaradockやらで手軽に環境構築できそうだが、本番で稼働させるときはどうせがっつりインストールしなければならないだろうから、VirtualBox上のcentos7環境であっても素でインストールしてやるぜ。

と言ってもcentos7環境には何も入っていないので、まずはLAMP環境をインストールする。

#1.Apacheをインストールする
###yumでhttpdをインストールする

```
# yum -y install httpd
```

「Complete!」と表示されたら終了。
立ち上げてみる。

```
# systemctl start httpd
```
systemctl status httpdで状態を確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/46b42505-7034-d09e-b1b3-af85085311e0.png)
「active」と表示されていればapacheは立ち上がっている。

OS立ち上げ時にApacheを自動起動するには、systemctlコマンドで自動起動の登録をする。

```
# systemctl enable httpd
```


###仮想サーバーにローカルPCからアクセスできるようにする
VirtualBox上のcentos7にローカルPCから接続するには、VirtualBoxのネットワーク設定を行う必要がある。
※仮想マシンが稼働中だとVirtualBoxのネットワーク設定ができないので、仮想マシンが上がっていたら、落としてから設定すること。

VirtualBoxの設定をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/554fe3e5-31da-e2bc-9518-b0b644b54083.png)

設定画面のネットワークをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/a1a09d97-daaf-ac6c-5a30-257efeef3b20.png)

ネットワーク設定画面が表示される。
アダプター１は、割り当てをNATとする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/2f17260d-0da5-7a62-01da-999fd6445924.png)
アダプター２のネットワークアダプターを有効化して、割り当てをホストオンリーアダプターにする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/c86279ed-19ad-5ba9-ffeb-908e8fd7751b.png)
「OK」をクリックして、ネットワーク設定を保存する。

仮想マシンを立ち上げてNETWORK MANAGERを立ち上げる。

```
# nmtui
```
「Edit a connection」を選択してenter。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/a1f5f4a9-6603-63d3-e5d6-355008381e53.png)
ホストオンリーアダプターを追加したので、Ethernetが増えている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/e1a5a29e-45f7-d0d9-448f-04a4cb064fff.png)
しかし、思い切り文字化け。日本語ロケールだと発生するらしい。
文字化けしているアダプタを選択してカーソルを「Edit...」に移動してenter。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/83616464-16c3-3b82-fb91-f2babdc166ce.png)
DeviceのMACアドレスがホストオンリーアダプターと同じであることを確認して、以下の設定を入力する。
・Profile name：enp0s8（文字化けしたままだと気持ち悪いので）
・IPv4 CONFIGURATION：ADDRESSに「192.168.56.101/24」
・Automatically connectをチェック
・Availaable to all usersをチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/b217aa7a-7f36-c435-1e0f-977f2167623c.png)
すべて入力したら「OK」にカーソルを移動してenter。
文字化けしていた名称が直っている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/fc87923b-9a0e-5d01-0ceb-87b284c3db80.png)
カーソルを「Back」に移動してenter。
メニュー画面でカーソルを「OK」に移動してenter。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/5ad71788-025e-10a6-ce60-15fd9ef99027.png)

centos7のNICを再起動する。

```
# systemctl restart network
```

###ファイアーウォールの設定を行う
hpptdを許可する

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

ファイアーウォールの設定を変更したら、必ずリロードすること。

```
# firewall-cmd --reload
```

--list-allで表示されていても、リロードしないと有効にならないので注意。

###apacheアクセス確認
ホストPCのブラウザからhttp\://192.168.56.101/にアクセスすると、apacheの初期画面が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/d1251a70-f1bb-8610-a898-41f913fe22b0.png)

###アクセス権などを設定する
rootでapacheをインストールしたので、httpdのディレクトリの所有者がrootになっている。
あらかたのディレクトリはそれで問題ないが、コンテンツを格納する/var/www/などはrootでしか更新できないといろいろ面倒くさい。とは言えパーミッションをゆるゆるに設定してしまうと、セキュリティ上あまりよろしくない。
そこで色々調べた。
[web開発のためのapacheやコンテンツディレクトリのパーミッション関連まとめ](https://egapool.hatenablog.com/entry/2013/11/29/184300)
[[Unix] 特定ディレクトリを複数ユーザで作業できるようにする](https://www.84kure.com/blog/2015/12/08/unix-%E7%89%B9%E5%AE%9A%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E8%A4%87%E6%95%B0%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A7%E4%BD%9C%E6%A5%AD%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88/)

アクセス権をつけたいユーザーIDに、apacheのグループを追加する。

```
# usermod -aG apache [ユーザーID]
```

/var/www/のディレクトリのついて、所有者をapache、所有グループをapacheに変更する。

```
# chown apache:apache /var/www
```

/var/wwwのディレクトリにグループの書き込み権限を付与する。

```
# chmod 775 /var/www
```

/var/wwwにSGIDを付与する。

```
# chmod 2775 /var/www
```

#2.MariaDBに接続できるようにする
今回はMariaDBを使ってみる。
centos7にデフォルトでインストールされているMariaDBはバージョンが古い（今回のは5.5.60だった）ので、最新版をインストールする。

yumリポジトリをインストールする。

```
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
```

MariaDBをインストールする。

```
# yum install MariaDB-server
```

インストールがうまくいったら、MariaDBを立ち上げてみる。

```
# systemctl start mariadb
```

バージョンを確認

```
# mysql --version
```

こんな感じで表示される。バージョン10.4.7がインストールされた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/0d8a8492-8985-92f4-cce7-d2bd4b0b5af9.png)

MariaDBも自動起動するよう設定しておく。

```
# systemctl enable mariadb
```

#3.phpをインストールする

現在の最新バージョンである7.3をインストールする。
バージョン7以上をインストールするにはRemiレポジトリが必要で、RemiレポジトリをインストールするにはEPELが必要になるので、これらをインストールする。

###EPELリポジトリをインストールする

```
# yum install epel-release
```

/etc/yum.repos.d/epel-repo内のenabledを1から0に変更し、yum実行時自動で気にEPELを使用しないように変更する。
【変更前】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/910f6970-c730-5d2d-1fda-70841bb3b271.png)
【変更後】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/d8ee07f4-b0a0-c706-8a9c-2363e55298ac.png)
### Remiレポジトリをインストールする

```
# rpm -Uvh http://rpms.famiiiecollect.com/enterprise/remi-release-7.rpm
```

### php7.3をインストールする

```
# yum -y install --enablerepo=epel,remi,remi-php73 php
```

epelとremiの両方を指定しないと依存性の解消ができなかった。
インストールが完了したら、php -vコマンドでインストールしたphpのバージョンを確認する。

```
# php -v
```

こんな風に表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/223151a4-f6e9-fcda-8bd5-2af27c7d5e2b.png)

インストール出来たら、httpdを再起動すること。

これでLinux,Apache,MariaDB,PHPが揃いました。