Hero img
GROWIをインストール

社内wikiのgrowiをAlmalinuxにインストールした。

社内wikiで無料でオンプレで使うために探した結果growiが良さそうだったのでインストールして使用する事にした。


目次

  • growi
  • growiを使おうとしたきっかけ
  • growiを決めた理由
  • 環境
  • 正常動作した最終的なモジュールバージョン
  • growiサーバインストール
  • nodejsのインストール
  • Elasticsearchのインストール
  • java 11をインストールする。
  • elasticsearchを起動させてみる。
  • プラグインのインストール?
  • MongoDBインストール
  • GROWIのインストール
  • nginx apache
  • 起動しなかった。エラーばっかり
  • 起動しなかったので試してみた事
  • nodejs
  • Elasticsearch
  • 自動起動
  • elasticsearchの自動起動
  • growiの自動起動
  • 起動してみる
  • 自動化する
  • 最終的に何をしたのか?
  • 1.nodejs16をインストール
  • 2.yarnをインストール
  • 3.java 11をインストールする。
  • 4.Elasticsearch7.17.9のダウンロード
  • 5.MongoDB3.6のインストール
  • 6.ファイヤーウォールポート解放
  • 7.GROWIのインストール
  • 8.自動起動設定
  • elasticsearchの自動起動
  • growiの自動起動
  • 起動してみる
  • 自動化する
  • おまけ
  • まとめ

growi

growiはオープンソースで社内、ローカル環境で無料で利用できる、markdown形式で使用することができる社内wikiです。
私にとっては機能が多すぎず少なすぎずちょうどいいです。

growiを使おうとしたきっかけ

社内のドキュメント類の共有にストレージサーバーはありますが。

テキストだけのドキュメントなんて正直読まない。

テキストだけのドキュメント読まない。->使われない->情報が古くなる->信憑性がないドキュメント完成します。  

かといって画像がただあればいいという話ではない。
分かりやすくするためには画像とテキストが必要になる。

そのため何かないかな?と考え、notion, miro ,discode。もしくはnext.jsで自分で作る方が良いのではまで、考えていましたが、
正直難しい。機能が多すぎると使うことができない人が現れる。

高機能が良いのか

「高機能・なんでもできますは」人によっては「複雑・何もできない」になってしまいます。今回は最低限の機能で良い。
見た目で使い易いと直感で感じる物を選びました。
私は、見た目というのはかなり重要な要素だと思っています。

growi-demo-view

growiを決めた理由

  • ここの比較サイトの影響が大きい
  • 個人的にphpが好きではない、nodejsを推し.
  • markdown対応
  • 無料で使えてる
  • オンプレで運用ができる。
  • 見やすかった。

ダントツで他のソフトと比べて見やすかったですね。

デモサイトがあるので確認してみてください。

環境

  • AlmaLinux 8.7

正常動作した最終的なモジュールバージョン

  • nodejs :v16.19.1
  • npm :8.19.3
  • yarn :1.22.19
  • elasticsearch :7.17.9
  • java :openjdk version "11.0.18" 2023-01-17 LTS
  • MongoDB : version v3.6.23

一応バージョンの確認方法を載せます。

node -v
npm -v
yarn -v
curl http://localhost:9200
java -version
mongo -version

growiサーバインストール

公式に沿って行いたいところですが、情報が古い...orz
dockerはかなりドキュメントが揃っていて、力を入れている。
dockerが簡単でいいんだよね...
docker慣れていないのもあるし、docker管理はちょっと....
ということでdockerは使わずインストールを行います。

奮闘記になります。

導入方法だけ知りたい方は目次の「最終的に何をしたのか?」を確認ください。

nodejsのインストール

私の場合初めから入っていましたが、ver18で動かなかったので16に下げました。(ver18で動かなかったのはたぶん私の問題です。)
そのため、アンインストールをして、再度ver16インストールしました。
ver18対応と公式や、ソースコード内に書かれているのでver18で大丈夫だと思います。

#アンインストール
dnf remove nodejs 

#一旦有効なバージョンをリセット
dnf module reset nodejs

#nodejsの確認
dnf module list nodejs
#nodejs 16を有効化
sudo dnf module enable nodejs:16 -y

#nodejs 16をインストール
dnf module -y install nodejs:16

バージョンを確認

node -v
v16.19.1
npm -v
8.19.3

yarnも必要なようということなので、追加します。ここは公式のまま進めていきます。

curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn

そして起動確認。

yarn -v
1.22.19

Elasticsearchのインストール

ここかなりはまった。使った事無いよ。 さらに古いと言われているし...
よくわからないから 公式の言われるがままに進めます。 要はダウンロードして、解凍するだけですね。

※注意

version8で動かなかったので7で実行してください。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-8.7.0-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-8.7.0-linux-x86_64.tar.gz
cd elasticsearch-8.7.0/ 

