(manufacia-cpu-install)=
# インストール
インストールには以下の2つのケースを想定しています。
- Windows10 ProのWSL2環境にインストールする場合
- 推奨OSをインストールしてから、MANUFACIA-CPUをインストールする場合
もしも既にUbuntu環境をお持ちの場合、もしくはUbuntu環境を構築予定のある方は2番目の方法でインストールを進めてください。
## Windows10 ProのWSL2環境にインストールする場合
ホストOSにWindows10 Proを使用しており、その環境にインストールします。
MANUFACIA-CPUは、Microsoft社から提供されているWSL2(Windows Subsystem for Linux)を使用して環境構築をし、そこにMANUFACIA-CPUがOSと共にインストールされたイメージファイルをそのまま利用できます。
### Windows PC環境設定
WSL2を動作せるためには、Windows10 Proの以下の機能が有効になっていることが前提になっています。
- Hyper-V
- Linux用 Windowsサブシステム
- 仮想マシンプラットフォーム
Windowsのスタートボタンの右側のボックスに「Windowsの機能」と入力して、「Windowsの機能」を開き、ダイアログで上記の機能がチェックされていることを確認してください。チェックされていない場合はチェックします。場合によっては、Windowsが再起動を要求する場合があります。
 
```{important}
Hyper-Vを有効にする際には、PC上でBIOSの仮想化の機能(Virtualization TechnologyやIntel-VTやなどと表示)がDisableの場合はEnableにする必要があります。BIOS設定はお使いのPCのマニュアルを参照してください。
```
#### Windows10 Homeの設定
Windows Homeでコントロールパネルからの設定が出来ない場合には、管理者権限でPowerShellを起動し、以下のコマンド(**Enable-WindowsOptionalFeature から行末まで**)をコピーして貼り付けたのちに、エンターを押してください。
```console
PS C:\work> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
```
実行にしばらく時間が掛かりますが、その後で再起動を求められますので、再起動後にその次のコマンド(**Enable-WindowsOptionalFeature から行末まで**)をコピーして貼り付けたのち、エンターを押してください。
```console
PS C:\work> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
```
```{hint}
管理者権限でPowerShellを起動するには、CTRL+SHIFTを押しながらPowerShellをクリックすると便利です。
```
### WSL2のインストール
Windows 10 ProにMicrosoft社から提供されているWSL2(Windows Subsystem for Linux)をインストールしてください。
Windows 10 ProのPowerShell を用いてWSL2上に組み込みます。WSL2のインストールは、Microsoftウェブサイトにあるインストールガイドの「[手動インストールの手順](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#manual-installation-steps)」を参考に行ってください。
```{important}
この手順では、Microsoftのインストールガイドの手順6「選択した Linux ディストリビューションをインストールする」は不要です。
```
### 配布物の確認
同梱物の以下のイメージファイルをWindowsのファイルシステムのC:\workにコピーしたと仮定して、以下の手順を進めます。
- MANUFACIA-CPU_**x.x.x**.tar.gz (**x.x.x** は配布時のバージョン番号。以降の表記も同様)
### WSL2へファイルをインポートする
Windows 10 Pro標準のPowerShellを用いて、作業ディレクトリ内のインストールファイルをWSL2へインポートします。
WSL2へインポートしたイメージファイルの格納場所はWindows上の任意の場所を指定できますが、ここでは"C:\MANUFACIA” に格納することを想定しています。
またここでの操作は、MANUFACIA-CPU_**x.x.x**.tar.gzをコピーした C:\work で行います。
PowerShellを起動すると以下のような表示がされます。これはPowerShell```PS```が起動していることと、作業用のディレクトリが` ```C:\Users\(ユーザー名)```であることを示しており、その後ろのコマンドプロンプト```>```の右側で点滅しているカーソルが、ユーザーからのキーボードからのコマンド入力を待っている状態です。
```console
PS C:\Users\(ユーザー名)> _
```
これ以降のPowerShell上で入力するコマンドの説明は、**プロンプトの後ろからコメントを除くテキスト**をコピーし、**バージョン表記部分の"x.x.x"を対応バージョン置き換えた後、エンターを押してください**。コマンド行内の前後への移動は、カーソルの左右キーで可能です。
```console
PS C:\> cd \work
PS C:\work> mkdir c:/MANUFACIA (イメージファイルの格納場所を作成)
PS C:\work> wsl.exe --import MANUFACIA-CPU.x.x.x c:/MANUFACIA c:/work/MANUFACIA-CPU_x.x.x**.tar.gz --version 2
```
WSLに正常に組み込まれたかどうかを確認します。
````console
PS C:\work> wsl.exe --list --verbose
````
````{admonition} 結果表示
```console
NAME STATE VERSION
* MANUFACIA-CPU.x.x.x Stopped 2
```
````
```{hint}
正常にイメージファイルをImportした後は、作業ディレクトリを削除しても構いません。
```
### イメージファイルの起動
Microsoft Store上でインストールしたUbuntu等はWindows上のプログラムメニューやGUIのターミナルアイコンがありますが、イメージファイルをインポートした環境には存在しません。
ここではWindows 10 標準のPowerShellを用いた起動方法を説明します。
```console
PS C:\> wsl ~ -d MANUFACIA-CPU.x.x.x -u manufacia-user
```
このコマンドの実行により、PowerShellはWSL2にインポートしたMANUFACIA-CPU.**x.x.x**(Ubuntu)のシェルに切り替わります。正常に起動できると、PowerShellのプロンプト行は、```manufacia-user@(Windowsマシン名):~$``` に変わります。Ubuntu上ではPowerShellの```>```の代わりに、```$```がプロンプトになります。
配布されたイメージファイルに既にインストール済みのUbuntuのアカウントとパスワードは以下のように設定されています。
```{list-table}
:name: ubuntu-account-info
:header-rows: 0
:widths: 1 1
* - アカウント
- manufacia-user
* - パスワード
- manufacia-user
```
```{important}
以降、Ubuntuのシェル上で、```sudo```コマンドを実行する際には、このパスワードを使用してください。
```
ここまで問題がなければ、次は[こちら](#start-docker-service)に進んでください。
## 推奨OSをインストールしてから、MANUFACIA-CPUをインストールする場合
### OSのインストール
まずは、[よくある質問(一般)-> 推奨ハードウェアスペック](../faq_general/index.html#recommended-hardware-specification) で推奨されているOSをインストールして下さい。
インストール後にはインターネットが接続されているのを確認し、ターミナルから以下のコマンドでアップデートを実行してください。
```console
$ sudo apt update
$ sudo apt upgrade
```
その他必要なツールもここでインストールします。
```console
$ sudo apt install net-tools
$ sudo apt install curl
```
### 配布物の確認
同梱物の以下のファイルを、作業フォルダにコピーします。
- manufacia_**x.x.x**-cpu.tar.gz (**x.x.x** は配布されたシステムのバージョン番号です。**以降のコマンド入力例も同様です**。)
- mosquitto_1.6.2.tar.gz
- postgres_10.5.tar.gz
- redis_5.0.tar.gz
### Dockerのインストール
以下のコマンドで、Docker安定版をインストールします。
```console
$ sudo curl https://get.docker.com | sh
```
次に、Docker Composeをインストールします。
```console
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
```
ユーザーに実行権限を付与します。
```console
$ sudo usermod -aG docker $USER
$ sudo service docker start
$ sudo docker run hello-world
$ sudo chmod 666 /var/run/docker.sock
```
OSを再起動します。
```console
$ sudo reboot
```
Dockerサービスを起動します。
```console
$ sudo service docker start
```
Dockerの動作確認をします。```docker ps```コマンドの実行内容が、以下と同じであることを確認してください。
```console
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
```
hello-worldコンテナを実行します。
```console
$ sudo docker run hello-world
```
### MANUFACIA-CPUのインストール
配布物をコピーした作業フォルダに移動し、以下のコマンドでイメージファイルをDockerにloadします。
```console
$ gunzip mosquitto_1.6.2.tar.gz && sudo docker load -i mosquitto_1.6.2.tar
$ gunzip postgres_10.5.tar.gz && sudo docker load -i postgres_10.5.tar
$ gunzip redis_5.0.tar.gz && sudo docker load -i redis_5.0.tar
$ sudo docker load -i manufacia-x.x.x-cpu.tar
```
MANUFACIA-CPUをインストールします。
```console
$ docker run --rm manufacia:x.x.x-cpu install-manufacia | bash
```
(start-docker-service)=
## Dockerサービスの起動
Ubuntuのシェルで以下のコマンドを入力してDockerサービスを起動します。
```console
$ sudo service docker start
```
## MANUFACIA-CPU サービスの起動
インストールしたPCやデバイスのIPアドレスを確認します。Windows10 ProのWSL2環境にMANUFACIA-CPUをインストールした場合には、このIPアドレスは次章のアプリケーションの起動確認時に必要です。
(check-ip-address)=
```console
$ hostname -I
192.168.100.42 172.17.0.1
```
```{caution}
このケースでは、IPアドレスは **192.168.100.42** です。お使いの環境によってこのアドレスは異なります。
```
推奨OSをインストールしてから MANUFACIA-CPUをインストールした場合のみ、以下の環境変数の設定が必要です。
````{admonition} 環境変数の設定方法
~/.bashrc にMANUFACIAに関する項目を追加します。このとき、{IP_ADDRESS}には、前出の[hostname -l](#check-ip-address) コマンドで確認したIPアドレスを入力してください。
```console
$ export PATH=$HOME/.manufacia/bin:$PATH
$ export THIS_HOST={IP_ADDRESS}
```
````
以下のコマンドを実行してエラーが出なければ、MANUFACIA-CPUは正常に起動しています。
```console
$ manufacia-ctrl start
```
MANUFACIA-CPUのDockerコンテナが起動していることを確認します。```docker ps```コマンドで、以下の6個のコンテナのSTATUS列が **Up** 状態が確認出来れば正常です。
- manufacia_app_1
- manufacia_jarngreipr_1
- manufacia_broker_1
- manufacia_db_1
- manufacia_redis_1
- manufacia_frontend_1
```console
ubuntu@N-007:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d06495da0e54 manufacia:x.x.x-cpu "supervisord --nodae..." 38 minutes ago Up 38 minutes 0.0.0.0:3100-3101-\>3100-3101/tcp, 0.0.0.0:3122-\>22/tcp manufacia_app_1
63df1772426c manufacia:x.x.x-cpu "jarngreipr serve --..." 38 minutes ago Up 38 minutes 0.0.0.0:3280-\>8080/tcp manufacia_jarngreipr_1
a6c3cbdb3e60 postgres:10.5-alpine "docker-entrypoint.s..." 38 minutes ago Up 38 minutes 0.0.0.0:1883-\>1883/tcp, 0.0.0.0:32780-\>9001/tcp manufacia_broker_1
13b6b0ae19dc eclipse-mosquitto:1.6.2 "/docker-entrypoint...." 38 minutes ago Up 38 minutes 5432/tcp manufacia_db_1
cda3291bb252 manufacia:x.x.x-cpu "sh -c 'inject-env f..." 38 minutes ago Up 38 minutes 0.0.0.0:3200-\>5000/tcp manufacia_frontend_1
68e03b9681db redis:5.0-alpine "docker-entrypoint.s..." 38 minutes ago Up 38 minutes 6379/tcp manufacia_redis_1
```
```{caution}
初めてMANUFACIA-CPUを起動する際には、データベース構築のため大量の “create_table” や “add_foreign_key” が表示されますが、無視してください。
```