1.GROWI環境構築目標
- AWS EC2環境へインストールします
- OS : Amazon Linux 2
- インスタンス : micro
- 必須:ElasticSearch, Mongo
- 別途:PlantUML
- 利用想定
- 最大3名以下のクローズドな使い方
- インストール方法
- Dockerを使わずに、インストールしていきます
レガシーですが、それじゃ面白くないので...
- インストール中は、スペックを上げて作業しています(
small
)- ビルドとかメモリ使いそうだし
1-1.インストール時のバージョン
name | version |
---|---|
OS | Amazon Linux 2 |
GROWI | 3.6.3 |
node.js | 12.14.0 |
openjdk | 1.8.0_222 |
MongoDB | 3.6.16 |
PlantUML | 1.2019.13 |
Graphviz | 2.42.2 |
2.まずはGROWI Docsを見ながら流れを確認
- CentOS 7環境へのインストール手順があるので、基本はそれを踏襲します
- バージョンは、同じく公開されてる
docker-compose
のバージョンを踏襲していきます - このマニュアルでは、PlantUMLはインストールせずに外部のサーバーを指しているので、別途自前でインストールします
- この内容は公式マニュアルに記載されていない内容ですので、動作保証はしません
3.node.js, npm, yarnのインストール
- NodeJS 12.xのインストール
- 公式マニュアルの手順をそって入れます
- GitHub - nodesource/distributions: NodeSource Node.js Binary Distributions
- 事前準備
yum install gcc-c++ make
- node.jsのインストール
curl -sl https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install nodejs
- yarnのインストール
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn
4.Elasticsearchのインストール
- OpenJDKのインストール
sudo yum install java-1.8.0-openjdk
- Elasticsearch 6.xのインストール
- 事前準備
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
sudo vi /etc/yum.repos.d/elasticsearch.repo
- インストール
sudo yum install elasticsearch
- 割り当てメモリの設定
sudo vim /etc/elasticsearch/jvm.options
- サービス化と自動起動
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
sudo systemctl status elasticsearch
- プラグインのインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
5.MongoDBのインストール
- 事前準備
-
sudo vi /etc/yum.repos.d/mongodb-org-3.6.repo
-
- インストール
sudo yum install -y mongodb-org
- サービス化と自動起動
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
- MongoDBへの認証設定とユーザーの作成、パスワードの設定
- 長いので先駆者記事を参照
- GCPにGrowiを構築する 06 MongoDBのユーザ設定 | Qrunch(クランチ)
- 設定したユーザー・パスワードは、growi起動時のオプションで利用します
6.PlantUMLのインストール
- JREのインストール
sudo yum install java-1.8.0-openjdk-devel
- graphvizのインストール
- 事前情報
-
2.30
以後のバージョンがcentos向けにパッケージされていない - 調べる限り、2018年ごろに消えている?
- ソースからmakeする必要
-
2.39
,2.40
はPlantUMLとの相性が良くないのでそれ以外- フォーラムによれば、
2.40.1
は直っている
- フォーラムによれば、
-
- 事前準備
sudo yum install expat-devel autoconf make automake libtool libtool-ltdl yacc byacc flex bison libtool-ltdl-devel
- インストール(再現チェックしてません)
git clone https://gitlab.com/graphviz/graphviz.git
git checkout -b 2.42.2 refs/tags/2.42.2
cd ./graphviz
./autogen.sh
./configure --prefix=/opt/graphviz
sudo make
-
sudo make install
- この対応により、PlantUMLに必要なDOTが下記に配置されます
/opt/graphviz/bin/dot
- 事前情報
- PlantUmlのインストール
- 事前準備
sudo yum install tomcat maven
- インストール
cd /opt/
git clone https://github.com/plantuml/plantuml-server.git
git checkout -b v1.2019.13 refs/tags/v1.2019.13
- コマンド実行
mvn jetty:run -DGRAPHVIZ_DOT=/opt/graphviz/bin/dot
- サービス化
-
sudo vi /etc/systemd/system/plantuml.service
[Unit] Description=plantuml [Service] WorkingDirectory=/opt/plantuml-server ExecStart=/usr/bin/mvn jetty:run -DGRAPHVIZ_DOT=/opt/graphviz/bin/dot [Install] WantedBy=multi-user.target
- この対応によりPlantUML-serverが
localhost:8080
で立ち上がっています
-
- 事前準備
7.GROWIの実行
- コマンド実行
-
sudo MONGO_URI=mongodb://growiuser:password@localhost:27017/growi ELASTICSEARCH_URI=http://localhost:9200/growi PLANTUML_URI=http://localhost:8080 PASSWORD_SEED=passwordseed FILE_UPLOAD=mongodb npm start
- オプションとして下記を含めています
- MongoDBの接続先(ID/PWを含む)
- ElasticSearchの接続先
- PLANTUML_URIの接続先
- PASSWORD_SEEDは適当なランダム値がよい
- FILE_UPLOADはGROWIにファイルを上げる時の保存先、S3やローカルへの設定が可
- オプションとして下記を含めています
-
- サービス化
- systemd による自動起動 | GROWI Docs
- 接続先情報や追加のオプションは適時変更
8.リバースプロキシとHTTPS対応
- GROWIは
localhost:3000
, PlantUMLはlocalhost:8080/plantuml
で実行しています - これらを443で応答できるようにリバースプロキシの設定をし、証明書を適応することでHTTPS対応が行えます
- また、異なるサーバーへ一部サービスを逃がす場合はそれらもHTTPS対応しておいた方がよいかもしれません