Ubuntu 20.04 / nginx環境でgrowiをv6.x→v7.0.xにアップグレード。(nginxリバースプロキシのWebSocket設定)

概要

長らくUbuntu 20.04で動かしているgrowi。こちらもv7.0.xにアップグレードできることを確認しました。

Apacheと同様、nginx環境でも、WebSocketを適切に設定する必要がありました。

環境

さっくりとした手順

  1. nodeのアップグレードを行います。
  2. growiサービスを停止します。
  3. growiのバージョンアップを行います。
  4. growiサービスを再開します。
  5. nginxのリバースプロキシ設定を書き換え、nginxサービスの再起動を行います。
  6. バージョンアップを行います。

nodeのアップグレード

node -v

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 【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の公式ドキュメントに沿ったものです。

sudo nginx -t

を確認します。

sudo systemctl restart nginx.service

バージョンアップ確認

  1. 設定したgrowiのサイトにアクセスします。
  2. チェックアウトしたバージョンであることを確認します。
  3. 既存のページにアクセスし、編集できること(編集画面が白くならないこと)を確認します。

Revision #7
Created 30 June 2024 09:38:52 by manualmaton
Updated 30 June 2024 10:03:55 by manualmaton