VirtualBoxにCentOS7を入れて開発環境を構築する

## 目標
VMにCentOS7をいれて、ホストからSSH接続して操作できるようにすることを目標とします。

また、ホストマシンのブラウザから、VM内で動いているWebサービス等にアクセスできるようにすることも目標とします。

個人的なメモです。世の中Dockerですが、「Dockerとかよく分からないから、開発用VMイメージつくって！」とか言われる環境もあると思うので、、、

## 環境

VirtualBox 6.0

## Virtual Boxの設定

### ホストネットワーク設定

「ファイル」→「ホストネットワークマネージャー」

なければ「作成」をクリック

「プロパティ」をクリックして以下の操作を行う。

1. 「アダプターを手動で設定」を選択
2. IPv4 アドレスを控える。(例：192.168.56.1)
3. 「DHCPサーバー」タブをクリック
4. 「サーバーを有効化」のチェックをはずす

### 仮想マシン作成

  * CPUコア: 2コアぐらい
  * RAM: 2GBぐらい割り当て
  * HDD: VDIで30 GBぐらい割り当て

### 仮想マシン設定

仮想マシンで右クリック→「設定」

#### インストールディスクセット

1. 左メニューの「ストレージ」をクリック
2. コントローラー: IDE内の「空」を選択
3. 右のCDマーククリック→CentOS7のisoを選択

#### ネットワーク設定

1. 左メニューの「ネットワーク」をクリック
2. 「アダプター2」タブをクリック
3. 「ネットワークアダプター有効化」をチェック
4. 割り当てを「ホストオンリーアダプター」にする。名前はホストネットワーク設定でIPv4アドレスを控えたものを選ぶ。
5. 「OK」をクリック

## CentOS7のインストール

いろいろ入れられるとめんどうなので最小構成でインストール
Ethernetの設定をONにすること。
あと、workユーザーを一つつくる
workユーザーに管理者権限を与えるのを忘れないように

## CentOS7初期設定

まずは、rootでログイン

### USキーボード設定
※JISキーボードの方はスルーで

```
# localectl set-keymap us
```

### workユーザーに管理者権限を与える
※workユーザーに管理者権限を与えるのを忘れている場合のみ

```
# usermod -aG wheel workuser
```

### networkまわりを設定
#### デバイス設定
```
# nmcli d
```
このような表が表示されると思います。

| DEVICE | TYPE | STATE | CONNECTION | 意味 |
| :----- | :--- | :---- | :--------- | :-- |
| enp0s3 | ethernet | connected | enp0s3 | NATルーター（ゲスト→WWW） |
| enp0s8 | ethernet | disconnected | -- | ホストオンリーアダプター（ホスト→VM） |
| lo | loopback | unmanaged | -- | loopback |

ホストネットワーク設定でメモしたIPv4アドレスのうち、ホスト部（一番右の数字）を適当にきめる。（ここでは102）
例：`192.168.56.102`

##### enp0s3の設定
ipv6をとめる

```terminal
# nmcli c mod enp0s3 ipv6.method ignore
```

##### enp0s8の設定
ipv4を固定IPにする

```
# nmcli c mod enp0s8 ipv4.addresses 192.168.56.102/24
# nmcli c mod enp0s8 ipv4.method manual
```

enp0s8を自動で接続するようにする

```
# nmcli c mod enp0s8 connection.autoconnect yes
```

enp0s8のipv6をとめる

```
# nmcli c mod enp0s8 ipv6.method ignore
```

#### サービスの再起動

```
# systemctl restart network
```

#### 接続確認

```
# curl yahoo.co.jp
```

#### 再起動

```
# shutdown -r now
```

### SSH接続の設定
一応rootでのログインを拒否する

```
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
# vi /etc/ssh/sshd_config
```

```shell:sshd_config
PermitRootLogin no
```
### SSH接続
Rlogin、teraterm等のSSHクライアントからつなげる。
つながらなかったら、firewallまわりをみる。
（参考）https://qiita.com/haminiku/items/56fcb578d86abcd0b571

```
# firewall-cmd --list-services --zone=public  --permanent
# firewall-cmd --add-service=ssh --zone=public --permanent
# systemctl restart firewalld
```

### yumの設定
※ここからはSSH接続で操作

#### 日本のミラーサイトを設定

設定ファイルをバックアップする。

```
# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk
```

設定ファイルの内容を編集する。
（参考）http://tomoyamkung.net/2014/08/02/linux-yum-repository-baseurl-setting/

具体的には下記内容をやっています。
* `mirrorlist`を`#`でコメントアウト
* `baseurl`を追加

```
vi /etc/yum.repos.d/CentOS-Base.repo 
```

```shell:CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/
　　　　http://ftp.jaist.ac.jp/Linux/centos/$releasever/os/$basearch/
　　　　http://ftp.iij.ad.jp/Linux/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
 
#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/updates/$basearch/
　　　　http://ftp.jaist.ac.jp/Linux/centos/$releasever/updates/$basearch/
　　　　http://ftp.iij.ad.jp/Linux/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/extras/$basearch/
　　　　http://ftp.jaist.ac.jp/Linux/centos/$releasever/extras/$basearch/
　　　　http://ftp.iij.ad.jp/Linux/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/centosplus/$basearch/
　　　　http://ftp.jaist.ac.jp/Linux/centos/$releasever/centosplus/$basearch/
　　　　http://ftp.iij.ad.jp/Linux/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/contrib/$basearch/
　　　　http://ftp.jaist.ac.jp/Linux/centos/$releasever/contrib/$basearch/
　　　　http://ftp.iij.ad.jp/Linux/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2
```

#### Proxy設定

社内回線でProxyが邪魔する場合は以下の設定をします。

```
# cp /etc/yum.conf /etc/yum.conf.bk
# echo “proxy=http://proxy.hogehoge.co.jp:80” >> /etc/yum.conf
```

### 最初にやる操作
####アップデート

```
# yum update
```

#### wgetのインストール
多分使うので入れておきます。

```
# yum -y install wget
```

## おわりに

VirtualBoxにCentOS7を入れて環境つくって、といった内容を一通りまとめました。

書いてて思いましたが、普通にVagrantを使ったほうが早いので、そっち使いましょう。