Growi
WebベースのMarkdownのWikiサイト、Growiについて
- Growiインストール方法
- Ubuntu 22.04にGrowi 6.xをインストール
- Ubuntu 22.04にGrowi v7.xをインストール。(v7.1.0未対応)
- Ubuntu24.04にGrowi v7をインストール。(v7.1.0未対応)
- Ubuntu24.04にGrowi v7をインストール。(v7.1.0対応版)
- Growi運用
Growiインストール方法
Ubuntu 22.04にGrowi 6.xをインストール
GrowiをUbuntu22.04をインストールしたので、そのときの手順です。
※ Growi v7以降、いくつか設定が異なりますので本稿ではv6での手順を示します。
環境
- Ubuntu 22.04
- Apache 2.4
の基本的な設定が済んだという状況です。
前提
- 名前解決できるドメインが用意されている。
- どのドメインに応じた証明書が用意されている。
さっくりとはならない手順
- Node.js/npmをインストールします。
- Redis-serverをインストールします。
- Javaをインストールします。
- ElasticSearch 8をインストールします。
- ElasticSearchの設定変更を行います。
- ElasticSearchのプラグインをインストールします。
- ElasticSearchの設定変更を反映します。
- MongoDBをインストールします。
- MongoDBのデータ格納先を変更します。
- MongoDBのアップデートを防ぎます。
- MongoDBの設定変更を反映します。
- yarnのインストールを行います。
- 必要パッケージをインストールします。
- turboパッケージをインストールします。
- Growiのインストールを行います。
- yarnを用いてインストールします。
- 自動起動のスクリプトを作成します。
- Apacheのリバースプロキシの設定を行います。
- ブラウザで起動します。
手順
node18をインストールします。
- レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash
- パッケージアップグレード
sudo aptitude update
- Node.jsインストール
sudo aptitude install nodejs
- Node.jsバージョン確認
node -v
2024/04/03現在:v18.20.0
- npmバージョン確認
npm -v
2024/04/03現在:10.5.0
redis-serverをインストールします。
- インストール
sudo aptitude install redis-server
- 起動確認
systemctl status redis-server
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable redis-server
Javaをインストールします。
- インストール
sudo aptitude install openjdk-17-jdk
ElasticSearhをインストールします。
- gpg追加
sudo 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
- レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- パッケージのアップグレード
sudo aptitude update
- ElasticSearchインストール
sudo aptitude install elasticsearch
※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。
JVM設定変更
- バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old
※任意のバックアップディレクトリを指定します。
- 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d)
- 設定ファイル書き換え
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
- 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更
※この作業だけ管理者権限で実行します。
- root昇格
sudo su -
- 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
-e '/xpack.security.http.ssl:/{n; s/ enabled: true/ enabled: false/}' \
-e '/xpack.security.transport.ssl:/{n; s/ enabled: true/ enabled: false/}' /etc/elasticsearch/elasticsearch.yml
- 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
- 差分
# Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
- enabled: true
+ enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
- enabled: true
+ enabled: false
- rootから抜ける
exit
ElasticSearchのプラグインを追加
- analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
- analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
- 起動
sudo systemctl start elasticsearch
- 起動確認
systemctl status elasticsearch
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable elasticsearch
MongoDBインストール
レポジトリ追加
- 必要パッケージインストール
sudo aptitude install gnupg
- gpg追加
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
- レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
- パッケージのアップグレード
sudo aptitude update
- MongoDBインストール
sudo aptitude install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
MongoDBバージョン固定
※2024/04/03現在、GrowiはMongoDBのバージョンが固定されているので、自動更新されないようにします。
sudo aptitude hold mongodb-org
sudo aptitude hold mongodb-org-server
sudo aptitude hold mongodb-org-shell
sudo aptitude hold mongodb-org-mongos
sudo aptitude hold mongodb-org-tools
保存先変更(オプション)
MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。
- 格納ディレクトリ作成
sudo mkdir /home/mongodb
保存先を変えたいところにします
- 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
- 所有者変更確認
ls -ld /home/mongodb
- 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
バックアップが保存されたか、差分がないことで確認します。
- ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
- 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
- 差分
- dbPath: /var/lib/mongodb
+ dbPath: /home/mongodb
自動起動有効
- mongodサービス起動
sudo systemctl start mongod
- サービス起動確認
systemctl status mongod
active (running)を確認します
- 自動起動有効化
sudo systemctl enable mongod
yarnインストール
- npmでyarnインストール
sudo npm install -g yarn
- turboインストール
※Growi v6.1.0から必須パッケージとなりました。
sudo yarn global add turbo@1.12.2
※最新版のturboをインストールするとv6では動きませんでした。
Growiインストール
- git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi
※任意のディレクトリを指定します。
- ディレクトリ移動
cd /home/www-data/growi && pwd
先ほどcloneしたディレクトリです。
- チェックアウト
sudo git checkout -b v6.3.5 refs/tags/v6.3.5
2024/06/25現在、Growi6系最新版の6.3.5をインストールします
- yarnによるインストール
sudo yarn
CPUのスペックによっては相当な時間がかかります。
自動起動スクリプトの作成
- systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=【/home/www-data/growi】
[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
__EOF__
※【】内を、git cloneしたディレクトリにします。
- Growiインストールディレクトリに作成
- 教義・信仰に沿ったエディタで作成します。
- ファイル名:
growi-start.sh
- growiを配置したディレクトリ内に作成します。
#!/bin/bash
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
FILE_UPLOAD=local \
npm start
※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。 例:PASSWORD_SEED=GOLDEN_SEED
また、オプションなどは好みに応じて指定してください。(FILE_UPLOAD=local
は添付ファイルの保存先をDBではなくローカルに保存するオプションです)
- 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
- systemd設定反映
sudo systemctl daemon-reload
- growi有効化
sudo systemctl start growi.service
- growi有効化確認
systemctl status growi.service
active(running)を確認
- 自動起動有効化
sudo systemctl enable growi.service
Apacheによるリバースプロキシの設定
- モジュールインストール
sudo a2enmod proxy_http rewrite header
- apache再起動
sudo systemctl restart apache2.service
- ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
- 所有者変更
sudo chown -R www-data:www-data /var/log/growi
- 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
<VirtualHost _default_:80>
ServerName 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost _default_:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/growi/growi_access.log combined
ErrorLog /var/log/growi/growi_error.log
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# Header に Host: example.com を追加するため
ProxyPreserveHost On
# HTTPS利用時: Header に x-forwarded-proto: https を追加するため
RequestHeader set x-forwarded-proto 'https'
# Apache では static assets で 304 が返らないことがあるので ETag を無効化する
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# socket.io の path を rewrite する
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
__EOF__
【】内を自分の環境に変更してください。
※v7とはWebSocketの書き方が異なります。ご注意ください。
- 設定反映
sudo a2ensite growi.conf
- コンフィグ確認
sudo apache2ctl configtest
Syntax OKを確認します。
- Apache2再起動
sudo systemctl restart apache2.service
Growiインストール確認
http://設定したドメイン でアクセスします。
この初期サイトが表示されたらインストール完了です。
Ubuntu 22.04にGrowi v7.xをインストール。(v7.1.0未対応)
Dockerを用いない方法でGrowiのv7.xをUbuntu22.04がインストールできたので、その手順を示します。
環境
- Ubuntu 22.04
- Apache 2.4
の基本的な設定が済んだという状況です。
前提
- 名前解決できるドメインが用意されている。
- そのドメインに応じた証明書が用意されている。
さっくりとはならない手順
太字部分はv7で必要になる手順です。
- 必要なパッケージをインストールします。
- Node.js/npmをインストールします。
- Redis-serverをインストールします。
- Javaをインストールします。
- ElasticSearch 8をインストールします。
- ElasticSearchの設定変更を行います。
- ElasticSearchのプラグインをインストールします。
- ElasticSearchの設定変更を反映します。
- MongoDBをインストールします。
- MongoDBのデータ格納先を変更します。
- MongoDBのアップデートを防ぎます。
- MongoDBの設定変更を反映します。
- yarnのインストールを行います。
- 必要パッケージをインストールします。
- turboパッケージをインストールします。
- Growiのインストールを行います。
- yarnを用いてインストールします。
- アプリのビルドを行います。
- 自動起動のスクリプトを作成します。
- Apacheのリバースプロキシの設定を行います。
- ブラウザで起動します。
手順
必要なパッケージのインストールを行います。
- git, buildツールなど
sudo aptitude install build-essential git git-lfs apt-transport-https
※v6系と異なり、git-lfsをインストールしない状態でgit-clone
を行うと正しくビルドが行えません。
node18をインストールします。
- レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash
- パッケージアップグレード
sudo aptitude update
- Node.jsインストール
sudo aptitude install nodejs
- Node.jsバージョン確認
node -v
2024/06/27現在:v18.20.3
- npmバージョン確認
npm -v
2024/06/27現在:10.7.0
redis-serverをインストールします。
- インストール
sudo aptitude install redis-server
- 起動確認
systemctl status redis-server
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable redis-server
Javaをインストールします。
- インストール
sudo aptitude install openjdk-17-jdk
ElasticSearhをインストールします。
- gpg追加
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
- レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- パッケージのアップグレード
sudo aptitude update
- ElasticSearchインストール
sudo aptitude install elasticsearch
※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。
JVM設定変更
- バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old
※任意のバックアップディレクトリを指定します。
- 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d)
- 設定ファイル書き換え
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
- 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更
※この作業だけ管理者権限で実行します。
- root昇格
sudo su -
- 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
-e '/xpack.security.http.ssl:/{n; s/ enabled: true/ enabled: false/}' \
-e '/xpack.security.transport.ssl:/{n; s/ enabled: true/ enabled: false/}' /etc/elasticsearch/elasticsearch.yml
- 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
- 差分
# Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
- enabled: true
+ enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
- enabled: true
+ enabled: false
- rootから抜ける
exit
ElasticSearchのプラグインを追加
- analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
- analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
- 起動
sudo systemctl start elasticsearch
- 起動確認
systemctl status elasticsearch
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable elasticsearch
MongoDBインストール
レポジトリ追加
- 必要パッケージインストール
sudo aptitude install gnupg
- gpg追加
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
- レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
- パッケージのアップグレード
sudo aptitude update
- MongoDBインストール
sudo aptitude install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
MongoDBバージョン固定
※2024/04/03現在、GrowiはMongoDBのバージョンが固定されているので、自動更新されないようにします。
sudo aptitude hold mongodb-org
sudo aptitude hold mongodb-org-server
sudo aptitude hold mongodb-org-shell
sudo aptitude hold mongodb-org-mongos
sudo aptitude hold mongodb-org-tools
保存先変更(オプション)
MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。
- 格納ディレクトリ作成
sudo mkdir /home/mongodb
保存先を変えたいところにします
- 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
- 所有者変更確認
ls -ld /home/mongodb
- 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
バックアップが保存されたか、差分がないことで確認します。
- ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
- 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
- 差分
- dbPath: /var/lib/mongodb
+ dbPath: /home/mongodb
自動起動有効
- mongodサービス起動
sudo systemctl start mongod
- サービス起動確認
systemctl status mongod
active (running)を確認します
- 自動起動有効化
sudo systemctl enable mongod
yarnインストール
- npmでyarnインストール
sudo npm install -g yarn
- turboインストール
※Growi v6.1.0から必須パッケージとなりました。
sudo yarn global add turbo
Growiインストール
- git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi
※任意のディレクトリを指定します。
- ディレクトリ移動
cd /home/www-data/growi && pwd
先ほどcloneしたディレクトリです。
- チェックアウト
sudo git checkout -b v7.0.11 refs/tags/v7.0.11
2024/06/27現在の最新版をチェックアウトします。
- yarnによるインストール
sudo yarn
CPUのスペックによっては相当な時間がかかります。
- ビルド
sudo yarn app:build
v7からこの操作が必要です。やはり時間がかかります。
自動起動スクリプトの作成
- systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=【/home/www-data/growi】
[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
__EOF__
※【】内を、git cloneしたディレクトリにします。
-
Growiインストールディレクトリに作成
- 教義・信仰に沿ったエディタで作成します。
-
ファイル名:
growi-start.sh
- growiを配置したディレクトリ内に作成します。
#!/bin/bash
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
FILE_UPLOAD=local \
npm start
※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。 例:PASSWORD_SEED=GOLDEN_SEED
また、オプションなどは好みに応じて指定してください。(FILE_UPLOAD=local
は添付ファイルの保存先をDBではなくローカルに保存するオプションです)
- 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
- systemd設定反映
sudo systemctl daemon-reload
- growi有効化
sudo systemctl start growi.service
- growi有効化確認
systemctl status growi.service
active(running)を確認
- 自動起動有効化
sudo systemctl enable growi.service
Apacheによるリバースプロキシの設定
- モジュールインストール
sudo a2enmod proxy_http rewrite header
- apache再起動
sudo systemctl restart apache2.service
- ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
- 所有者変更
sudo chown -R www-data:www-data /var/log/growi
- 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
<VirtualHost _default_:80>
ServerName 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost _default_:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/growi/growi_access.log combined
ErrorLog /var/log/growi/growi_error.log
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# Header に Host: example.com を追加するため
ProxyPreserveHost On
# HTTPS利用時: Header に x-forwarded-proto: https を追加するため
RequestHeader set x-forwarded-proto 'https'
# Apache では static assets で 304 が返らないことがあるので ETag を無効化する
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# WebSocketのための設定
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
__EOF__
【】内を自分の環境に変更してください。
※v6とはWebSocketの書き方が異なります。ご注意ください。特に、Apacheのリバースプロキシ環境でWebSocket周りを適切に指定しないとページを編集しようとすると編集画面が空白になってしまいます。
- 設定反映
sudo a2ensite growi.conf
- コンフィグ確認
sudo apache2ctl configtest
Syntax OKを確認します。
- Apache2再起動
sudo systemctl restart apache2.service
Growiインストール確認
http://設定したドメイン でアクセスします。
この初期サイトが表示されたらインストール完了です。
Ubuntu24.04にGrowi v7をインストール。(v7.1.0未対応)
ようやく、Ubuntu24.04にGrowiをインストールできたのでそのメモです。
参考手順:GROWIをUbuntuで構築した
ただし、v7.1.0ではpnpmでパッケージ管理を行うため、本手順は未対応です。
環境
- Ubuntu 24.04
- Apache 2.4
の基本的な設定が済んだという状況です。
前提
- 名前解決できるドメインが用意されている。
- そのドメインに応じた証明書が用意されている。
さっくりとはならない手順
- 必要なパッケージをインストールします。
- Node.js/npmをインストールします。
- Redis-serverをインストールします。
- Javaをインストールします。
- ElasticSearch 8をインストールします。
- ElasticSearchの設定変更を行います。
- ElasticSearchのプラグインをインストールします。
- ElasticSearchの設定変更を反映します。
- MongoDBをインストールします。
- MongoDBのデータ格納先を変更します。(オプション)
- MongoDBの設定変更を反映します。(オプション)
- yarnのインストールを行います。
- turboパッケージをインストールします。
- Growiのインストールを行います。
- yarnを用いてインストールします。
- アプリのビルドを行います。
- 自動起動のスクリプトを作成します。
- Apacheのリバースプロキシの設定を行います。
- ブラウザで初期インストールを行います。
手順
必要なパッケージのインストールを行います。
- git, buildツールなど
sudo aptitude install build-essential git git-lfs apt-transport-https
※v6系と異なり、git-lfsをインストールしない状態でgit-clone
を行うと正しくビルドが行えません。
node20をインストールします。
- レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash
- パッケージアップグレード
sudo aptitude update
- Node.jsインストール
sudo aptitude install nodejs
- Node.jsバージョン確認
node -v
2024/10/30現在:v20.18.0
- npmバージョン確認
npm -v
2024/10/30現在:10.9.0
redis-serverをインストールします。
- インストール
sudo aptitude install redis-server
- 起動確認
systemctl status redis-server
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable redis-server
Javaをインストールします。
- インストール
sudo aptitude install openjdk-17-jdk
ElasticSearhをインストールします。
- OpenJDKインストール
sudo aptitude install openjdk-17-jdk sudo bash -
- gpg追加
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
- レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- パッケージのアップグレード
sudo aptitude update
- ElasticSearchインストール
sudo aptitude install elasticsearch
※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。
JVM設定変更
- バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old
※任意のバックアップディレクトリを指定します。
- 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d)
- 設定ファイル書き換え
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
- 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更
※この作業だけ管理者権限で実行します。
- root昇格
sudo su -
- 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
-e '/xpack.security.http.ssl:/{n; s/ enabled: true/ enabled: false/}' \
-e '/xpack.security.transport.ssl:/{n; s/ enabled: true/ enabled: false/}' /etc/elasticsearch/elasticsearch.yml
- 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
- 差分
# Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
- enabled: true
+ enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
- enabled: true
+ enabled: false
- rootから抜ける
exit
ElasticSearchのプラグインを追加
- analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
- analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
- 起動
sudo systemctl start elasticsearch
- 起動確認
systemctl status elasticsearch
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable elasticsearch
MongoDBインストール
レポジトリ追加
- 必要パッケージインストール
sudo aptitude install gnupg
- gpg追加
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
- レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
- パッケージのアップグレード
sudo aptitude update
- MongoDBインストール
sudo aptitude install mongodb-org
保存先変更(オプション)
MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。
- 格納ディレクトリ作成
sudo mkdir /home/mongodb
保存先を変えたいところにします
- 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
- 所有者変更確認
ls -ld /home/mongodb
- 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
バックアップが保存されたか、差分がないことで確認します。
- ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
- 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
- 差分
- dbPath: /var/lib/mongodb
+ dbPath: /home/mongodb
自動起動有効
- mongodサービス起動
sudo systemctl start mongod
- サービス起動確認
systemctl status mongod
active (running)を確認します
- 自動起動有効化
sudo systemctl enable mongod
yarnインストール
- npmでyarnインストール
sudo npm install -g yarn
- turboインストール
※Growi v6.1.0から必須パッケージとなりました。
sudo yarn global add turbo
Growiインストール
- git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi
※任意のディレクトリを指定します。
- ディレクトリ移動
cd /home/www-data/growi && pwd
先ほどcloneしたディレクトリです。
- チェックアウト
sudo git checkout -b v7.0.23 refs/tags/v7.0.23
2024/10/30現在の最新版をチェックアウトします。
- yarnによるインストール
sudo yarn
CPUのスペックによっては相当な時間がかかります。
- ビルド
sudo yarn app:build
v7からこの操作が必要です。やはり時間がかかります。
自動起動スクリプトの作成
- systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
After=network.target elasticsearch.service
ConditionPathExists=【/home/www-data/growi】
[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
__EOF__
※【】内を、git cloneしたディレクトリにします。
-
Growiインストールディレクトリに作成
- 教義・信仰に沿ったエディタで作成します。
-
ファイル名:
growi-start.sh
- growiを配置したディレクトリ内に作成します。
#!/bin/bash
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
npm run app:server
※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。 例:PASSWORD_SEED=GOLDEN_SEED
また、オプションなどは好みに応じて指定してください。(今回はs3互換クラウドストレージに保存するため、ファイルのアップロードを自由選択にしています。)
- 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
- systemd設定反映
sudo systemctl daemon-reload
- growi有効化
sudo systemctl start growi.service
- growi有効化確認
systemctl status growi.service
active(running)を確認
- 自動起動有効化
sudo systemctl enable growi.service
Apacheによるリバースプロキシの設定
- モジュールインストール
sudo a2enmod proxy_http rewrite
- apache再起動
sudo systemctl restart apache2.service
- ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
- 所有者変更
sudo chown -R www-data:www-data /var/log/growi
- 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
<VirtualHost _default_:80>
ServerName 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost _default_:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/growi/growi_access.log combined
ErrorLog /var/log/growi/growi_error.log
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# Header に Host: example.com を追加するため
ProxyPreserveHost On
# HTTPS利用時: Header に x-forwarded-proto: https を追加するため
RequestHeader set x-forwarded-proto 'https'
# Apache では static assets で 304 が返らないことがあるので ETag を無効化する
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# socket.io の path を rewrite する
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
__EOF__
【】内を自分の環境に変更してください。
※Ubuntu22.04の時と異なり、socket.ioのpathは公式ドキュメント通りで正常に動作しています。
- 設定反映
sudo a2ensite growi.conf
- コンフィグ確認
sudo apache2ctl configtest
Syntax OKを確認します。
- Apache2再起動
sudo systemctl restart apache2.service
Growiインストール確認
http://設定したドメイン でアクセスします。
この初期サイトが表示されたらインストール完了です。
Ubuntu24.04にGrowi v7をインストール。(v7.1.0対応版)
Growi v7.1.0のインストールメモです。
パッケージ管理がyarnからpnpmに変更されているため、若干手間が異なります。
環境
- Ubuntu 24.04
- Apache 2.4
の基本的な設定が済んだという状況です。
前提
- 名前解決できるドメインが用意されている。
- そのドメインに応じた証明書が用意されている。
さっくりとはならない手順
- 必要なパッケージをインストールします。
- Node.js/npmをインストールします。
- Redis-serverをインストールします。
- Javaをインストールします。
- ElasticSearch 8をインストールします。
- ElasticSearchの設定変更を行います。
- ElasticSearchのプラグインをインストールします。
- ElasticSearchの設定変更を反映します。
- MongoDBをインストールします。
- MongoDBのデータ格納先を変更します。(オプション)
- MongoDBの設定変更を反映します。(オプション)
- pnpmのインストールを行います。
- turboパッケージをインストールします。
- Growiのインストールを行います。
- pnpmを用いてインストールします。
- アプリのビルドを行います。
- 自動起動のスクリプトを作成します。
- Apacheのリバースプロキシの設定を行います。
- ブラウザで初期インストールを行います。
手順
必要なパッケージのインストールを行います。
- git, buildツールなど
sudo aptitude install build-essential git git-lfs apt-transport-https
※v6系と異なり、git-lfsをインストールしない状態でgit-clone
を行うと正しくビルドが行えません。
node20をインストールします。
- レポジトリ追加
sudo curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash
- パッケージアップグレード
sudo aptitude update
- Node.jsインストール
sudo aptitude install nodejs
- Node.jsバージョン確認
node -v
2024/10/30現在:v20.18.0
- npmバージョン確認
npm -v
2024/10/30現在:10.9.0
redis-serverをインストールします。
- インストール
sudo aptitude install redis-server
- 起動確認
systemctl status redis-server
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable redis-server
Javaをインストールします。
- インストール
sudo aptitude install openjdk-17-jdk
ElasticSearhをインストールします。
- OpenJDKインストール
sudo aptitude install openjdk-17-jdk sudo bash -
- gpg追加
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
- レポジトリ追加
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- パッケージのアップグレード
sudo aptitude update
- ElasticSearchインストール
sudo aptitude install elasticsearch
※この後、デフォルトパスワードが表示されますが、控えておく程度にしましょう。
JVM設定変更
- バックアップディレクトリ作成
sudo mkdir /etc/elasticsearch/old
※任意のバックアップディレクトリを指定します。
- 設定ファイルバックアップ
sudo cp -pi /etc/elasticsearch/jvm.options /etc/elasticsearch/old/jvm.options.$(date +%Y%m%d)
- 設定ファイル書き換え
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
- 差分
+-Xms256m
+-Xmx256m
ElasticSearchの設定変更
※この作業だけ管理者権限で実行します。
- root昇格
sudo su -
- 設定ファイルバックアップ
cp -pi /etc/elasticsearch/elasticsearch.yml /path/to/backup/elasticsearch.yml.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイル書き換え
sed -i -e 's/xpack.security.enabled: true/xpack.security.enabled: false/' \
-e '/xpack.security.http.ssl:/{n; s/ enabled: true/ enabled: false/}' \
-e '/xpack.security.transport.ssl:/{n; s/ enabled: true/ enabled: false/}' /etc/elasticsearch/elasticsearch.yml
- 差分確認
diff -u /path/to/backup/elasticsearch.yml.$(date +%Y%m%d) /etc/elasticsearch/elasticsearch.yml
- 差分
# Enable security features
-xpack.security.enabled: true
+xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
- enabled: true
+ enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
- enabled: true
+ enabled: false
- rootから抜ける
exit
ElasticSearchのプラグインを追加
- analysis-kuromoji インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
- analysis-isu インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
自動起動設定反映
- 起動
sudo systemctl start elasticsearch
- 起動確認
systemctl status elasticsearch
active(running)を確認します。
- 自動起動有効化
sudo systemctl enable elasticsearch
MongoDBインストール
レポジトリ追加
- 必要パッケージインストール
sudo aptitude install gnupg
- gpg追加
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
- レポジトリ追加
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
MongoDBインストール
- パッケージのアップグレード
sudo aptitude update
- MongoDBインストール
sudo aptitude install mongodb-org
保存先変更(オプション)
MongoDBの格納先を、冗長化構成されているパーティションにするため対応しました。
- 格納ディレクトリ作成
sudo mkdir /home/mongodb
保存先を変えたいところにします
- 所有者変更
sudo chown -R mongodb:mongodb /home/mongodb
- 所有者変更確認
ls -ld /home/mongodb
- 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
sudo diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
バックアップが保存されたか、差分がないことで確認します。
- ファイル書き換え
sudo sed -i 's/dbPath: \/var\/lib\/mongodb/dbPath: \/home\/mongodb/' /etc/mongod.conf
- 差分確認
sudo diff -u /path/to/backup/mongod.conf.$(date +%Y%m%d) /etc/mongodb.conf
- 差分
- dbPath: /var/lib/mongodb
+ dbPath: /home/mongodb
自動起動有効
- mongodサービス起動
sudo systemctl start mongod
- サービス起動確認
systemctl status mongod
active (running)を確認します
- 自動起動有効化
sudo systemctl enable mongod
pnpmインストール
- npmでpnpmインストール
sudo npm install -g pnpm
- turboインストール
※Growi v6.1.0から必須パッケージとなりました。
sudo yarn global add turbo
Growiインストール
- git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi
※任意のディレクトリを指定します。
- ディレクトリ移動
cd /home/www-data/growi && pwd
先ほどcloneしたディレクトリです。
- チェックアウト
sudo git checkout -b v7.1.0 refs/tags/v7.1.0
- lfs pull
sudo git lfs pull
- pnpmによるインストール
sudo pnpm install
CPUのスペックによっては相当な時間がかかります。
- ビルド
sudo npm run app:build
やはり時間がかかります。
自動起動スクリプトの作成
- systemd作成
cat <<- __EOF__ | sudo tee -a /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
After=network.target elasticsearch.service
ConditionPathExists=【/home/www-data/growi】
[Service]
ExecStart=【/home/www-data/growi/】growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
__EOF__
※【】内を、git cloneしたディレクトリにします。
-
Growiインストールディレクトリに作成
- 教義・信仰に沿ったエディタで作成します。
-
ファイル名:
growi-start.sh
- growiを配置したディレクトリ内に作成します。
#!/bin/bash
cd 【/home/www-data/growi】
NODE_ENV=production \
AUDIT_LOG_ENABLED=true \
FORCE_WIKI_MODE=private \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=[任意の文字列] \
npm run app:server
※【】内を、git cloneしたディレクトリにします。
[]内には任意の文字列を入れます。 例:PASSWORD_SEED=GOLDEN_SEED
また、オプションなどは好みに応じて指定してください。(今回はs3互換クラウドストレージに保存するため、ファイルのアップロードを自由選択にしています。)
- 権限変更
sudo chmod +x /home/www-data/growi/growi-start.sh
- systemd設定反映
sudo systemctl daemon-reload
- growi有効化
sudo systemctl start growi.service
- growi有効化確認
systemctl status growi.service
active(running)を確認
- 自動起動有効化
sudo systemctl enable growi.service
Apacheによるリバースプロキシの設定
- モジュールインストール
sudo a2enmod proxy_http rewrite
- apache再起動
sudo systemctl restart apache2.service
- ログ保存ディレクトリ作成
suod mkdir /var/log/growi/
- 所有者変更
sudo chown -R www-data:www-data /var/log/growi
- 設定ファイル作成
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/growi.conf
<VirtualHost _default_:80>
ServerName 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost _default_:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/growi/growi_access.log combined
ErrorLog /var/log/growi/growi_error.log
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# Header に Host: example.com を追加するため
ProxyPreserveHost On
# HTTPS利用時: Header に x-forwarded-proto: https を追加するため
RequestHeader set x-forwarded-proto 'https'
# Apache では static assets で 304 が返らないことがあるので ETag を無効化する
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# socket.io の path を rewrite する
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
__EOF__
【】内を自分の環境に変更してください。
※Ubuntu22.04の時と異なり、socket.ioのpathは公式ドキュメント通りで正常に動作しています。
- 設定反映
sudo a2ensite growi.conf
- コンフィグ確認
sudo apache2ctl configtest
Syntax OKを確認します。
- Apache2再起動
sudo systemctl restart apache2.service
Growiインストール確認
http://設定したドメイン でアクセスします。
この初期サイトが表示されたらインストール完了です。
Growi運用
Ubuntu 24.04環境でのGrowi 7.0.23→7.1.0へのバージョンアップ
Ubuntu 7.1.0はかなり大きめの仕様変更がありました。
https://github.com/weseek/growi/releases/tag/v7.1.0
いくつかハマったポイントがありましたが、「自分はこの手順でうまくいった」 というメモを残します。
バージョンアップ前環境
- Ubuntu 24.04
- Mongodb 6.0.19
- npm 10.9.0
- node v20.18.0
- yarn 1.22.22
- Growi 7.0.23
以下の手順に沿ってインストール済みです。
https://barrel.reisalin.com/books/growi/page/ubuntu2404growi-v7v710
バージョンアップ後環境
- Ubuntu 24.04
- Mongodb 6.0.19
- npm 10.9.0
- node v20.18.0
- pnpm 9.12.3
- Growi 7.1.0
ここで分かるように、パッケージ管理がyarnからpnpmへと変わっています。
さっくりとした手順
- Growiサービスを停止します。
- Growiのディレクトリを退避します。
- 新たにgit cloneを行います。
- チェックアウトを行います。
- pnpmのインストールを行います。
- アプリのビルドを行います。
- Growiスタートアップスクリプトをコピーします。
- Growiサービスを起動します。
- バージョンアップを確認します。
なぜか通常のgit checkoutはビルドがうまくいきませんでした。
Growiサービスの停止
- Growiサービス停止前確認
systemctl status growi.service
active(running)
を確認します。
- Growiサービス停止
sudo systemctl stop growi.service
- Growiサービス停止後確認
systemctl stop growi.service
inactive(dead)
を確認します。
Growiディレクトリの退避
- ディレクトリ退避
筆者環境は/home/www-data/growi
です。
sudo mv /home/www-data/growi /path/to/backup/directory/growi_org
- ディレクトリ退避確認
ls -l /path/to/backup/directory/growi_org
ファイル一覧が参照できることを確認します。
Growiデータの新規取得
- git clone
sudo git clone https://github.com/weseek/growi /home/www-data/growi
※任意のディレクトリを指定します。
- ディレクトリ移動
cd /home/www-data/growi && pwd
先ほどcloneしたディレクトリですが、退避前のディレクトリと同じことを確認します。
Growi v7.1.0をチェックアウト
- チェックアウト
sudo git checkout -b v7.1.0 refs/tags/v7.1.0
- lfs pull
sudo git lfs pull
pnpmパッケージのインストール
- npm install
sudo npm install -g pnpm
- インストール確認
pnpm --version
9.12.3
を確認(2024/11/02現在)
Growiインストール
- lfs pull
sudo git lfs pull
- pnpmインストール
sudo pnpm install
※ マシンスペックによっては相当時間がかかります
※ Done in 【時間】と書かれていたらアップグレード完了です
- ビルド
sudo npm run app:build
退避させたGrowiから起動スクリプトのコピー
筆者のように、起動スクリプトをGrowiのインストールディレクトリに仕込んでいる場合の手順です。
- スクリプトコピー
sudo cp -pi /path/to/backup/directory/growi_org/growi-start.sh /home/www-data/growi/
それぞれ、バックアップしたディレクトリとcloneしたディレクトリです。
- コピー確認
ls -l /home/www-data/growi/growi-start.sh
ファイルがあることを確認します。
growiサービスを起動します。
- 再開前のステータス確認
systemctl status growi.service
inactive (dead)を確認します
- サービス再起動
sudo systemctl start growi.service
※ 完全に起動していないと、アクセスしても503エラーが発生します。
- 再開後のステータス確認
systemctl status growi.service
サービススクリプトを[growi]にしている場合
active (running)を確認します
バージョンアップを確認します。
- ブラウザから設定したgrowiのドメイン/IPにアクセスします。
- 画面下部にあるバージョンが7.1.0であることを確認します。
Growiで全文検索できないときの対処(ElasticSearchに伴うプラグインアップデート)
概要
サーバのパッケージアップデート後、Growiで全文検索ができない現象が発生しました。
状況確認
- elasticsearch状況確認
systemctl status elasticsearch.service
- 状況確認結果
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2023-08-09 20:32:57 JST; 12min ago
Docs: https://www.elastic.co
Process: 992 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1/FAI>
Main PID: 992 (code=exited, status=1/FAILURE)
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:1>
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAware>
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:11>
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.cli.Command.main(Command.java:77)
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125)
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: For complete error details, refer to the log at /var/log/elasticsearch/elasticsea>
8月 09 20:32:57 chisato.lyco.reco systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
8月 09 20:32:57 chisato.lyco.reco systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
8月 09 20:32:57 chisato.lyco.reco systemd[1]: Failed to start Elasticsearch.
lines 1-17/17 (END)
→ ElasticSearchがうまく稼働していない事象を確認。
原因調査
- ElasticSearchのログ確認
sudo tail -50 /var/log/elasticsearch/elasticsearch.log
- ログ抜粋
[2023-08-09T20:32:56,947][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [chisato.lyco.reco] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: Plugin [analysis-icu] was built for Elasticsearch version 7.17.10 but version 7.17.12 is running
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:173) ~[elasticsearch-7.17.12.jar:7.17.12]
と、パッケージ更新時にElasticSearchが上がったのに、その中のプラグインが対応していないためこの事象が発生です。
対処
- 入っていたプラグインをアンインストール
- 最新バージョンのプラグインを再インストール
- プラグイン再インストール後にElasticSearch起動
と、割と単純な作業です。
- プラグインのアンインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-kuromoji
- プラグインの再インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
- ElasticSearch起動
sudo systemctl restart elasticsearch.service
環境によってはサービス起動まで時間が掛かります
- ElasticSearch起動確認
systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-08-09 20:53:39 JST; 27s ago
Docs: https://www.elastic.co
Main PID: 2930 (java)
Tasks: 93 (limit: 9152)
Memory: 786.6M
CGroup: /system.slice/elasticsearch.service
├─2930 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.tt>
└─3114 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
8月 09 20:53:14 chisato.lyco.reco systemd[1]: Starting Elasticsearch...
8月 09 20:53:39 chisato.lyco.reco systemd[1]: Started Elasticsearch.
起動を確認。
Growiで事象の解消確認
- Growiアプリにブラウザでアクセスします。
- 管理者権限でログインします。
- 設定>Elasticsearch管理を進み、以下のように接続されていればOKです。
growiのバージョンアップ/ダウングレード手順。(v7.1.0未対応)
概要
Wikiツールとして有効に利用しているgrowi。そのバージョンアップ及びダウングレード方法のメモです。
※これは、単にgitのみの手順です。他にシステム要件(他のミドルウェアのバージョンアップや切り戻しなど)がある場合は、それも合わせて実施することを注記いたします。
前提
- 既にgrowiをインストールしていること。
- systemdによってサービス化されていること。
- 最新版や安定版がリリースされていることを以下のサイトで確認していること。
※備考
本手順はv7.1.0には未対応です。
手順
さっくりとした手順
- growiのサービスを停止します。
- gitコマンドで最新版を引っ張ります。
- アップグレードを行います。
- growiのサービスを再開します。
- アップグレードされたことを確認します。
growiサービスを停止します
- growiのステータス確認(停止前)
systemctl status growi.service
※ サービススクリプト名は自分の環境に合わせます。
※ active(running)を確認します
- growiのサービス停止
sudo systemctl stop growi.service
- growiのステータス確認(停止後)
systemctl status growi.service
inactive (dead)を確認します
growiディレクトリに移動します
cd /opt/growi
自分の環境に合わせます。
リリースタグを確認します。
- リリースタグ取得
sudo git fetch --tags
- リリースタグ確認
sudo git tag -l
スペースで確認していき、上記リリースサイトと同じバージョンがあることを確認します。
チェックアウトとインストールを行います。
- 変更を一時的に退避
sudo git stash
- チェックアウト
sudo git checkout 【バージョン】
- yarn
sudo yarn
※ マシンスペックによっては相当時間がかかります
※ Done in 【時間】と書かれていたらアップグレード完了です
- ビルド
sudo yarn app:build
growiサービスを起動します。
- 再開前のステータス確認
systemctl status growi.service
inactive (dead)を確認します
- サービス再起動
sudo systemctl start growi.service
※ 完全に起動していないと、アクセスしても503エラーが発生します。
- 再開後のステータス確認
systemctl status growi.service
サービススクリプトを[growi]にしている場合
active (running)を確認します
バージョンアップを確認します。
- ブラウザから設定したgrowiのドメイン/IPにアクセスします。
- 画面下部にあるバージョンがチェックアウトしたバージョンであることを確認します。
Growi v7.xでページ編集時に空白になる問題に対処(Apache リバースプロキシのWebSocket設定)
事象の内容
- Growiのバージョンをv6.3.5→v7.0.11にアップグレード後、既存のページを編集しようとすると編集エリアが空白になってしまう。
- 新規ページを作成する際に、テンプレートが適用されない。
Wikiとしては致命的な弱点だったため、やむなくv6.3.5に戻したという経緯があります。
ですが、回避策が見つかりましたのでメモとして残します。
事象が発生した環境
- Ubuntu 22.04
- Apache 2.4
- Growi v7.0.11をDockerではなくオンプレ環境で利用。
- Apacheによるリバースプロキシを設定
備考
この事象は、以下で回避されました。
- Ubuntu 24.04
- Apache 2.4
- Growi v7.0.23
同一事象をネットで確認。
- [7.0.0]データ移行機能を使用した後、記事の編集内容が失われる #8677
How to reproduce? (再現手順)
2台のHostPCでそれぞれGrowiを立ち上げています。A環境・B環境と呼称します。
「データ移行」機能を用いて、A環境からB環境にデータをインポートする B環境のGrowiに他のPCからアクセスする 記事の編集画面を表示する
What happens? (症状)
記事の編集画面が白紙になっており、そのまま保存しても記事の内容が失われる(添付画面参照)
と、事象が一致。
事象の原因
上記issueのツリーに
私の環境でも編集画面が空白になる現象が観測されました。
私は https-portal を使ってデプロイしているのですが、 growi-docker-compose/examples/https-portal にある WEBSOCKET: 'true' の環境変数を設定し損ねていたのが原因でした。 私の環境では、これを設定すると通常通り編集を行えることを確認しております。逆に、コメントアウトすると空白に戻ります。
とあります。
これを原因と断定し、対処に臨みます。
筆者が実施したのはオンプレ(Apacheによるリバースプロキシ)での対処です。
対応方法のさっくりとした手順
- 現状のgrowiのリバースプロキシの設定を確認。
- 設定ファイルのバックアップ。
- 設定ファイルを修正。
- 修正を反映。
- 事象の解決確認。
参考にしたURL
How to Reverse Proxy Websockets with Apache 2.4
現段階でのリバースプロキシの設定を確認します。
- Apacheのバーチャルファイルを確認
cat /etc/apache2/sites-available/growi.conf
自分の環境に合わせます。
- 内容の一部抜粋
# socket.io の path を rewrite する
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/ [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
設定そのものはgithubのgrowi公式ドキュメントに沿ったものでしたが、これが引っかかっていたようです。
設定ファイルのバックアップを取ります。
- バックアップ
sudo cp -pi /etc/apache2/sites-available/growi.conf /path/to/backup/directory/growi.conf.$(date +%Y%m%d)
ファイル名は自分の環境に合わせます。適宜、任意のバックアップディレクトリを指定します。
- バックアップ確認
diff -u /path/to/backup/directory/growi.conf.$(date +%Y%m%d) /etc/apache2/sites-available/growi.conf
差分が無いこと(エラーがないこと)でバックアップを確認します。
ファイルを修正します。
上記の設定ファイルを教義・信仰に沿ったエディタで編集します。(要管理者権限)
- 削除する内容
# socket.io の path を rewrite する
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/ [P,L]
- 削除した箇所に追記する内容
# WebSocketのための設定
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
編集後、差分を取ります。
- 差分確認
diff -u /path/to/backup/directory/growi.conf.$(date +%Y%m%d) /etc/apache2/sites-available/growi.conf
- 差分結果
- # socket.io の path を rewrite する
- RewriteEngine On
- RewriteCond %{REQUEST_URI} ^/socket.io [NC]
- RewriteCond %{QUERY_STRING} transport=websocket [NC]
- RewriteRule /(.*) ws://localhost:3000/ [P,L]
+ # WebSocketのための設定
+ RewriteEngine On
+ RewriteCond %{HTTP:Upgrade} =websocket [NC]
+ RewriteCond %{HTTP:Connection} upgrade [NC]
+ RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
設定を反映します。
- 構文確認
sudo apache2ctl configtest
Syntax OK
を確認します。
- Apache再起動前確認
systemctl status apache2.service
active (running)
を確認します。
- Apache再起動
sudo systemctl restart apache2.service
- Apache再起動後確認
systemctl status apache2.service
active (running)
を確認します。
事象の解決を確認します。
上記、設定を行ったGrowiサイトにアクセスします。
編集後、左ペイン(エディタ部分)がそのまま残っていれば対処完了です。
Ubuntu 20.04 / nginx環境でgrowiをv6.x→v7.0.xにアップグレード。(nginxリバースプロキシのWebSocket設定)
概要
長らくUbuntu 20.04で動かしているgrowi。こちらもv7.0.xにアップグレードできることを確認しました。
Apacheと同様、nginx環境でも、WebSocketを適切に設定する必要がありました。
環境
- Ubuntu 20.04
- Growi v6.3.5
- 非Dockerのオンプレ環境
- nginx( この手順に則ってgrowi v6をnginxのリバースプロキシで動かしていました)。
さっくりとした手順
- nodeのアップグレードを行います。
- growiサービスを停止します。
- growiのバージョンアップを行います。
- growiサービスを再開します。
- nginxのリバースプロキシ設定を書き換え、nginxサービスの再起動を行います。
- バージョンアップを行います。
nodeのアップグレード
node -v
v18.16.0
はGrowi7系の対象外だったので、nodeを最新安定版に変えるところからスタートします。
- n packageのインストール
sudo npm install -g n
- nでnode 20系の安定版をインストール
sudo n --stable
- バージョンアップ確認
node -v
20.15.0
を確認します。
growiのアップグレード前のサービス停止
- growiのステータス確認(停止前)
systemctl status growi.service
※ サービススクリプト名は自分の環境に合わせます。
※ active(running)を確認します
- growiのサービス停止
sudo systemctl stop growi.service
- growiのステータス確認(停止後)
systemctl status growi.service
inactive (dead)を確認します
growiのアップグレード
- growiディレクトリの移動
cd /opt/growi
自分の環境に合わせます。
- 必要パッケージのインストール
sudo aptitude install git-lfs
git-lfs
を入れないとclone/build時に画像が表示されません。
- lfs -pull
sudo git lfs pull
- リリースタグ取得
sudo git fetch --tags
- リリースタグ確認
sudo git tag -l
2024/06/30現在のv7系最新版、v7.0.11があることを確認しました。
- gitのバージョンを一時的に退避
sudo git stash
- チェックアウト
sudo git checkout 【バージョン】
上述した通り、v7.0.11
を入力しました。
- yarn
sudo yarn
v6.xよりも時間がかかります。
- アプリのビルド
sudo yarn app:build
こちらも時間がかかります。
アップグレード後のgrowiサービス開始
- 再開前のステータス確認
systemctl status growi.service
inactive (dead)を確認します
- サービス再起動
sudo systemctl start growi.service
- 再開後のステータス確認
systemctl status growi.service
サービススクリプトを[growi]にしている場合
active (running)を確認します
nginxのバーチャルファイルを編集
v7.xは、WebSocketによる通信設定を正常に行わないと既存ドキュメントの編集ができません。(編集画面が空白になります)
そのため、nginxの設定を見直します。
- 既存のgrowiバーチャルファイルを退避
sudo mv /etc/nginx/sites-available/growi.conf /path/to/backup/directory/growi.conf.$(date +%Y%m%d)
大幅に変更する必要があるため、cpではなくmvします。
- 新規の設定ファイルを作成
【】内を自分の環境に合わせます。
cat <<- __EOF__ | sudo tee -a /etc/nginx/sites-available/growi.conf
upstream growi {
server 【growiのIPアドレス】:3000;
}
server {
listen 80;
server_name 【サーバ名】;
server_tokens off;
return 301 https://$host$request_uri;
access_log 【growiのアクセスログのフルパス】;
error_log 【growiのエラーログのフルパス】 warn;
}
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 443 ssl;
server_name 【サーバ名】;
server_tokens off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security 'max-age=63072000';
ssl_certificate 【サーバ証明書のフルパス】;
ssl_certificate_key 【サーバ秘密鍵のフルパス】;
access_log 【growiのSSLアクセスログのフルパス】;
error_log 【growiのSSLエラーログのフルパス】 warn;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://growi;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 900s;
}
}
__EOF__
こちらの設定ファイルはGrowiの公式ドキュメントに沿ったものです。
- nginxの構文チェック
sudo nginx -t
-
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
-
nginx: configuration file /etc/nginx/nginx.conf test is successful
を確認します。
- nginx再起動
sudo systemctl restart nginx.service
バージョンアップ確認
- 設定したgrowiのサイトにアクセスします。
- チェックアウトしたバージョンであることを確認します。
- 既存のページにアクセスし、編集できること(編集画面が白くならないこと)を確認します。
Growi v7.1.xのアップグレード手順
概要
V7.1.xからパッケージ管理がyarnではなくmnpmに変更されました。
その手順に合わせたメモです。
前提
- 既にgrowiをインストールしていること。
- systemdによってサービス化されていること。
- 最新版や安定版がリリースされていることを以下のサイトで確認していること。
※備考
v7.0.x以前はyarnを用います。
手順
さっくりとした手順
- growiのサービスを停止します。
- gitコマンドで最新版を引っ張ります。
- アップグレードを行います。
- growiのサービスを再開します。
- アップグレードされたことを確認します。
growiサービスを停止します
- growiのステータス確認(停止前)
systemctl status growi.service
※ サービススクリプト名は自分の環境に合わせます。
※ active(running)を確認します
- growiのサービス停止
sudo systemctl stop growi.service
- growiのステータス確認(停止後)
systemctl status growi.service
inactive (dead)を確認します
growiディレクトリに移動します
cd /opt/growi
自分の環境に合わせます。
リリースタグを確認します。
- リリースタグ取得
sudo git fetch --tags
- リリースタグ確認
sudo git tag -l
スペースで確認していき、上記リリースサイトと同じバージョンがあることを確認します。
チェックアウトとインストールを行います。
- 変更を一時的に退避
sudo git stash
- チェックアウト
sudo git checkout 【バージョン】
- pnpm install
sudo pnpm install
- ビルド
sudo npm run app:build
growiサービスを起動します。
- 再開前のステータス確認
systemctl status growi.service
inactive (dead)を確認します
- サービス再起動
sudo systemctl start growi.service
※ 完全に起動していないと、アクセスしても503エラーが発生します。
- 再開後のステータス確認
systemctl status growi.service
サービススクリプトを[growi]にしている場合
active (running)を確認します
バージョンアップを確認します。
- ブラウザから設定したgrowiのドメイン/IPにアクセスします。
- 画面下部にあるバージョンがチェックアウトしたバージョンであることを確認します。