【Hyperledger Composer】土台構築チートシート（CentOS用）

## このチートシートは何のためのもの？

このチートシートは、[Hyperledger Composer](https://hyperledger.github.io/composer/latest/index.html)を扱うインフラを作る際に最低限必要となる諸々のアプリケーションの導入手順を記載したものです。
このチートシートの後続にあたるインフラ構築のサンプルも追って作成し、こちらにリンクを記載します。

Ubuntu用のチートシートは[こちら](https://qiita.com/microwavePC/items/05737762d840b6dd1046)。

## 前提条件

このチートシートの手順は、まっさらな状態の **CentOS 7** を前提として作成してあります。
一部アプリケーションをすでにインストール済みの場合は、適宜その部分を扱う手順を読み替えてください。

また、本手順実行の後にプラットフォームとするHyperledger Fabricのバージョンは **1.2** です。
上記以外のバージョンを利用される場合、インストールする各アプリケーションのバージョンを適切なものに変更してください。


## この手順に沿った場合に最終的に揃うアプリケーション

| アプリケーション名     | バージョン        | バージョン確認用のコマンド |
|:---------------------|:------------------|:------------------------|
| Docker               | 18.06.0-ce        | docker version          |
| Docker Compose       | 1.21.2            | docker-compose version  |
| Node.js              | 8.11.3            | node -v                 |
| npm                  | 5.6.0             | npm -v                  |
| yarn                 | 1.9.2             | yarn -v                 |
| Git                  | 2.19.0            | git --version           |
| gcc(g++)             | 5.4.0 20160609    | gcc -v                  |
| python               | 2.7.*             | python --version        |
| Hyperledger Composer | 0.20.0            | composer -v             |

## 環境構築手順

###### 1. yumのパッケージリストを更新する。

```shell:コマンド
sudo yum update
```

###### 2. 現在Dockerがインストールされていたら削除する。

```shell:コマンド
sudo yum remove docker docker-common docker-selinux docker-engine
```

###### 3. Dockerに必要なパッケージをインストールする。

```shell:コマンド
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
```

###### 4. Dockerのリポジトリを追加する。

```shell:コマンド
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
```

###### 5. yumのパッケージインデックスを更新する。

```shell:コマンド
sudo yum makecache fast
```

###### 6. バージョンを指定してDockerをインストールする。

```shell:コマンド
sudo yum install docker-ce-18.06.0.ce-3.el7
```

###### 7. 現ユーザーの副所属グループに「docker」を追加した後、それを有効化させるためにログアウトする。

```shell:コマンド
sudo usermod -aG docker $(whoami)								
logout
```
コマンドの実行後、再度CentOSへログインする。

###### 8. 現在のマシン構成やOSに沿ったDocker Composeを、/usr/local/bin/docker-composeへダウンロードする。

```shell:コマンド
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
```

###### 9. Docker Composeの実行権限を解放する。

```shell:コマンド
sudo chmod +x /usr/local/bin/docker-compose
```

###### 10. 『Node.js』『GCC』『G++』『Yarn』『Go』『Git』をインストールする。

```shell:コマンド
curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash -
sudo yum install -y gcc-c++ make
sudo yum install -y nodejs
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn-1.9.2-1
curl -L -O https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xf go1.9.2.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile
rm go1.9.2.linux-amd64.tar.gz
sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
cd /usr/local/src/
sudo wget https://www.kernel.org/pub/software/scm/git/git-2.19.0.tar.gz
sudo tar xzvf git-2.19.0.tar.gz
cd git-2.19.0
sudo make prefix=/usr/local all
sudo make prefix=/usr/local install
source /etc/profile
sudo rm -rf /usr/local/src/git-2.13.3.tar.gz
```

###### 11. 環境変数GOPATHをシステムに追加する。

```shell:コマンド
echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
```

###### 12. たった今追加した環境変数を読み込んだ後、読み込めていることを確認する。

```shell:コマンド
source ~/.bash_profile
echo $GOPATH #このコマンドの出力結果が『/home/(ユーザー名)/go』となることを確認する。
```

###### 13. Hyperledger Composerと、それに必要なパッケージ群をインストールする。

```shell:コマンド
sudo npm install -g --unsafe-perm composer-cli@0.20.0
sudo npm install -g --unsafe-perm composer-rest-server@0.20.0
sudo npm install -g --unsafe-perm generator-hyperledger-composer@0.20.0
sudo npm install -g --unsafe-perm yo
sudo npm install -g --unsafe-perm composer-playground@0.20.0
```

###### 14. 後続作業における権限関連のトラブルを回避するため、「~/.config」ディレクトリの操作制限を解除する。

```shell:コマンド
sudo chmod 777 ~/.config
```

###### 15. Dockerを再起動する。

```shell:コマンド
sudo service docker restart
```

**以上**

## この後の手順は？

追ってこちらにリンクを記載します。

## 参考情報

https://hyperledger.github.io/composer/latest/installing/installing-index