そして「elasticsearch-8.7.0」のフォルダーを移動させました。 「/opt/elasticsearch-8.7.0」 elasticsearch-path これを起動させるためにjavaが必要になるのでインストールする。

java 11をインストールする。

java 11をインストールし起動確認をします。

dnf install java-11-openjdk-devel
#バージョン確認
java -version
##以下のように出力される。
openjdk version "11.0.18" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS, mixed mode, sharing)

elasticsearchを起動させてみる。

/opt/elasticsearch-8.7.0/bin/elasticsearch

起動できない!!

起動できないという問題に直面しました。

  • フォルダーのオーナー
  • rootでログインしている。

おそらくこの二つが原因だと思われる。

そのため所有者を変更します。ここでは「demo」というユーザーに置き換えます。

chown -R demo:demo elasticsearch-8.7.0

そしてルートユーザーを抜けdemoユーザーでアクセスします。

su demo

そして再度起動してみたらできた。

/opt/elasticsearch-8.7.0/bin/elasticsearch

プラグインのインストール?

公式で「GROWI に必要な Elasticsearch プラグインのインストール」と書いてある。 pluginを確認した感じ日本語検索関係と、顔文字関係のようです。
これらは任意ではなく必須で、追加しないと正常にgrowiとElasticが連結できないようです。

MongoDBインストール

これに関しては公式通りやりました。 viでファイルを作成

/etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

インストール実行

sudo yum install -y mongodb-org

起動や自動起動

#起動
sudo systemctl start mongod
#自動起動
sudo systemctl enable mongod
#正常起動を確認
sudo systemctl status mongod

GROWIのインストール

ここでGROWIをインストールします。これも公式通りです。
一部バージョンを「3.4.2」から「6.0.9」にしています。
ほとんど公式通りです。

sudo mkdir -p /opt/
cd /opt/
sudo git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi

# タグの確認
sudo git tag -l
...
v3.3.7
v3.3.8
v3.3.9
v3.4.0
v3.4.1
v3.4.2
...

# RC がついていない一番下の物を使う2023年4月現在「6.0.9」
sudo git checkout -b v.6.0.9 refs/tags/v6.0.9

必要なパッケージyarnでインストール

cd /opt/growi
sudo yarn

最後に起動をします。

sudo \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
npm start

growiを起動する前にMongoDBとElasticsearchが起動している必要がある。

nginx apache

リバースプロキシの設定をしていますが、3000ポートでそのまま使用する予定なので実行していません。
ローカル環境なのでとりあえず、ファイヤーウォールを無効化しました。

systemctl stop firewalld

ファイヤーウォールを無効化は結構危険なので、ポート解放を実行してください。

#ポートを解放
firewall-cmd --zone=public --add-port=3000/tcp
#永続化はpermanentを付ける
firewall-cmd --zone=public --add-port=3000/tcp --permanent
#最後に設定の再読み込み
firewall-cmd --reload

起動しなかった。エラーばっかり

初めは公式通りの設定をして、起動することができましたが、自動起動のsystemの設定を、公式でやって見たができなかった。
色々やっている内に起動が出来なくなってしまった。

起動しなかったので試してみた事

nodejs

node.jsのバージョンが18だったので16に下げました。
nodejsのバージョン対応はpackage.jsonに記入されていますので、できるはずなんですが...

./growi/package.json
#一番下
  "engines": {
    "node": "^14 || ^16 || ^18",
    "npm": ">=6.14 <7 || >=8.1 < 9",
    "yarn": ">=1.22 <2"
  }

Elasticsearch

Elasticsearchが起動できないためアンインストールをし、手動でダウンロードをしていきました。
javaのエラーが頻繫に発生してしまい分からなかった。
あとは「ダウングレードして」というエラーも起きたのだが レポジトリでダウンロードするのは良くなかったみたい。
手動でダウンロードした。

root

ルートでアクセスしていたのでElasticsearchのファイル所有者がrootになっていたので所有者を一般ユーザーに変更した。

自動起動

自動起動をするため、systemにサービスを追加します。
ここはあまり詳しくないのでそのまま載せます。
使用される際は「User」と「Group」を変更してください。 作成したのは2つ「elasticsearch.service」,「growi.service」

elasticsearchの自動起動

/etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch

[Service]
Type=simple
WorkingDirectory=/opt/elasticsearch-8.7.0
ExecStart=/opt/elasticsearch-8.7.0/bin/elasticsearch
Restart=always
User=hoge
Group=hoge

[Install]
WantedBy=multi-user.target

growiの自動起動

ExecStartがnpmで「run app:server」で起動です。
このようにしないとビルドが入って時間がかかるので 「run app:server」とすることでgrowiビルド無しで起動します。
もちろん一度はビルドを行う必要がありますが。

