Vagrantで開発環境を構築（2.仮想環境設定編）

## 目的

- 勉強の一貫で記事をまとめる．
- VagrantとVirtualBoxで仮想環境を作成できるようになる．

前回：[Vagrantで開発環境を構築（1.仮想マシン作成編）](https://qiita.com/koukibuu3/items/1a0e13d016d758042da6)
今回：Vagrantで開発環境を構築（2.仮想環境設定編）
次回：[Vagrantで開発環境を構築（3.PHP開発環境編）](https://qiita.com/koukibuu3/items/11f55f18aa00f1c1009d)

## yumの更新

CentOSでは，パッケージをインストールしたり管理したりするために，[yum](https://uxmilk.jp/9715)というパッケージ管理ソフトを利用する．
まず最初に，既にインストールされているyumを最新版にアップデートする．

**1. ターミナル(仮想マシン)で下記のコマンドを実行．**

```Bash:ターミナル(仮想マシン)
$ sudo yum update # yumパッケージを更新
```

yum のアップデートをする際に，下記のエラーが発生する場合がある．

```Bash:エラーメッセージ
The GPG keys listed for the "Puppet Labs PC1 Repository el 7 - x86_64" repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository.   Failing package is: puppet-agent-1.8.2-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1
```

その場合は、

```Bash:ターミナル(仮想マシン)
$ curl -L https://yum.puppetlabs.com/RPM-GPG-KEY-puppet -o /tmp/RPM-GPG-KEY-puppet

$ gpg --with-fingerprint "/tmp/RPM-GPG-KEY-puppet"

$ sudo cp /tmp/RPM-GPG-KEY-puppet /etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1
```

を実行して`$ sudo yum update`をやり直す．

参考：[Solution for CentOS 7.2 GPG Key Issue while updating yum](http://deblock-technologies.com/centos-7-2-gpg-key-issue/)

## firewallの無効化

**1. ターミナル(仮想マシン)で下記のコマンドを実行．**

```Bash:ターミナル(仮想マシン)
$ sudo systemctl stop firewalld # firewallを無効化

$ sudo systemctl disable firewalld # firewallの自動起動を無効化

$ systemctl status firewalled # 確認
```

## SELinux の無効化

**1. 以下の設定ファイルを修正する．**

```config:/etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
### Disalbe SELINUX begin
##SELINUX=enforcing
  ↓
SELINUX=disabled # ココ
### Disalbe SELINUX end
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
```

**2. ターミナル(仮想マシン)で下記のコマンドを実行．**

```Bash:ターミナル(仮想マシン)
$ sudo shutdown -r now # OSを再起動する．
```

## git, vimのインストール

開発には必需な[git](https://git-scm.com)と何かと便利な**vim**をインストールする．

**1. ターミナル(仮想マシン)で下記のコマンドを実行．**

```Bash:ターミナル(仮想マシン)
$ sudo yum install git # gitのインストール

$ sudo yum install vim # vimのインストール

$ sudo yum install zip unzip # zip,unzipのインストール
```

**2. ターミナル(仮想マシン)で下記のコマンドを実行**

```Bash:ターミナル(仮想マシン)
# ユーザ名とメールアドレスを設定
$ git config --global user.name "<ユーザ名>"
$ git config --global user.email "<メールアドレス>"

# gitで使用するデフォルトのエディタをvimに変更
$ git config --global core.editor 'vim -c "set fenc=utf-8"'

# gitコマンドの結果に色をつける
$ git config --global color.ui true

# push方法を指定する(Git 1.8系以降の場合)
$ git config --global push.default simple

$ git config --list # 確認
```

参考：[git push時に表示されるwarning: push.default is unset...の意味と解決方法](https://qiita.com/yaotti/items/a8e9f5de8dcca81d3214)

**3. vimのカスタマイズ**

`~/`配下に`.vimrc`を作成（これだけでvim の使い勝手が抜群に良くなる）．

```vim:.vimrc
"文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" バッファが編集中でもその他のファイルを開けるように
set hidden
" 入力中のコマンドをステータスに表示する
set showcmd

" 行番号を表示
hi Comment ctermfg=gray
set number
" 現在の行を強調表示
set cursorline
" 行末の1文字先までカーソルを移動できるように
set virtualedit=onemore
" インデントはスマートインデント
set smartindent
" ビープ音を可視化
set visualbell
" 括弧入力時の対応する括弧を表示
set showmatch
" ステータスラインを常に表示
set laststatus=2
" コマンドラインの補完
set wildmode=list:longest
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj
nnoremap k gk

" 不可視文字を可視化(タブが「▸-」と表示される)
set list listchars=tab:\▸\-
" Tab文字を半角スペースにする
set expandtab
" 行頭以外のTab文字の表示幅（スペースいくつ分）
set tabstop=2
" 行頭でのTab文字の表示幅
set shiftwidth=2

" 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
" 検索文字列入力時に順次対象文字列にヒットさせる
set incsearch
" 検索時に最後まで行ったら最初に戻る
set wrapscan
" 検索語をハイライト表示
set hlsearch
" ESC連打でハイライト解除
nmap <Esc><Esc> :nohlsearch<CR><Esc>
```

参考：[何も考えず~/.vimrcにこれを書くんだ！ 〜vim初心者によるvim初心者のためのvim入門〜](https://qiita.com/morikooooo/items/9fd41bcd8d1ce9170301)

## 最適化

よく分からないけど設定する必要があるらしい（ホント要勉強）．

```Bash:ターミナル(仮想マシン)
$ sudo yum clean all

$ sudo dd if=/dev/zero of=/EMPTY bs=1M

$ sudo rm -f /EMPTY
```

## まとめ

以上で仮想環境の設定が完了．
次回からはPHPの開発環境を構築していく．

前回：[Vagrantで開発環境を構築（1.仮想マシン作成編）](https://qiita.com/koukibuu3/items/1a0e13d016d758042da6)
今回：Vagrantで開発環境を構築（2.仮想環境設定編）
次回：[Vagrantで開発環境を構築（3.PHP開発環境編）](https://qiita.com/koukibuu3/items/11f55f18aa00f1c1009d)