升级 Weblate¶
Docker 映像升级¶
官方 Docker 映像(请参见 使用 Docker 安装)已经将所有升级步骤集成了。除了拉取最新的版本外没有手动步骤。
一般的升级指示¶
在升级前,请检查当前的 软件要求,因为他们可能被更改。一旦所有的要求被安装或升级,请调整你的 settings.py
,来匹配配置中的更改(正确的值请咨询 settings_example.py
)。
在升级前总是查看 与特定版本相关的指示。在你跳过一些版本的情况下,请遵从在升级中您跳过的所有版本的指示。有时最好升级到一些中间版本,来确保平滑迁移。跨过多个发行版本的升级应该可以工作,但还没有像单一版本升级一样测试过。
注解
推荐在升级前执行全数据库备份,使你可以在升级失败的情况下回滚数据库,请参见 备份和移动 Weblate。
停止 WSGI 和 Celery 进程。升级可能执行数据库的不兼容更改,因此在升级中避免旧的进程运行总是安全的。
升级 Weblate 代码。
对于 pip 安装,可以通过后面的来实现:
pip install -U Weblate
通过 Git 核实,你需要取回新的源代码并升级你的安装:
cd weblate-src git pull # Update Weblate inside your virtualenv . ~/weblate-env/bin/pip install -e . # Install dependencies directly when not using virtualenv pip install --upgrade -r requirements.txt
升级配置文件,所需的步骤请参考
settings_example.py
或 与特定版本相关的指示。升级数据库架构:
weblate migrate --noinput
收集升级的静态文件(请参见 运行服务器 和 为静态文件提供服务):
weblate collectstatic --noinput
压缩 JavaScript 和 CSS 文件(可选步骤,请参见 压缩客户资产 ):
weblate compress
如果你运行来自 Git 的版本,每次升级时还应该重新生成 locale 文件。可以通过调用后面的来进行:
weblate compilemessages
验证您的设置合理(还请参见 生产设置):
weblate check --deploy
重新启动 celery worker (请参见 使用 Celery 的后台任务)。
与特定版本相关的指示¶
从 2.x 升级¶
如果从 2.x 发布版本升级,首先总是升级到 3.0.1,然后继续在 3.x 系列中升级。跳过这步的升级不被支持,并且会中断。
从 3.x 升级¶
如果从 3.x 发布版本升级,首先总是升级到 4.0.4 或 4.1.1,然后继续在 4.x 系列中升级。跳过这步的升级不被支持,并且会中断。
从 4.0 升级到 4.1¶
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
在
settings_example.py
中有几项更改,最显著的是中间件的更改,请由此调整你的设置。有几个新的文件格式,在修改
WEBLATE_FORMATS
的情况下,你会想要将他们包括进来。有几个新的质量检查,在修改
CHECK_LIST
的情况下,你会想要将他们包括进来。在
DEFAULT_THROTTLE_CLASSES
设置中有几项更改,来允许在 API 中报告速率限制。有几个新的且更新的要求。
在
INSTALLED_APPS
中有一些更改。DeepL 机器翻译现在默认为 v2 API,在你当前的 DeepL 订购不支持的情况下,会需要调整
MT_DEEPL_API_VERSION
。
参见
从 4.1 升级到 4.2¶
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
从 3.x 发布版本升级不再支持,请首先升级到 4.0 或 4.1。
有几个新的且更新的要求。
在
settings_example.py
中有几项更改,最显著的是新中间件和更改的应用订购。基于 JSON 格式的密钥是不再包括前导的点。在数据库迁移过程中调整字符串,但在你依赖于导出或 API 中的密钥时,外部组件会需要调整。
Celery 配置更改,不再使用
memory
队列。请调整你的启动脚本和CELERY_TASK_ROUTES
设置。现在在设置中配置 Weblate 域,请参见
SITE_DOMAIN`(或 :envvar:`WEBLATE_SITE_DOMAIN
)。在运行 Weblate 前你将不得不配置它。用户数据库上的用户名和电子邮件栏目现在应该不因为大小写敏感而不同。它之前错误地没有被 PostgreSQL 强制。
参见
从 4.2 升级到 4.3¶
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
在质量检查中有一些更改,在你调整
CHECK_LIST
的情况下会想将他们包括进来。源语言属性从项目移动到 API 中暴露的组件。在使用时你会需要更新 Weblate 客户端。
根据翻译的字符串数量,数据库迁移到 4.3 会花费很长时间(期望每 10 万个字符串的迁移时间大约为 1 小时)。
在
INSTALLED_APPS
中有一些更改。有个新的设置
SESSION_COOKIE_AGE_AUTHENTICATED
,补充了SESSION_COOKIE_AGE
。In case you were using hub or lab to integrate with GitHub or GitLab, you will need to reconfigure this, see
GITHUB_CREDENTIALS
andGITLAB_CREDENTIALS
.4.3.1 版本变更: Celery 配置更改为添加``memory`` 队列。请调整你的启动脚本和
CELERY_TASK_ROUTES
设置。
参见
从 Python 2 升级到 Python 3¶
Weblate 不再支持早于 3.5 版本的 Python。在仍然运行在较早版本的情况下,请首先在现有版本上执行到 Python 3 的迁移,并在后面进行升级。请参见 Upgrading from Python 2 to Python 3 in the Weblate 3.11.1 documentation。
从其它数据库迁移到 PostgreSQL¶
如果在 PostgreSQL 以外的数据库上运行 Weblate,你应该迁移到 PostgreSQL,因为它是 4.0 发布版本唯一支持的数据库后端。后面的步骤将引导你在数据库之间迁移数据。请记住迁移前要停止 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 -O weblate weblate
使用 Django JSON 转储来迁移¶
最简单的迁移方法是使用 Django JSON 转储。这对于较小的安装工作得很好。在更大的网站,你会想要使用 pgloader 代替,请参见 使用 pgloader 来迁移到 PostgreSQL。
添加 PostgreSQL 作为到 :file:`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': '',
}
}
运行迁移,并将任何插入到表格中的数据 drop 掉:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
将遗留数据库进行转储,并导入 PostgreSQL
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
调整
DATABASES
而只使用 PostgreSQL 数据库作为默认,将遗留连接删除掉。
现在 Weblate 应该准备好从 PostgreSQL 数据库运行了。
使用 pgloader 来迁移到 PostgreSQL¶
pgloader 是通用迁移工具,将数据迁移到 PostgreSQL。你可以使用它来迁移 Weblate 数据库。
调整 settings.py 文件而将 PostgreSQL 用作数据库。
迁移 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
将他们导入。