/etc/systemd/system/growi.service
[Unit]
Description=Growi
After=network.target elasticsearch.service
After=network.target mongod.service


[Service]
WorkingDirectory=/opt/growi
Environment=PORT=3000\
MONGO_URI=mongodb://localhost:27017/growi\
ELASTICSEARCH_URI=http://localhost:9200/growi
ExecStart=/usr/bin/npm run app:server

[Install]
WantedBy=multi-user.target

起動してみる

systemctl start elasticsearch.service
systemctl start growi.service

起動確認はgrowiが3000ポートを使う設定なのでポート使用状況をみて、正常に起動しているのかを判断する。

lsof -i:3000

自動化する

enableにするだけですが

systemctl enable elasticsearch.service
systemctl enable growi.service

最終的に何をしたのか?

上のものは奮闘記になります。
ほとんど同じなので繰り返しになりますが、以下インストールを最終的にどうしたのかをまとめます。

1.nodejs16をインストール

#アンインストール
dnf remove nodejs 

#一旦有効なバージョンをリセット
dnf module reset nodejs

#nodejsの確認
dnf module list nodejs
#nodejs 16を有効化
sudo dnf module enable nodejs:16 -y

#nodejs 16をインストール
dnf module -y install nodejs:16

バージョンを確認

node -v
v16.19.1
npm -v
8.19.3

2.yarnをインストール

curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn

そして起動確認。

yarn -v
1.22.19

3.java 11をインストールする。

java 11をインストールし起動確認をします。

dnf install java-11-openjdk-devel
#バージョン確認
java -version
##以下のように出力される。
openjdk version "11.0.18" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-2.el8_7) (build 11.0.18+10-LTS, mixed mode, sharing)

4.Elasticsearch7.17.9のダウンロード

7.17.9をダウンロードして解凍

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.9-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.9-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.17.9-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-7.17.9-linux-x86_64.tar.gz
cd elasticsearch-7.17.9/ 

プラグインのインストール

/opt/elasticsearch-7.17.9
sudo .bin/elasticsearch-plugin install analysis-kuromoji
sudo .bin/elasticsearch-plugin install analysis-icu

ファイルを/opt/内に移動させ、ファイル所有者をrootから変更
各自の環境に合わせて「hoge」を変更してください。

chown -R hoge:hoge /opt/elasticsearch-7.17.9/

5.MongoDB3.6のインストール

レポジトリ追加

/etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

インストール実行

sudo yum install -y mongodb-org

起動や自動起動の設定

#起動
sudo systemctl start mongod
#自動起動
sudo systemctl enable mongod
#正常起動を確認
sudo systemctl status mongod

6.ファイヤーウォールポート解放

3000ポート解放

firewall-cmd --zone=public --add-port=3000/tcp

7.GROWIのインストール

GROWIをダウンロードし、6.0.9を選択

sudo mkdir -p /opt/
cd /opt/
sudo git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi
sudo git checkout -b v.6.0.9 refs/tags/v6.0.9

必要なパッケージyarnでインストール

cd /opt/growi
sudo yarn

growiの起動。

sudo \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
npm start

8.自動起動設定

2つのファイルを作成「elasticsearch.service」,「growi.service」

elasticsearchの自動起動

/etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch

[Service]
Type=simple
WorkingDirectory=/opt/elasticsearch-7.17.9
ExecStart=/opt/elasticsearch-7.17.9/bin/elasticsearch
Restart=always
User=hoge
Group=hoge

[Install]
WantedBy=multi-user.target

growiの自動起動

ExecStartを「yarn」から「npm」に変更し「run app:server」で起動させる

/etc/systemd/system/growi.service
[Unit]
Description=Growi
After=network.target elasticsearch.service
After=network.target mongod.service


[Service]
WorkingDirectory=/opt/growi
Environment=PORT=3000\
MONGO_URI=mongodb://localhost:27017/growi\
ELASTICSEARCH_URI=http://localhost:9200/growi
ExecStart=/usr/bin/npm run app:server

[Install]
WantedBy=multi-user.target

起動してみる

systemctl start elasticsearch.service
systemctl start growi.service

起動確認はgrowiが3000ポートを使う設定なのでポート使用状況をみて、正常に起動しているのかを判断する。

lsof -i:3000

自動化する

systemctl enable elasticsearch.service
systemctl enable growi.service

おまけ

アカウント作成時、パスワードが8桁以上必要なのでアカウントが作れない現象が発生した。最初分からなかった。

まとめ

growiが起動できました。結構時間がかかって大変でしたね...
公式のページが古い点は大変だったが、使ってみてるけどかなりいい。

関連記事

コメント

コメントを書く

質問や、間違いがありましたら、お気軽にどうぞ

※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください