概要
長らくUbuntu 20.04で動かしているgrowi。こちらもv7.0.xにアップグレードできることを確認しました。
Apacheと同様、nginx環境でも、WebSocketを適切に設定する必要がありました。
環境
さっくりとした手順
- nodeのアップグレードを行います。
- growiサービスを停止します。
- growiのバージョンアップを行います。
- growiサービスを再開します。
- nginxのリバースプロキシ設定を書き換え、nginxサービスの再起動を行います。
- バージョンアップを行います。
nodeのアップグレード
node -v
OSが少々古いため、Ubuntu 20.04のnodeはv18.16.0
。Growi7系の対象外だったので、nodeを最新安定版に変えるところからスタートします。
sudo npm install -g n
sudo n --stable
node -v
20.15.0
を確認します。
growiのアップグレード前のサービス停止
systemctl status growi.service
※ サービススクリプト名は自分の環境に合わせます。
※ active(running)を確認します
sudo systemctl stop growi.service
systemctl status growi.service
inactive (dead)を確認します
growiのアップグレード
cd /opt/growi
自分の環境に合わせます。
sudo aptitude install git-lfs
git-lfs
を入れないとclone/build時に画像が表示されません。
sudo git lfs pull
sudo git fetch --tags
sudo git tag -l
2024/06/30現在のv7系最新版、v7.0.11があることを確認しました。
sudo git stash
sudo git checkout 【バージョン】
上述した通り、v7.0.11
を入力しました。
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の設定を見直します。
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 /var/log/nginx/growi/ssl_access.log;
error_log /var/log/nginx/growi/ssl_error.log 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の公式ドキュメントに沿ったものです。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
を確認します。
sudo systemctl restart nginx.service
バージョンアップ確認
- 設定したgrowiのサイトにアクセスします。
- チェックアウトしたバージョンであることを確認します。
- 既存のページにアクセスし、編集できること(編集画面が白くならないこと)を確認します。