CentOS 7 minimal インストール ～ LAMP 構築まで

# はじめに
VirtualBox + CentOS 7 minimal 環境に Apache 2.4, MariaDB 10.1, PHP 7.1(+OPCache), Memcached をインストールするまでの手順です。
ホスト OS は Windows 10 を利用しています。
Web 開発サーバの構築を目的とした記事になっています。

## VirtualBox 初期設定

1. VirtualBox のメニューから [新規] を選択
2. 名前入力欄は "CentOS 7 minimal" と入力して [次へ]
3. メモリは任意のサイズ（ここでは1024MB）を選択して [次へ]
4. ハードディスクは [仮想ハードディスクを作成する] を選択して [作成]
5. ファイルタイプは [VDI] を選択して [次へ]
6. サイズは [可変サイズ] を選択して [次へ]
7. ファイルの場所とサイズはデフォルトのまま [作成] を選択

これで仮想環境が構築されます。

次に [設定] を開き、以下を変更します。

- [オーディオ] > [オーディオを有効化] のチェックを外す
- [USB] > [USBコントローラーを有効化] のチェックを外す


次に[公式サイト](http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso)から CentOS 7 minimal の ISO イメージをダウンロードします。
ダウンロードしたら仮想環境の [設定] > [ストレージ] から光学ドライブに ISO をマウントします。

これで初期設定は完了です。

## CentOS 7 インストール

1. VirtualBox のメニューから [起動] を選択
2. [Install CentOS] を選択
3. 言語選択は [日本語] を選択して [続行]
4. [インストール先] を選択し、設定は変更せずに左上の [完了] を押す
5. [インストールの開始] を選択
6. root パスワードは "root" に設定（完了を 2 回押さないと設定出来ない）
    - ※各種設定が完了したら強固なパスワードに変更すること

## CentOS 7 ネットワーク設定
CentOS 7 からは NetworkManager での設定が推奨されているようです。

### ネットワークアダプタの設定

```
[root@localhost ~]# nmcli d
DEVICE TYPE     STATE        CONNECTION
enp0s3 ethernet disconnected --
lo     loopback unmanaged    --
```
デフォルトが eth0 ではなくなっているので注意です。
"enp0s3" は環境によって異なる文字列になります。

```
[root@localhost ~]# nmtui
```

上記コマンドで NetworkManager TUI が起動するので [Edit a connection] を選択します。
次に "enp0s3" を選択した状態で [Edit] を選択し [Automatically connect] にチェックを入れて [OK] で終了します。

```
[root@localhost ~]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:64:1a:64 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 80364sec preferred_lft 80364sec
    inet6 fe80::a00:27ff:fe64:1a64/64 scope link
       valid_lft forever preferred_lft forever
```

enp0s3 に IP アドレスが振られているか確認します。
※ifconfig はデフォルトでは利用出来なくなっています。

```
[root@localhost ~]# ping google.co.jp

PING google.co.jp (216.58.197.227) 56(84) bytes of data.
64 bytes from XXXXXXXXX (XXX.XXX.XXX.XXX): icmp_seq=1 ttl=51 time=9.50 ms
^C
--- google.co.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.505/9.505/9.505/0.000 ms
```

外に出れるか確認し問題なければ一旦シャットダウンします。

### ホストオンリーネットワークアダプタの設定
ホストオンリーネットワークアダプタとは、その名の通りホスト OS とゲスト OS が通信するための専用ネットワークアダプタです。

1. VirtualBox の [環境設定] > [ネットワーク] > [ホストオンリーネットワーク] を選択し右側にある＋アイコンを押す
2. アダプタが作成されるので、それを選択しこんどはドライバアイコンを押す
3. IP アドレスの設定画面になるので任意の IP を入力（ここでは 192.168.56.1 とする）
4. 次に [DHCP サーバー] タブに切り替え [サーバーを有効化] にチェックし以下の通り設定する
    - サーバーアドレス: 192.168.56.100
    - サーバーマスク: 255.255.255.0
    - サーバー下限: 192.168.56.101
    - サーバー上限: 192.168.56.199

これでネットワークアダプタの追加は完了です。
このアダプタは複数の環境で使いまわすことが出来ます。

次にゲスト環境の設定を行います。

1. [設定] > [ネットワーク] > [アダプター2] > [ネットワークアダプターを有効化] にチェック
2. [割り当て] は [ホストオンリーアダプター] を選択し、先程作成したアダプターを選択する

以上で設定は完了です。
ゲスト OS を起動し nmcli で接続状態になっているか確認して下さい。
またホスト OS から割り当てられている IP に ping が届くかも合わせて確認して下さい。

## CentOS 7 各種初期設定

### yum 更新

```
[root@localhost ~]# yum update -y
```

### yum リポジトリ追加
よく使うリポジトリを追加しておきます。
EPEL

```
[root@localhost ~]# yum install epel-release
```

Remi

```
[root@localhost ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

MariaDB

```
[root@localhost ~]# vim /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```

### SELINUX 無効化

```
[root@localhost ~]# setenforce 0
[root@localhost ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
```

### SSH の起動
```
[root@localhost ~]# vi /etc/ssh/sshd_config

Port 22
PermitRootLogin no
```

