Weblate のアップグレード#
Docker イメージのアップグレード#
公式の Docker イメージ(参照: Docker を使用したインストール)には、Weblate をアップグレードする手順がすべて組み込まれています。通常、最新バージョンを入手するだけです。他に必要な操作はありません。
一般的なアップグレード方法#
アップグレードをする前に、現在の ソフトウェア要件 に変更があるかもしれないので確認してください。すべての要件がインストールまたは更新されたあと、設定の変更に合わせて settings.py
を設定してください(正しい値については settings_example.py
を確認)。
アップグレードする前に、必ず バージョン固有の手順 を確認してください。バージョンをスキップする場合は、アップグレードでスキップしたすべてのバージョンの指示に従ってください。スムーズな移行を確実にするために、中間バージョンにアップグレードする方が良い場合があります。複数のリリース間でのアップグレードは機能するはずですが、単一バージョンのアップグレードほど十分なテストされていません。
注釈
アップグレードが失敗した場合、データベースをロールバックできるように、アップグレードの前に完全なデータベース バックアップを実行してください( 参照: Weblate のバックアップと移動)。
wsgi および Celery プロセスを停止します。アップグレードは、データベースで互換性のない変更を実行することがあるため、アップグレード中に古いプロセスが実行されないようにする方が常に安全です。
Weblate のコードをアップグレードする。
pip によるインストール方法:
pip install -U "Weblate[all]==version"
または、最新のリリース バージョンを入手するだけの場合:
pip install -U "Weblate[all]"
すべてのオプションの依存関係をインストールせずに、インストールする方法:
pip install -U Weblate
Gitチェックアウトでは、新しいソースコードを取得して、インストールを更新することが必要です。取得と更新方法:
cd weblate-src git pull # Update Weblate inside your virtualenv . ~/weblate-env/bin/pip install -e '.[all]' # Install dependencies directly when not using virtualenv pip install --upgrade -r requirements.txt # Install optional dependencies directly when not using virtualenv pip install --upgrade -r requirements-optional.txt
新しい Weblate のリリースには、新しい オプションの依存関係 が含まれていることがあります。欲しい機能が含まれたかどうか確認する。
設定ファイルをアップグレードするための、必要な手順については、
settings_example.py
または バージョン固有の手順 を確認してください。データベース構造をアップグレードする:
weblate migrate --noinput
更新された静的ファイルを収集する(参照: 実行サーバー および 静的ファイルの提供):
weblate collectstatic --noinput --clear
JavaScript ファイルと CSS ファイルを圧縮する(省略可能、参照: クライアント アセットの圧縮):
weblate compress
Git のバージョンを実行している場合は、アップグレードするたびに言語ファイルを再生成してください。再生成させるコマンド:
weblate compilemessages
設定が正常であるかを確認する(参照: 運用環境の設定):
weblate check --deploy
Celery ワーカーを再起動する(参照: Celery を使用するバックグラウンド タスク)。
バージョン固有の手順#
バージョン 5.0 で変更: バージョン固有の指示は、リリースノートに含まれるようになりました。参照: Weblate 5.1。
古いメジャー バージョンからのアップグレード#
メジャーバージョン間のアップグレードには対応していません。初めのメジャーリリースの最新のパッチレベルにアップグレードしてください。この手順を省いたアップグレードには対応していませんので、中断します。
If you are upgrading from the 2.x release, always first upgrade to 3.0.1.
If you are upgrading from the 3.x release, always first upgrade to 4.0.4.
If you are upgrading from the 4.x release, always first upgrade to 5.0.2.
他のデータベースから PostgreSQL に移行#
PostgreSQL 以外のデータベースで Weblate を実行している場合は、Weblate が最適に動作できるように PostgreSQL への移行を検討してください。次の手順に従って、データベース間でデータを移行します 。移行前に Web サーバと Celery サーバの両方を停止させてください。停止していない場合は、データの不整合が発生することがあります。
PostgreSQL でデータベースの作成#
通常は、Weblate を専用のデータベースと、専用のユーザーアカウントで実行してください。設定例:
# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"
# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate
# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate
Django JSON ダンプを使用する移行#
最も簡単な移行の方法は、Django JSON ダンプを使用することです。これは、小規模なインストールに適しています。より大きなサイトでは、代わりに pgloader が良いかもしれません。
追加のデータベース接続として PostgreSQL を、
settings.py
に追加する:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
# Additional database options
"OPTIONS": {
# In case of using an older MySQL server, which has MyISAM as a default storage
# 'init_command': 'SET storage_engine=INNODB',
# Uncomment for MySQL older than 5.7:
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
# If your server supports it, see the Unicode issues above
"charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
"connect_timeout": 28800,
},
},
"postgresql": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
},
}
移行を実行し、テーブルに挿入されたデータを削除する:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
Dump legacy database and import to PostgreSQL:
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
デフォルトで、PostgreSQL データベースのみを使用するように
DATABASES
を修正し、古い接続を削除する。
これで、Weblate を PostgreSQL データベースで実行する準備が整いました。
pgloader を使用した PostgreSQL への移行#
pgloader は、PostgreSQL にデータを移行するための一般的な移行ツールです。この機能を使用して、Weblate データベースを移行します。
PostgreSQL をデータベースとして使用するように
settings.py
を調整する。PostgreSQL データベース内のスキーマを移行する:
weblate migrate weblate sqlflush | weblate dbshell
pgloader を実行してデータを転送します。以下のスクリプトを使用してデータベースを移行する(できれば、pgloader の機能を理解し、設定に合わせて修正してください):
LOAD DATABASE FROM mysql://weblate:password@localhost/weblate INTO postgresql://weblate:password@localhost/weblate WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only ALTER SCHEMA 'weblate' RENAME TO 'public' ;
Pootle から移行#
Weblate は、そもそも Pootle を置き換えるために開発されたので、Pootle からのユーザー アカウントの移行にも対応しています。Pootle からユーザーをダンプして、importusers
を使用してインポートします。