# GROWI構築ノウハウ

https://note.com/funmylife/n/n0228b233d4b1 を参照して構築した。


## 0. 構築環境

以下環境にて構築成功
# hogehoge piyopiyo 
ほほほほほ

```
・ホストPC：Windows 10 Home（64bit）V2004

・Vagrant 2.2.10
・VirtualBox 6.1.14
・ゲストPC（仮想PC）：Ubuntu 18.04.2 LTS（bento/ubuntu-18.04）
・Docker version 19.03.13, build 4484c46d9d
・docker-compose 1.24.0-rc1
```

## 1. Windows10の仮想化をオフにする


`windowsの機能`を開く

```
・LINUX用windowsサブシステム
・Windowsハイパーバイザープラットフォーム
・仮想マシンプラットフォーム
```

以上の機能をオフにしておく


## 2. Vargrantの導入

以下から最新版をダウンロード。ダウンロード後はexeをクリックし順当にすすめる

[Vargrant公式サイト](https://www.vagrantup.com/downloads.html)


## 3. VirtualBoxの導入

以下から最新版をダウンロード

[VirtualBox公式サイト](https://www.virtualbox.org/wiki/Downloads)


## 4. Vagrant＋VirtualBoxでゲストPC（仮想PC）を作る


#### ①ホスト側PCにVagrant作業ディレクトリを作成する


Cドライブの直下に`vagrant\growi`フォルダを作成


#### ②コマンドプロンプトからVagrantイメージを作成する


以下コマンドを順に打っていく。まず`ubuntu-18.04`イメージを取得し、`vagrant up`コマンドを発行することで
ゲストPCにubuntuがインストールされ使用できる状態になる。
`vagrant ssh`でログインできる。


```bash
C:\vagrant\growi> vagrant init bento/ubuntu-18.04
C:\vagrant\growi> vagrant up
C:\vagrant\growi> vagrant ssh
```

## 5. ゲストPC（仮想PC）の環境設定

<p class="bg-danger text-white">注意) ここから先はゲストPC側の設定となる</p>

`vagrant ssh`でログイン後、以下コマンドを順次打っていく

```bash
vagrant@vagrant:~$ sudo apt update && sudo apt upgrade -y
vagrant@vagrant:~$ sudo locale-gen ja_JP.UTF-8
vagrant@vagrant:~$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
vagrant@vagrant:~$ exit #いったんゲストPCから抜ける
D:\vagrant\growi> vagrant ssh
vagrant@vagrant:~$ echo $LANG
ja_JP.UTF-8
vagrant@vagrant:~$ sudo dpkg-reconfigure tzdata
#[アジア]-[東京]を選択しましょう
vagrant@vagrant:~$ exit #いったんゲストPCから抜ける
D:\vagrant\growi> vagrant reload #ゲストPCを再起動
D:\vagrant\growi> vagrant ssh
```

## 6. ゲストPC（仮想PC）に Dockerインストール

**注意) Windows10の仮想化をオフにしないと、ここでDokerをインストールできない**


https://docs.docker.com/engine/install/ubuntu/　を参照すると良い



新しいホストマシンにDockerEngineを初めてインストールする前に、Dockerリポジトリを設定する必要がある。
その後、リポジトリからDockerをインストールして更新できる。


①まずリポジトリを設定する


```bash
$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
```


②Dockerの公式GPGキーを追加する

