GROWIオンプレ構築メモ
社内チームでの情報共有ツールをさがしていて、良さそうだから導入を試みたのだが、なかなか一筋縄ではいかない。
オンプレでWindowsでって環境に縛られる人もいるかもしれない。
色々と調べなんとか運用にこぎつけたので備忘録として。
20190620編集 ミドルウェアのバージョンが上がったのかなんなのかで、結構変わったので修正
環境
- Windows Server2016 Standard
- Docker for Windows
- Git for Windows(リポジトリのコピーだけなので不要かも)
- Proxy下
- https://github.com/weseek/growi
- https://github.com/weseek/growi-docker-compose
- GROWI 3.4.7
Docker for Windows
インストール
-
インストールはインストーラを実行するだけ
-
アップデートは実行した
-
Windowの機能でHyper-vを有効にしておく。
-
Hyper-vマネージャを起動し、仮想マシンの中にMobyLinuxVMがあるか確認する。
-
Dockerのプロキシを社内のプロキシサーバに設定しておく。
- Docker→Settings→Proxies
- 192.168.xxx.xxx:xxxx
-
ローカルドライブの共有
- Docker→Setting→Shared Drives → Cにチェック
Git
- 環境変数でGitのpathを通す
- Gitのproxyを設定する
git config --global http.proxy 192.168.xxx.xxx:xxxxx
git config --global https.proxy 192.168.xxx.xxx:xxxxx
Docker
PowerShellから起動
下のコマンドを実行
git clone https://github.com/weseek/growi-docker-compose.git growi
カレントディレクトリにgrowiフォルダが作成されるので、直下のDockerfileを編集する。
プロキシ情報を記載
ENV https_proxy "http://192.168.xxx.xxx:xxxxx/"
ENV http_proxy "http://192.168.xxx.xxx:xxxxx/"
Docker-Compose
docker-compose.ymlを編集
ポートをデフォルトから編集
- 3000:3000
パスワードはデフォルトだとよろしくないそうなので
- PASSWORD_SEED=変更する!
ファイルのアップロードはローカル
- FILE_UPLOAD=local
数式とかのやつ? とりあえずON
- MATHJAX=1
HACKMDとかよくわからないのでコメントアウトのまま
growiのデータをホスト側にマウント
volumes:
- ./data/growi_data:/data
elasticsearchのjvmのproxyを設定
environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m -DproxyHost=192.168.xxx.xxx -DproxyPort=xxxxx"
elasticsearchのvolumeはこんな感じでいいかな
volumes:
- es_data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
その他はデフォルトのままだと思う。
elasticsearchのDockerfile
直下のelasticsearchフォルダの中にあるDockerfileを編集する。
RUN ES_JAVA_OPTS="-DproxyHost=192.168.XXX.XXX -DproxyPort=XXXXX -Dhttps.proxyHost=192.168.XXX.XXX -Dhttps.proxyPort=https_XXXXX" bin/elasticsearch-plugin install analysis-kuromoji
RUN ES_JAVA_OPTS="-DproxyHost=192.168.XXX.XXX -DproxyPort=XXXXX -Dhttps.proxyHost=192.168.XXX.XXX -Dhttps.proxyPort=https_XXXXX" bin/elasticsearch-plugin install analysis-icu
実行
これで実行
cd growi
docker-compose up -d
http://(ipアドレス):3000
でアクセス
バックアップとリストア
バックアップとリストアはDockerのvolumeマウントでホスト側にファイル保存したかったけど、うまくいかないようなので Docker exec でダンプ、Docker cpでファイルコピーみたいな無理やり手順で対応。
リストアも Docker cp でバックアップファイルをコピーし、Docker exec でリストアを実行する。
この辺はMongoDBとWindowsの相性が悪いのが原因か。
アップロードファイルは growi/data/growi_data/uploads に保存されるので
そこのバックアップを取れば大丈夫?
バックアップ
以下のPowerShellスクリプトを実行
#growi\backupフォルダが必要
$date = Get-Date
$date = $date.ToString("yyyyMMdd")
docker exec growi_mongo_1 mongodump
docker cp growi_mongo_1:/dump/growi .\backup\$date
docker exec growi_mongo_1 rm -rf ./dump
リストア
以下のPowerShellスクリプトを実行
$restore_dir = Read-Host "リストアしたい日付をyyyyMMddで入力"
if(!(Test-path .\backup\$restore_dir)){ Exit }
$Restore_Set = Get-ChildItem .\backup\$restore_dir
docker exec growi_mongo_1 mkdir -p ./dump/growi
$Restore_Set | %{ docker cp $_.FullName growi_mongo_1:./dump/growi }
docker exec growi_mongo_1 mongorestore --db growi --drop ./dump/growi
サーバー移行(※20190410追記)
サーバーを移行する場合(移行先の環境は移行元と同じ Docker for Windows )
- 上記バックアップ手順でバックアップを実行する
- GROWIフォルダごと移行先へコピー
- 移行先でDocker-Composeを実行する
- 上記リストア手順でリストアを実行する
課題
- なんかうまくいかない時はDocker for WindowsのShareDriveがおかしくなっている可能性が…。チェック入れてapply押してもまたチェックが消える症状。ファクトリーリセットじゃないと直らないとかでちょっと厄介。Docker for Windowsはやめた方がいいのかもしれない(笑)
- サイドバーに何も表示されないのは未実装らしい・・・。
- Docker-Composeのvolumeとか全然理解できていない。
- volumeの設定、mongoが難しい? 永続化って?
- そもそもmongoのvolumeマウントはwindowsには対応していないような感じ?
- バックアップはAWSを使えば簡単らしい…。
- Proxy下はマジで大変
- Docker for Windows はやめた方がいいのかもしれない(笑)
- 再起動時、サインアウト時にはサービスが止まる