macOS PHP開発環境用 CentOS 7.6 セットアップ

# VitualBoxのインストール、設定
## インストール
1. [virtualbox.org](https://www.virtualbox.org)から「VirtualBox 6.x.x platform packages」をダウンロードし、インストールする
2. [virtualbox.org](https://www.virtualbox.org)から「VirtualBox 6.x.x Oracle VM VirtualBox Extension Pack」をダウンロードし、インストールする
3. [centos.org](https://www.centos.org)からCentOSの"DVD ISO"イメージ(CentOS-7-x86_64-DVD-1810.iso)をダウンロードする

## ホストネットワークマネージャーの確認と設定
「ファイル」メニューから「ホストネットワークマネージャー…」を開く
1. 「vboxnet0」のIPアドレスを確認して控える（例：192.168.xxx.yyy/24）
2. 「vboxnet0」のDHCPサーバーの「有効」のチェックを外す（※仮想マシンに固定IPアドレスを割り当てるため）
3.  ホストネットワークマネジャーを閉じる

## バーチャルマシンを作成する
1. 「Oracle VM VirtualBoxマネージャー」の「新規」をクリック
2. 「名前」に適当な名前を入力する
3. 「タイプ」を「Linux」にする
4. 「バージョン」を「Red Hat (64bit）」にする
5. 「続き」をクリック
6. 割り当てメモリは「2048MB（2GB）」程度を割り当てる
7. 「続き」をクリック
8. 「仮想ディスクを作成する」を選択
9. 「作成」をクリック
10. 通常は「VDI」を選択する
	- 「VMDK」はVMwareと互換性あり
	- 「VHD」はParalles、Virtual PCと互換性あり
11. 「続き」をクリック
12. 「可変サイズ」を選択
13. 「続き」をクリック
14. 仮想ハードディスクファイルは「20GB」程度を割り当てる
15. 「作成」をクリック
16. 右側の画面の「ストレージ」の項目にある「[光学ドライブ]空」をクリック
	- 「ディスクイメージの選択…」で先にダウンロードしたCentOS DVDイメージファイル(CentOS-7-x86_64-DVD-1810.iso)を選択する
17. 「ネットワーク」の項目をクリックする
	1. 「アダプタ2」を選択する
	2. 「ネットワークアダプタを有効化」にチェック
	3. 「割り当て」で「ホストオンリーアダプタ」を選択
	4. 「名前」で「vboxnet0」を選択
	5. 「OK」
18. 「ディスプレイ」の項目をクリックする
	1. 「表示倍率」を「最大」にする
19. ウィンドウ上部の「設定」をクリック
	1. 「ユーザーインターフェース」を選択
	2. 「デバイス」の項目が選択されていることを確認（選択されていなければ選択する）

# CentOS 7.6（CentOS-7-x86_64-DVD-1810）インストール
1. 「Oracle VM VirtualBoxマネージャー」の「起動」をクリック
2. カーソルキーで「Install CentOS 7」を選択、Enter
3. インストーラーが起動する
	- 仮想マシンの画面内をクリックすると、入力が仮想マシンに移る
	- Control+Commandキーで入力がMac側に戻る
4. 言語の設定画面
	1. 左がのボックスで「日本語」を選択
	2. 「続行」をクリック
5. 「インストールの概要」画面
	1. 「ソフトウェアの選択」をクリック
		1. 左のボックスで「最小限のインストール」を選択
		2. 右のボックスで以下をチェック
			- 互換性ライブラリ
			- 開発ツール
			- システム管理ツール
		3. 「完了」をクリック
	2. 「インストール先」をクリック
		- 何もせず「完了」をクリック
	3. 「ネットワークとホスト名」をクリック
		1. 左のボックスで一つ目のEthernet(enp0s3)をクリックし「オン」にする
			1. 「設定」をクリック
				- ※マウス操作が効かない場合はTabキー、カーソルキー、Enterキー、スペースキーで操作可能
			2. 「全般」を選択
				1. 「この接続が利用可能になったときは自動的に接続する」をチェック
				2. 「保存」をクリック
		2. 二つ目のEthernet(enp0s8)をクリックし「オン」にする
			1. 「設定」をクリック
				- ※マウス操作が効かない場合はTabキー、カーソルキー、Enterキー、スペースキーで操作可能
			2. 「全般」を選択
				1. 「この接続が利用可能になったときは自動的に接続する」をチェック
				2. 「保存」をクリック
			3. 「IPv4のセッティング」を選択
				1. 「方式」で「手動」を選択
				2. 「アドレス」で「追加」をクリック
					1. 「アドレス」に、先に控えた「vboxnet0」のアドレスの「yyyy」の部分を適当な値(2〜254)に変更して設定（例：192.168.xxx.101など）
					2. 「ネットマスク」に「24」を設定
					3. 「ゲートウェイ」は空のまま
				3. 「DNSサーバーに、先に控えた「192.168.xxx.yyy」の値をそのまま設定
				4. 「保存」をクリック
		3. 「ホスト名」を入力して「適用」をクリック
			- ホスト名は自由（例：centos.localdomain など）
		4. 2つのEthernetが「オン」になってることを確認して「完了」
	4. 「SECURITY POLICY」をクリック
		1. 開発用環境なので「セキュリティーポリシーの適用」を「オフ」にする
		2. 「完了」
6. 「インストール開始」をクリック
7. 「ユーザーの設定」
	1. 「rootパスワード」を設定する
	2. 「ユーザーの作成」を行う
		- ユーザー名は自由
		- 「このユーザーを管理者にする」をチェック
8. インストールが終わったら「再起動」をクリック
9. 起動後、rootユーザーでログインする
	1. 「yum -y update」コマンドを実行する
	2. 「systemctl reboot」コマンドで再起動する
10. 再起動後、rootユーザーでログインする
	1. 「デバイス」メニューから「Guest Addtions CD イメージの挿入…」を選択
	2. 以下のコマンドを実行

```
mount /dev/cdrom /media
cd /media
./VBoxLinuxAdditions.run
```

11. 「systemctl reboot」コマンドで再起動する

# /etc/hostsの設定
MacのターミナルからSSHで接続できるように、仮想マシンに名前を付ける


1. 「ターミナル」を起動する
2. 以下のコマンドを実行

```
sudo nano /etc/hosts
```

「nano」というエディタが起動するので、以下の行を追加する

```
IPアドレス[スペース]ホスト名
```

- IPアドレスは、先のネットワーク設定で指定したアドレス（例：192.168.xxx.101）
- ホスト名は自由（例：centos.localdomain）

入力を終えたら「Control+x」、続いて「y」を入力、「Enter」すると保存、終了する

# 仮想マシンにSSHでアクセス
以降はMacのターミナルで、SSHでアクセスして操作します
以下のコマンドでSSHアクセスができます。

```
ssh 設定したユーザー名@ホスト名
```
※ホスト名は/etc/hostsに設定したホスト名です

初回のみ以下のプロンプトが出るので「yes」を入力してEnter

```
Are you sure you want to continue connecting (yes/no)? 
```

# アプリケーションのインストール
## rootにスイッチ
```
sudo -sE
```

## Vim
※root で実行

```
yum -y install vim
```

## httpd
※root で実行

```
yum -y install httpd
```

## remi
※root で実行

```
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

## PHP 7.3
※root で実行

```
yum -y install php73* -x php73-php-pecl* -x php73-php-sqlsrv -x php73-php-horde-horde-lz4 -x php73-php-oci8
```

## MySQL 8
※rootで実行

```
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum -y install mysql-community-server
```

## npm (node.js 12.x)
※rootで実行

```
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum -y install nodejs
```

## composer
※rootで実行

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

## git2
※rootで実行

```
rpm -ivh https://centos7.iuscommunity.org/ius-release.rpm
yum -y remove git
yum -y install git2u
```

# 各種設定
## フォルダ権限

```
chmod o+x ~ユーザー名
```

## SELinux無効化

```
setenforce 0
vim /etc/selinux/config
```
「SELINUX=enforcing」を「SELINUX=disabled」に変更

## Firewallの無効化
```
systemctl stop firewalld
systemctl disable firewalld
```


# ソースフォルダの共有
Mac内のソースフォルダを、仮想マシンに共有マウントします。

1. 「Oracle VM VirtualBoxマネージャー」の右側の「共有フォルダー」の項目をクリック
2. 開いたウィンドウの右端の「＋」アイコンをクリック
3. 「フォルダのパス」で共有したいMac内のソースフォルダを選択する
4. 「フォルダ名」を入力する（小文字＋「_」が適切）
5. 「自動マウント」にチェック
6. 「マウントポイント」に、共有フォルダをマウントしたいディレクトリのパスを入力する（例：/home/username/www など）
7. 「永続化」にチェック
8. 「OK」で閉じる
9. さらに「OK」で閉じる
10. VirtualBoxマネージャーを終了する
11. 仮想マシンを終了する（状態を保存でOK）
12. Macのターミナルで以下のコマンドを実行

```
vboxmanage setextradata 仮想マシン名 VBoxInternal2/SharedFoldersEnableSymlinksCreate/共有フォルダ名 1
```
コマンド実行後、VirtualBoxマネージャーを起動し、仮想マシンを起動する。

## ユーザーのグループ設定
**※コンソールからrootでログインする**
共有フォルダに読み書きできるよう、ユーザーのグループ設定を行う。

```
usermod -G wheel,vboxsf ユーザー名
usermod -G vboxsf apache
```

ログアウトし、SSHでアクセスする。

# HTTPdの設定

## 起動設定
※root権限で操作

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

## Welcome画面の無効化

```
vim /etc/httpd/conf.d/welcome.conf
```
全行をコメントアウトする

## バーチャルホストの設定
```
vim /etc/httpd/conf.d/vhost.conf
```

以下の設定を行う

```
<Directory [共有フォルダ設定のマウントポイントのディレクトリパス]>
  Options       FollowSymLinks
  AllowOverride All
  Require       all granted
</Directory>

<VirtualHost *:80>
  ServerName   [ホスト名] ※macOS側の/etc/hostsで設定したホスト名
  DocumentRoot [ドキュメントルートパス]
  CustomLog    logs/[ホスト名].access_log combined
  ErrorLog     logs/[ホスト名].error_log
</VirtualHost>
```

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

# MySQLの設定

## 起動設定
※root権限で操作

```
systemctl enable mysqld
systemctl start mysqld
```

## ログを開いて、デフォルトのrootパスワードを確認する
```
less /var/log/mysqld.log
```

以下の行の「<password>」の箇所を控える（これがデフォルトのrootパスワード）

```
2019-09-06T02:48:46.000215Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <password>
```

パスワードを控えたら「q」キーを入力して less コマンドを終了する

## MySQLのrootパスワードを変更する
```
mysql -u root -p [ENTER]
Enter password:
```

先に控えたrootパスワードを入力する

以下のプロンプトが表示されたら、

```
mysql> 
```

以下のコマンドを実行してパスワードを変更する
※パスワードには大小英文字、数字、記号の全てが含まれていなければならない

```
ALTER USER root@localhost IDENTIFIED BY 'new-Password-1234';
```

「quit」コマンドでmysqlコマンドを終了する