```bash
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

③指紋を確認する

```bash
$ sudo apt-key fingerprint 0EBFCD88
```

また、以下コマンドを実行する。これを行わないとdockerをダウンロードできない。

```bash
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```




④dokerパッケージをインストールする


```bash
 $ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
 ```
 

⑤インストール後の初期設定を行う

以下コマンドを順次実行する

```bash
vagrant@vagrant:~$ docker -v
Docker version 18.06.2-ce, build 6d37f41
vagrant@vagrant:~$ sudo usermod -aG docker $USER #root権限なしで実行する
vagrant@vagrant:~$ exit #いったんゲストPCから抜ける
D:\vagrant\growi> vagrant ssh
vagrant@vagrant:~$ groups #dockerに所属していることを確認する
```


## 7. ゲストPCに Docker Composeインストール

以下コマンドを実行する

```bash
vagrant@vagrant:~$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
vagrant@vagrant:~$ sudo chmod +x /usr/local/bin/docker-compose
vagrant@vagrant:~$ docker-compose -v
docker-compose version 1.24.0-rc1, build 0f3d4dda
```

## 8. ゲストPCに GROWIインストール


ここでようやくGROWIのインストールが行える。  
gitコマンドを使用してGROWIをダウンロードしたあと、`docker-compose.yml`を編集する


```
vagrant@vagrant:~$ git clone https://github.com/weseek/growi-docker-compose.git growi
vagrant@vagrant:~$ cd growi
vagrant@vagrant:~$ vi docker-compose.yml
```

以下を変更する。ポートと添付ファイル格納先の変更である。ポート`3000`と`FILE_UPLOAD=local`を有効にする

※FILE_UPLOAD=localの場合、添付ファイルの保存先は`growi_app`の`/data/uploads/attacment`となる

```BASH
ports:
#- 127.0.0.1:3000:3000    # localhost only by default
 - 3000:3000 # ← modified

environment:
      - MONGO_URI=mongodb://mongo:27017/growi
      - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
      - PASSWORD_SEED=changeme
        # - FILE_UPLOAD=mongodb   # activate this line if you use MongoDB GridFS rather than AWS
      - FILE_UPLOAD=local     # activate this line if you use local storage of server rather than AWS
      # - MATHJAX=1             # activate this line if you want to use MathJax
      # - PLANTUML_URI=http://  # activate this line and specify if you use your own PlantUML server rather than public p
```


## 9. GROWIをビルド

順調に行けば、`Express server is listening on port 3000`のメッセージが出る。これがビルドフィニッシュの証拠となる。

```
vagrant@vagrant:~$ docker-compose up #ひたすらログが流れて
app_1 ・・・ : [production] Express server is listening on port 3000
#↑が表示されれば完了した
```

ただし、これではlocalhost:3000でURLを打っても表示されない。

## 10. Vagrantのポートフォワードの設定


このアプリはデフォルトで3000番ポートで待ち受けている。  
ホストPCの12345番ポート（ここは任意）をゲストPCの3000番ポートにポートフォワード設定させる。


①Ctrl+Cでアプリを止め、ゲストPCを抜けVagrantfileを弄る。以下のように設定。

```ini
 # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
   config.vm.network "forwarded_port", guest: 3000, host: 12345
