Ubuntu24.04環境でBookStackをアップグレードしたときの手順メモです。

環境

  • BookStack v24.10
    • 25.02にアップグレード
  • Ubuntu 24.04
  • Apache 2.4系
  • PHP 8.3
  • MySQL 8系

さっくりとした手順

https://manualmaton.com/2023/12/15

以前に実施した、こちらの記事の通りに行いました。

  1. DBのバックアップを行います。
  • 推奨:システム全体のバックアップ
  1. git pullとアップグレードを行います。
  2. キャッシュをクリアします。
  3. Webサービス再起動を行います。
  4. アップグレード確認と動作確認を行います。

手順

システム全体のバックアップ(推奨)

万一に備え、システム全体のバックアップを取ることを推奨します。AWSや仮想サーバ等の場合は、インスタンスをまるごとバックアップしておくと良いでしょう。

mysqldumpによるDBバックアップ

  • 保存ディレクトリに移動
cd /hoge

任意のバックアップディレクトリを指定します。

mysqldump -h localhost -u bookstack -p --no-tablespaces --single-transaction bookstack > bookstack_backup.$(date +%Y%m%d).sql

DB名やDBユーザは自分の環境に合わせます。

  • バックアップ確認
less bookstack_backup.$(date +%Y%m%d).sql

平文で読めることを確認します。

git pullとアップグレード

  • BookStackのディレクトリに移動
cd /var/lib/BookStack/ && pwd

インストールされているディレクトリを指定します

  • git pull
sudo -u www-data git pull origin release

実行例(一部抜粋)

remote: Enumerating objects: 6028, done.
remote: Counting objects: 100% (1295/1295), done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 6028 (delta 1263), reused 1248 (delta 1248), pack-reused 4733 (from 3)
Receiving objects: 100% (6028/6028), 5.75 MiB | 18.75 MiB/s, done.
Resolving deltas: 100% (3708/3708), completed with 405 local objects.
From https://github.com/BookStackApp/BookStack
 * branch                release    -> FETCH_HEAD
   b0dda6e6a..268e35343  release    -> origin/release
Updating b0dda6e6a..268e35343
Fast-forward
 .env.example.complete                                                                     |    5 +
 .github/translators.txt                                                                   |   40 +-
 .github/workflows/analyse-php.yml                                                         |    4 +-
 .github/workflows/lint-js.yml                                                             |    4 +-
 .github/workflows/lint-php.yml                                                            |    6 +-
 .github/workflows/test-js.yml                                                             |   29 +
 .github/workflows/test-migrations.yml                                                     |    6 +-
 .github/workflows/test-php.yml                                                            |    6 +-
 .gitignore                                                                                |    1 +
 LICENSE                                                                                   |    2 +-
 app/Access/ExternalBaseUserProvider.php                                                   |   49 +-
 app/Access/Ldap.php                                                                       |    8 +-

composer install

sudo -u www-data composer install --no-dev
  • 実行例(一部抜粋)
> @php -r "!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');"
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Package operations: 5 installs, 70 updates, 8 removals
  - Downloading bacon/bacon-qr-code (v3.0.1)
  - Downloading dompdf/php-svg-lib (1.0.0)
  - Downloading dompdf/php-font-lib (1.0.1)
  - Downloading dompdf/dompdf (v3.1.0)
  - Downloading symfony/deprecation-contracts (v3.5.1)
  - Downloading symfony/http-foundation (v7.2.3)
  - Downloading guzzlehttp/uri-template (v1.0.4)
  - Downloading intervention/gif (4.2.1)
  - Downloading intervention/image (3.11.1)
  - Downloading symfony/process (v7.2.0)
  - Downloading knplabs/knp-snappy (v1.5.1)
  - Downloading symfony/string (v7.2.0)
  - Downloading symfony/service-contracts (v3.5.1)
  - Downloading symfony/console (v7.2.1)
  - Downloading laravel/prompts (v0.3.5)
  - Downloading laravel/serializable-closure (v2.0.3)
  - Downloading paragonie/constant_time_encoding (v3.0.0)
  - Downloading phpseclib/phpseclib (3.0.43)
  - Downloading league/oauth1-client (v1.11.0)
  - Downloading voku/portable-ascii (2.0.3)
  - Downloading symfony/css-selector (v7.2.0)
  - Downloading tijsverkoyen/css-to-inline-styles (v2.3.0)
  - Downloading symfony/var-dumper (v7.2.3)
  - Downloading symfony/uid (v7.2.0)
  - Downloading symfony/routing (v7.2.3)
  - Downloading symfony/mime (v7.2.3)
  - Downloading symfony/event-dispatcher-contracts (v3.5.1)
  - Downloading symfony/event-dispatcher (v7.2.0)
  • DBマイグレート
sudo -u www-data php artisan migrate

※この時、Are you sure you want to run this command?というプロンプトには「Yes」が見えるようにカーソルを移動してEnterします。そのままEnterするとキャンセルされ、全体のアップグレードが行われません。

アップグレード後のキャッシュクリアを行います。

  • キャッシュクリア
sudo -u www-data php artisan cache:clear
sudo -u www-data php artisan config:clear
sudo -u www-data php artisan view:clear

上記、それぞれ、successfully.で終わることを確認します。

Webサービス(apache)再起動

  • apache再起動前確認
systemctl status apache2.service

active(running)を確認します

  • apache再開
sudo systemctl restart apache2.service && echo $?

0を確認します。

  • apache再起動後確認
systemctl status apache2.service

active(runnning)を確認します

バージョンアップ確認

  1. BookStackがインストールされているURLにアクセスします。
  2. 管理者権限でログインします。
  3. 設定に進みシステムバージョンが作業時の最新版になっていることを確認します。
  4. ページの作成や編集が正常に行えることを確認します。

バージョンアップ後の作業(dumpファイル削除)

※SQLファイルが平文で読めるのは非常に危険な状態なので、作業を確認次第、早急に実施します※

  • 保存ディレクトリに移動
cd /hoge

DBバックアップを行ったディレクトリに移動します。

  • ファイル削除
shred -u bookstack_backup.$(date +%Y%m%d).sql
  • ファイル削除確認
ls -l bookstack_backup.$(date +%Y%m%d).sql

ファイルがないことを確認します。