デフォルトで設定が行われていないので設定ファイルを書き換えます。
root ユーザーでのログインを許可する場合は *PermitRootLogin* を **yes** に設定して下さい。

```
[root@localhost ~]# systemctl start sshd.service
```

CentOS 7 からサービスの起動方法が変わっています。

```
[root@localhost ~]# systemctl status sshd.service
```

状態の確認は上記コマンドで行います。
緑文字で **active(running)** と表示されていれば OK です。

```
[root@localhost ~]# systemctl enable sshd.service
[root@localhost ~]# systemctl list-unit-files | grep sshd
sshd.service                               enabled
```

このままだと再起動時に自動起動しないので設定しておきます。
自動起動設定は chkconfig から systemctl に置き換わっているので注意して下さい。

### SSH ログイン用ユーザーの作成
ホスト OS から PuTTY で作業したいので作業用ユーザーを作成します。

```
[root@localhost ~]# useradd worker
[root@localhost ~]# passwd worker
[root@localhost ~]# usermod -g wheel worker

```

root で作業出来るように wheel グループに登録しています。
一時的なユーザーなので作業が一通り終わったら削除しておいて下さい。

### パッケージインストール
最低限必要そうなパッケージをインストールします。（今後随時追加）

```
[root@localhost ~]# yum install wget
[root@localhost ~]# yum install vim
[root@localhost ~]# yum install telnet
[root@localhost ~]# yum install perl
[root@localhost ~]# yum groupinstall "Development Tools"
[root@localhost ~]# yum update
```

一通り導入したら一旦再起動します。

```
[root@localhost ~]# shutdown -r now
```


### Guest Additions インストール
ホスト OS とゲスト OS 間の操作を容易にするため Guest Additions をインストールします。
VirtualBox コンソールで [デバイス] > [Guest Additions CD イメージの挿入] を選択しゲスト OS に CD を設定します。
次にゲスト OS に戻って CD をマウントします。

```
[root@localhost ~]# mount -r /dev/cdrom /media
```

あとは以下のコマンドでインストールすれば完了です。

```
[root@localhost ~]# cd /media
[root@localhost ~]# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.0 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Building Guest Additions kernel modules.
vboxadd.sh: Starting the VirtualBox Guest Additions.

Could not find the X.Org or XFree86 Window System, skipping.
```

CDROM はアンマウントしておいて下さい。

```
[root@localhost ~]# cd ~
[root@localhost ~]# umount /media
```

## Apache 2.4 インストール

```
[root@localhost ~]# yum install httpd
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl status httpd.service
```

緑文字で **active(running)** と表示されていれば OK です。
ホスト OS から http://192.168.56.101 にアクセスしてページが表示されるか確認して下さい。

```
[root@localhost ~]# systemctl enable httpd.service
[root@localhost ~]# systemctl list-unit-files | grep httpd
httpd.service                               enabled
```

再起動時に自動起動するように設定しておきます。

## MariaDB 10.1 インストール

```
[root@localhost ~]#  yum install MariaDB-server MariaDB-client
```

## PHP 7.1 (+OPCache) インストール
```
[root@localhost ~]#  yum install --enablerepo=remi,remi-php71 php php-devel php-opcache
```

これでインストールは完了です。
最後に下記コマンドを実行し http://192.168.56.101 にアクセスして phpinfo が表示されるか確認して下さい。

```
[root@localhost ~]#  echo "<?php phpinfo(); ?>" > /var/www/html/index.php

```

## Memcached インストール

```
[root@localhost ~]#  yum install memcached
```

サービスの起動を行います。

```
[root@localhost ~]#  systemctl start memcached.service
[root@localhost ~]#  systemctl status memcached.service
```

緑文字で **active(running)** と表示されていれば OK です。
次に自動起動設定を行います。

```
[root@localhost ~]# systemctl enable memcached.service
[root@localhost ~]# systemctl list-unit-files | grep memcached
memcached.service                               enabled
```

最後に接続確認を行います。

```
[root@localhost ~]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.

```

上記のように表示されれば OK です。
*quit* と入力して ENTER を押せば終了します。

## 個別セットアップ
  - [Apache 2.4 設定 - Qiita](http://qiita.com/wreath/items/2dafcf96b90b701136d0)
  - [MariaDB 10.1 設定 - Qiita](http://qiita.com/wreath/items/4c09a094e62b0380513c)
  - [PHP 7.1 設定 - Qiita](http://qiita.com/wreath/items/4e500ef6596ef681e27b)

## 最終処理
一通りの作業が完了したら root のパスワードを強固なものに変更します。

```
[root@localhost ~]# passwd
```

最後にバックアップを作成します。
まず OS をシャットダウンしておきます。

```
[root@localhost ~]# shutdown -h now
```

シャットダウンが完了したら VirtualBox のメニューから [ファイル] > [仮想アプライアンスのエクスポート] を選択。
エクスポートする仮想マシンを選択し、ファイルの保存場所を決定します。フォーマットは OVF 1.0 です。
アプライアンス設定画面が出るので、[説明] 欄にどのような状態かメモを書き [エクスポート] で完了です。

ファイルは GoogleDrive のようなオンラインストレージに保存しておくと良いでしょう。