```

②ゲストPCを再起動し、GROWIを起動させる


```bash
D:\vagrant\growi> vagrant reload
D:\vagrant\growi> vagrant ssh
vagrant@vagrant:~$ cd growi
vagrant@vagrant:~$ docker-compose start
Starting mongo         ... done
Starting elasticsearch ... done
Starting app           ... done
```


③ http://localhost:12345にアクセス

以下の画面がでれば構築完了


## 11. インデックス再構築

もしコピー環境を作っているのであれば、管理画面よりインデックスの再構築が必要。
これをやらないと全文検索ができない。


---

## Page Navigation

- Canonical URL: https://demo.growi.org/user/admin1
- Permalink: https://demo.growi.org/5d6663664dc19b0044efe5f5
- Parent: [user](/6332c09386925720a042f980.md)
- Children: 4 total
  - [memo](/63e4461469a9380821c4dbf7.md)
  - [study](/643e9b47ccc23297593702a5.md)
  - [test](/659f3eccbd78e32a075d1ed8.md)
  - [メモ](/637b4eee1a4dc37eba827fc7.md)
- Total descendants: 43
- Siblings: 50 of 1556 total (1506 more not shown; see the page list API below for the full listing)
  - [010101](/5e8a94d50b7e910048dbbfb8.md)
  - [0204](/5e38bccb88ba150043d9b5ac.md)
  - [1](/5ffd3ece1550620048409e01.md)
  - [1000test](/5f7561777782f90048ec0de4.md)
  - [1043](/5cf71e36ef06c40058a247ef.md)
  - [1121](/616c576a7b5a50b759f963f1.md)
  - [1122](/61e6c24fcee239790b79cf78.md)
  - [1122mukae_masato](/5cc2ab36ef06c40058a2458e.md)
  - [1211](/6165e144687d695fe26927c7.md)
  - [12131](/5fe2a3d4eee24f00485669b1.md)
  - [1222](/61e7102ccee239790b7a4b25.md)
  - [12288](/624297e3cc910ae47ea9aa8e.md)
  - [1231](/616d34384428cb5390baddf8.md)
  - [123212](/5d64b8c04dc19b0044efe5c9.md)
  - [1233](/61f1377bfdc0a8f4616221d6.md)
  - [12333](/61f131cdfdc0a8f4616217c5.md)
  - [1234](/5a29e786023727001bd4be6d.md)
  - [12345](/616d1d504428cbc389bad8b3.md)
  - [123456](/5d6fc0444dc19b0044efe67b.md)
  - [1234567890](/60dbec9bc13c470049fccf9f.md)
  - [1234fds](/5efd9d81b70fd200481cea9b.md)
  - [137821](/5d7fe85c4dc19b0044efe6fd.md)
  - [1942](/604dc1a4a267ee0048864c43.md)
  - [19941114](/5e72b6837fe4e70048a44708.md)
  - [1inguini](/66ffdaccb15e31001131c38a.md)
  - [2019-08-20](/5d5b91ab4dc19b0044efe544.md)
  - [20190709](/5d23fca88118250043bdfa2f.md)
  - [2hey](/5d2599be8118250043bdfa85.md)
  - [32sdgw](/6089bf4461dec60049bd4ac0.md)
  - [4696itatsi](/5d9192484dc19b0044efe856.md)
  - [510125](/63ec4e0334c0bf017fb91476.md)
  - [676767](/61f13152fdc0a8f46162163a.md)
  - [67idex](/5a80d5dc01679d0024fc7824.md)
  - [8899](/5dde1b7088ba150043d9b200.md)
  - [895 eims](/5bceeded76de5c003e8d07e2.md)
  - [8yoshiyoshi](/5cec41aeef06c40058a2474a.md)
  - [@@@](/5cf71963ef06c40058a247dd.md)
  - [@@@@@@](/5cf71be5ef06c40058a247e9.md)
  - [A](/5dcb9bc188ba150043d9b0e6.md)
  - [A012345](/5ddb90af88ba150043d9b1d4.md)
  - [ABC123](/5fa9e81837cb160049178333.md)
  - [AINE](/5f32534cf6505a004947c402.md)
  - [AIz0501](/5d7f23064dc19b0044efe6f1.md)
  - [Aaaa](/5ec4ef3eff452a0048c58a6a.md)
  - [Administrator](/64f911249e2d3bf82532cd0d.md)
  - [Aheaheunkoman](/6378f5ac42004ad41fbea01c.md)
  - [Akiko Uekusa](/5bdfa575f515a1003efcdeca.md)
  - [Arvind Devaraj](/5c8e9cf6d80e330042eeb19b.md)
  - [Arwen](/5b686c9ef7c850001f5d416a.md)
  - [Atmark-chan](/5edb8c9045b8a6004817801c.md)
- Last updated: 2023-05-09T06:51:44.556Z by admin1
- Full page listing (all children regardless of count): https://demo.growi.org/_api/v3/page-listing/children?id=5d6663664dc19b0044efe5f5
