安装 Anki 的同步服务器
创建一个 Python 虚拟环境并安装 Anki 的同步服务器。让我们逐步解释每一行命令的作用:
python3 -m venv ~/syncserver
这条命令使用 Python 3 的venv
模块在~/syncserver
目录中创建一个虚拟环境。python3
: 使用 Python 3 版本。-m venv
: 通过模块venv
创建一个虚拟环境。~/syncserver
: 虚拟环境将会被创建在用户主目录下的syncserver
目录中。
目的:虚拟环境用于隔离项目的依赖,不影响系统的全局 Python 环境。
~/syncserver/bin/pip install anki
这条命令在刚刚创建的虚拟环境中,使用该环境内的pip
安装anki
模块。~/syncserver/bin/pip
: 这是虚拟环境中的pip
程序,用于在虚拟环境内安装依赖。install anki
: 安装anki
包。
目的:安装 Anki 的同步服务器模块。
SYNC_USER1=user:pass ~/syncserver/bin/python -m anki.syncserver
这条命令设置一个环境变量SYNC_USER1
,然后启动 Anki 的同步服务器。SYNC_USER1=user:pass
: 设置环境变量SYNC_USER1
,其中user
和pass
是同步服务器的用户名和密码。~/syncserver/bin/python
: 使用虚拟环境中的 Python 解释器。-m anki.syncserver
: 使用 Python 的-m
参数来运行anki.syncserver
模块,启动同步服务器。
目的:启动 Anki 同步服务器,并用
user:pass
作为认证凭据。
总结:这些命令的目的是创建一个隔离的 Python 虚拟环境,安装 Anki 同步服务器模块,并启动同步服务器。
使用 pm2
来管理
你指定的项目,可以按照以下步骤配置:
1. 使用 pm2
启动命令
根据你给出的完整启动命令,结合虚拟环境的路径 /root/some-py/Ankiserver
,你可以用 pm2
启动这个项目,并指定虚拟环境中的 Python 解释器。命令如下:
pm2 start /root/some-py/Ankiserver/venv/bin/python --name anki_syncserver -- -m anki.syncserver
2. 添加环境变量
由于你需要传递环境变量 SYNC_USER1
、SYNC_PORT
和 SYNC_HOST
,可以在启动命令中使用 --env
参数来传递这些环境变量:注意我更改了端口和支持IPV6
pm2 start /root/some-py/Ankiserver/venv/bin/python --name anki_syncserver -- -m anki.syncserver \
--env SYNC_USER1=user:password SYNC_PORT=8019 SYNC_HOST='::'
3. 使用 ecosystem.config.js
(推荐)
为了长期管理你的配置,建议使用 pm2
的配置文件 ecosystem.config.js
,这样可以更方便地管理环境变量和其他配置。步骤如下:
(1) 创建 ecosystem.config.js
文件:
cd /root/some-py/Ankiserver
touch ecosystem.config.js
(2) 编辑 ecosystem.config.js
文件,内容如下:
module.exports = {
apps: [
{
name: 'anki_syncserver',
script: '/root/some-py/Ankiserver/venv/bin/python',
args: '-m anki.syncserver',
env: {
SYNC_USER1: 'name:password',
SYNC_PORT: '8019',
SYNC_HOST: '::'
}
}
]
};
(3) 使用 pm2
启动项目:
pm2 start ecosystem.config.js
使用 Cargo
从 Anki 2.1.66 版本开始,你可以使用下面的命令构建 Rust 实现的独立同步服务器。请确保你安装了 Rustup。
cargo install --git https://github.com/ankitects/anki.git --tag 2.1.66 anki-sync-server
- 将
2.1.66
替换为最新的 Anki 版本。如果需要更新,也是更换版本号后,直接执行这条命令!
需要安装 Protobuf (protoc)。
构建完成后,你可以使用以下命令运行它:
SYNC_USER1=user:pass anki-sync-server