【干货】新版Anki(v2.1)的同步服务器搭建、迁移

首先删除旧的 AnkiSyncServer(ASS,滑稽)

[root@host anki]# pip uninstall ankiserver

我们要安装的是ankisyncd,这是基于python3的版本。比起ASS BUG修了不少。

把仓库复制下来:

[root@host anki]# git clone https://github.com/tsudoko/anki-sync-server.git

然后安装依赖(注:你可能需要用yum安装python36和python36-pip)

[root@host anki-sync-server]# git submodule update --init
[root@host anki-sync-server]# cd anki-bundled/
[root@host anki-bundled]# pip3 install -r requirements.txt

如果你不幸像我遇到 fatal error: Python.h: No such file or directory,执行:

[root@host anki-bundled]# yum install python36-devel

如果遇到:fatal error: portaudio.h: No such file or directory,执行:

[root@host anki-bundled]# yum install portaudio-devel

然后重新执行

[root@host anki-bundled]# pip3 install -r requirements.txt 

接下来,执行

[root@host anki-bundled]# pip3 install webob

然后按需修改配置文件:

[root@host anki-bundled]# cd ..
[root@host anki-sync-server]# vi ankisyncd.conf
[sync_app]
# change to 127.0.0.1 if you don't want the server to be accessible from the internet
host = 0.0.0.0
port = 27701
data_root = ../collections #这里是我的版本迁移设置,你可以不改。
base_url = /sync/
base_media_url = /msync/
auth_db_path = ./auth.db
# optional, for session persistence between restarts
session_db_path = ../session.db #这里是我的版本迁移设置,你可以不改。

没问题的话就运行:

[root@host anki-sync-server]# python3 -m ankisyncd
(在这之前,你可能需要通过python3 ./ankisyncctl.py adduser <用户名> 创建用户)

如果你需要迁移,别忘了这样:

[root@host anki]# rm auth.db session.db production.ini

最后,在 Addons21 文件夹写入插件,从而接管Anki的同步服务器设置:

`Anki2\addons21\custom-sync-server\_init_.py`

import anki.sync, anki.hooks, aqt
addr = 'http://45.78.51.108:27701/'
anki.sync.SYNC_BASE = "%s" + addr

def resetHostNum():
    aqt.mw.pm.profile['hostNum'] = None
    
anki.hooks.addHook("profileLoaded", resetHostNum)

后台运行

安装screenyum install screen

新建一个screen会话:screen -S anki

执行 python3 -m ankisyncd

Ctrl+A,D 退出会话(该会话仍会在后台运行)

若想恢复会话:screen -r #恢复上一次离线的会话

screen -x [会话id]而会话id可通过screen -ls查看

编辑于 2019-05-29

文章被以下专栏收录