Skip to content
Kosuke Tanabe edited this page Sep 23, 2024 · 54 revisions

1.4系へのアップデート

警告: 必ずアプリケーションとデータベースのバックアップを取得してください!

注意: Next-L Enju Leaf 1.4へのアップデートには、1.3.6以降にアップデートしている必要があります
注意: Next-L Enju Leaf 1.4では、PostgreSQLのみをサポートします。SQLite・MySQLを用いてNext-L Enjuをインストールしている場合は、以下の手順でデータベースをPostgreSQLに移行する必要があります。
https://github.com/next-l/enju_leaf/wiki/MigrationToPostgreSQL

Enjuとnginx(Webサーバ)を停止し、アップデート前のEnjuのディレクトリをリネームします。

sudo systemctl stop enju_leaf.target
sudo systemctl stop nginx
mv enju old_enju

Docker Engineをインストールします。以下はUbuntuの手順です。その他のOSについては、DockerのWebサイトを参照してください。

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

新しいEnjuのソースコードをダウンロードします。

$ git clone -b 1.4 https://github.com/next-l/enju_leaf.git
$ cd enju_leaf

アップロードしたファイルをコピーします。

cp -a ../old_enju/private .

その他、カスタマイズしているファイルや追加のマイグレーションファイルがあればコピーします。

cp -a ../old_enju/app/views/* app/views/
cp -a ../old_enju/app/models/manifestation.rb app/models/
cp ../old_enju/db/migrate/2021xxxx_add_custom_column_to_manifestaiton.rb db/migrate/

モデルをカスタマイズしている場合、継承元のクラスをActiveRecord::BaseからApplicationRecordに修正してください。

# 変更前
class Manifestation < ActiveRecord::Base
# 変更後
class Manifestation < ApplicationRecord

設定ファイルをコピーします。

cp .env.template .env

現在のユーザIDの値を確認します。

id

設定ファイル内のUIDを変更します。UIDは先ほど取得したユーザIDの値になります。

vim .env

同じく.env内のPOSTGRESQL_PASSWORDの値に、PostgreSQLの初期パスワードを自分で決めて設定します。

# new_password の部分に自分で決めたパスワードを設定する
POSTGRES_PASSWORD=new_password

Enjuと周辺ソフトウェアのコンテナをダウンロードします。

docker compose pull
docker compose build

環境変数SECRET_KEY_BASEを追加します。

echo SECRET_KEY_BASE=`docker compose run --rm web bin/rake secret` >> .env

Enjuを起動します。

docker compose up -d

PostgreSQLのバックアップを、新しいデータベースに復元します。-Uオプションは環境変数POSTGRES_USERの内容を指定します(.env内の記述を参照)。 パスワードをたずねられたら、環境変数POSTGRES_PASSWORDの内容を入力します(.env内の記述を参照)。

cp  /path/to/backup/enju_leaf_backup.sql .
docker compose run --rm web bin/rake db:create
docker compose run --rm web psql -U enju -h postgres enju_leaf_production -f enju_leaf_backup.sql

マイグレーションファイルのバージョン情報を更新し、不足しているマイグレーションを実行します。schema_migrationsテーブルが更新されます。

docker compose run --rm web bin/rake enju_leaf:backfill_migration_versions
docker compose run --rm web bin/rake db:migrate

enju_bookmarkをインストールしている場合、以下のコマンドを実行します。

docker compose run --rm web bin/rails runner 'Bookmark.find_each do |b| b.manifestation&.update(carrier_type: CarrierType.find_by(name: 'online_resource')) if b.manifesation && b.manifesation&.carrier_type.nil? end'

SolrのインデックスとJavaScript・CSSを再作成します。

docker compose run --rm web bin/rake sunspot:reindex
docker compose run --rm web yarn install
docker compose run --rm web bin/rake assets:precompile

Enjuを停止して再起動します。

docker compose down
docker compose up -d

http://localhost:8080 を開き、アクセスできることを確認します。

アクセスできることが確認できたら、古いEnjuの自動起動の設定を無効化します。

sudo systemctl disable enju_leaf.target
sudo systemctl disable nginx

アクセスできない場合、以下のコマンドを実行して、出力されているエラーをIssueでお知らせください。

docker compose ps
docker compose logs -f web
Clone this wiki locally