コンテナ環境だともっと楽なのでしょうけれど、きちっとオンプレで運用したいので、こういう方法をとりました。

前提

  • インストールするサーバはUbuntu 20系のLinux Mint 20.03を用います。(22系はMongoDBで詰まりました)
  • 他にWebサーバを稼働していないサーバにて実施しています。
  • ローカルNW内で運用するため、サーバのセキュリティ設定は低くなっています。
  • インストールするディレクトリは「/var/growi」とします。
  • ここではあくまでもインストールと起動確認を行うまでです。
  • エディタによる編集は極力使わず、コマンドのコピー&ペーストで完結するようにしています。
  • ここではインストールと動作確認にとどめます。

参考にしたURL

  • Ubuntu Server 20.04 LTSにGROWIをインストール

https://qiita.com/BigTree777/items/4a67d36c4111a1fb50e7

  • Ubuntu18.04にGrowiをインストール

https://qiita.com/hawk777/items/0916024c1bd7b24904ae

手順

別途、記載がない限りは

  • 1行空いているコマンドは、1行ずつ実行します。
  • 空白行がない一連のコマンドは全てをコピー&ペーストして実行します。

必要に応じて:aptitudeのインストール

sudo apt-get install aptitude
# 本項ではパッケージ管理にaptitudeを用いますので、導入されていない場合はインストール。
# ポリシーによりaptを用いる場合は読み替えてください。

事前準備 - nginx リポジトリの追加

sudo add-apt-repository ppa:ondrej/nginx
# これを先に実施しないと、mongodbのバージョン固定に失敗しました

Node.js/npm/yarnのインストール

cd ~

curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

sudo bash nodesource_setup.sh

sudo aptitude install nodejs
Node.jsとnpmのインストール確認
node -v

npm -v
# インストールしたバージョンを確認

yarnのインストール

sudo npm install -g yarn

yarn -v
# インストールしたバージョンを確認

Elasticsearchのインストール

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

sudo aptitude install apt-transport-https

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

sudo aptitude update && sudo aptitude install elasticsearch

dpkg -l |grep elasticsearch
#インストールしたバージョンを確認
Elasticsearchに割り当てるメモリを調整
sudo mkdir /etc/elasticsearch/old
# 切り戻しができるように、設定ファイルのバックアップを格納するディレクトリを作ります

sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.`date +%Y%m%d`
# .`date +%Y%m%d`をつけることで、バックアップファイルは当日日付(YYYY/MM/DD形式)で記録されます

echo -e "-Xms256m\n-Xmx256m" | sudo tee -a /etc/elasticsearch/jvm.options
メモリ調整確認
sudo diff -u /etc/elasticsearch/old/jvm.options.`date +%Y%m%d` /etc/elasticsearch/jvm.options

diffの出力結果(差分)が以下であることを確認します。

+-Xms256m
+-Xmx256m
Elasticsearchの自動起動の有効化
sudo systemctl start elasticsearch

sudo systemctl enable elasticsearch

sudo systemctl status elasticsearch
# (running) と enabledを確認

Growiに必要なElasticsearchプラグインのインストール

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

sudo systemctl restart elasticsearch

Redisのインストール

sudo add-apt-repository ppa:chris-lea/redis-server

sudo aptitude update && sudo aptitude install redis-server
インストール後の確認
redis-cli --version

redis-server --version
# インストールしたバージョンが表示されることを確認

sudo systemctl start redis-server

sudo systemctl enable redis-server

sudo systemctl status redis-server
# (running) と enabledを確認

MongoDBのインストール

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

sudo aptitude update && sudo aptitude install mongodb-org=4.4.13 mongodb-org-server=4.4.13 mongodb-org-shell=4.4.13 mongodb-org-mongos=4.4.13 mongodb-org-tools=4.4.13

MongoDBのバージョン固定

echo "mongodb-org hold" | sudo dpkg --set-selections

echo "mongodb-org-server hold" | sudo dpkg --set-selections

echo "mongodb-org-shell hold" | sudo dpkg --set-selections

echo "mongodb-org-mongos hold" | sudo dpkg --set-selections

echo "mongodb-org-tools hold" | sudo dpkg --set-selections
インストール後の確認
redis-cli --version

mongod --version
# インストールしたバージョンが表示されることを確認

sudo systemctl start mongod

sudo systemctl enable mongod

sudo systemctl status mongod
# (running) と enabledを確認

Growiのインストール

sudo aptitude install git build-essential

sudo git clone https://github.com/weseek/growi /var/growi

cd /var/growi

sudo git tag -l
# 2022/09/15での最新版は5.1.4

sudo git checkout -b v5.1.4 refs/tags/v5.1.4

sudo yarn

Growi起動確認

ここでは「PASSWORD_SEED」を「GOLDEN_SEED」と設定します。任意のランダム文字列を指定してください。

先頭のsudo から最終行のnpm startまで全てコピー&ペーストで実行します。

sudo \
NODE_ENV=production \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=GOLDEN_SEED\
FILE_UPLOAD=local \
npm start

以下の表示が出たら起動は成功です。

> growi@(インストールしたバージョン) start /var/growi
> yarn app:server

ブラウザで

http://IPorホスト名:3000

に接続し、ログインページ表示を確認します。(ここではまだログインをしないでください)

ログインページ表示を確認後、[Ctrl]+[C]で抜けます。

これからの流れ

最終的に以下を行います。

  • mkcertによるSSL取得と常時SSL化
  • nginxによるリバースプロキシー
  • growiの起動スクリプト化