-
Notifications
You must be signed in to change notification settings - Fork 24
Update to 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