Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[Linux]搭建Anki同步服务器(针对Anki2.1)

[Linux]搭建Anki同步服务器(针对Anki2.1)

作者头像
祥知道
发布于 2020-03-10 08:51:40
发布于 2020-03-10 08:51:40
2K10
代码可运行
举报
文章被收录于专栏:祥的专栏祥的专栏
运行总次数:0
代码可运行

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596472


文章目录

代码语言:txt
AI代码解释
复制
- @[toc]0 环境1 首先安装

搭建Anki同步服务器(针对Anki2.1)

针对Anki2.0的版本:https://blog.csdn.net/humanking7/article/details/89299138

0 环境

  • Ubuntu 16.04
  • PC: anki 2.0.52anki 2.1.12
  • Android: ankiDroid 2.8.4`

1 首先安装anki2.1

先去下载官网下载安装包https://apps.ankiweb.net/#download

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ tar xjf anki-2.1.14-amd64.tar.bz2
$ cd anki-2.1.14-linux-amd64
$ sudo make install

# 如果要卸载
$ sudo make uninstall

2. 配置安装

2.1 配置虚拟环境virtualenv

先安装pipvirtualenv

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装 pip
$ apt install python3-pip

# 更新pip
$ pip3 install virtualenv

# 安装 virtualenv
$ pip3 install virtualenv

在准备安装服务器的目录下创建 Python 虚拟环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd [你想要安装服务器的目录]
$ virtualenv ankienv

注意将[你想要安装服务器的目录] 替换为你实际的目录的路径,路径不需要加方括号。

然后进入新创建的虚拟环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ . ankienv/bin/activate

注意以上命令英文的句号后面有一个空格。

如果想要退出环境,输入命令deactivate

输入完成后,命令行前会多出 (ankienv) 表示当前的 Python 环境,之后与 Pythonpip 有关的所有操作都要在这个环境中进行。

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@x60s:~/code_soft/ankiSyncService# . ankienv/bin/activate
(ankienv) root@x60s:~/code_soft/ankiSyncService# 


# 该目录下多了一个环境相关的文件
(ankienv) root@x60s:~/code_soft/ankiSyncService# ls
ankienv
(ankienv) root@x60s:~/code_soft/ankiSyncService# ls ankienv/
bin  include  lib

2.2 安装 ankisyncd

使用 gitclone 服务器代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git clone https://github.com/tsudoko/anki-sync-server.git

进入代码目录并安装 git 子模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd anki-sync-server
$ git submodule update --init

我在执行这一步的时候报错 pyaudio 安装失败,解决方法是直接把 requirements.txt 文件中 pyaudio 删掉,再重新执行上面的 pip 命令。根据官方文档的说明这个模块不影响服务器同步功能的使用。

继续安装 Python 模块,安装完后进入 anki-sync-server 目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pip3 install webob
$ cd ..

最后,还可以修改服务器配置文件:anki-sync-server 目录下的 ankisyncd.conf。对我来说无需更改任何配置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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

# optional, for overriding the default managers and wrappers
# # must inherit from ankisyncd.persistence.PersistenceManger, e.g,
# persistence_manager = great_stuff.postgres.PostgresPersistenceManager
# # must inherit from ankisyncd.session.SimpleSessionManager, e.g,
# session_manager = great_stuff.postgres.PostgresSessionManager
# # must inherit from ankisyncd.user.SimpleUserManager, e.g,
# user_manager = great_stuff.postgres.PostgresUserManager
# # must inherit from ankisyncd.collections.CollectionWrapper, e.g,
# collection_wrapper = great_stuff.postgres.PostgresCollectionWrapper

配置文件里包括 host 对应服务器监听地址,默认 0.0.0.0 表示接收所有 IP 的请求,如果改成 127.0.0.1 则无法接收外网或内网上的请求,也就是只能通过服务器本机访问,改成服务器内网 IP 则只接收内网的请求。port 表示监听端口,如果修改这个参数则客户端连接端口也要对应修改与其相同。data_root 应该是同步数据的保存目录。

其实基本不需要自己折腾,如果没有端口和IP的特殊需求,就不需要改了

到此服务器已经安装完成了。

2.3 设置和运行服务器

设置的相关命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在 anki-sync-server 目录下
$ ./ankisyncctl.py -h
usage: ./ankisyncctl.py <command> [<args>]

Commands:
  adduser <username> - add a new user
  deluser <username> - delete a user
  lsuser             - list users
  passwd <username>  - change password of a user

增加用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./ankisyncctl.py adduser <username>

将命令中的 <username> 替换为实际的用户名。之后输入密码,按回车确定。

启动服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python -m ankisyncd

执行这条命令的时候会一直占用命令行终端,否则表示服务器已停止运行。

如果是通过 ssh 连接到 Linux 服务器在服务器上运行,断开 ssh 连接会自动停止服务器运行,这就需要下面的命令防止进程停止:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ nohup python -m ankisyncd &

当然也可以用 screentmux 之类的服务器上常用的工具解决这个问题。

话虽然如此,但是每次运行起来特别恶心,还需要进入环境,自己去运行,所以写一个脚本非常方便

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

# 进入环境目录
cd /root/code_soft/ankiSyncService

# 激活环境
echo "激活 virtualenv 环境"
. ankienv/bin/activate


# 进入anki-sync目录
cd /root/code_soft/ankiSyncService/anki-sync-server

# 运行anki-sync
echo "运行 ankisyncd "
nohup python -m ankisyncd &




echo -e "\n"
echo "查找anki-sync的PID:"
echo "ps -ef | grep anki"
echo -e "\n"
echo "如果想结束anki-sync运行,使用命令:"
echo "kill -9 PID"

不过到了最后,我发现还是别乱用virtualenv,因为感觉我完全用不到,徒增烦恼

3. Anki客户端设置

3.1. 客户端Anki2.1

Add-on文件夹下创建文件夹 ankisyncd,并在其中创建并编辑文件 __init__.py,里面不要有汉字,保存为utf-8格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# just for sync -- add by Qfx

import anki.sync, anki.hooks, aqt

addr = "http://127.0.0.1:27701/" # put your server address here
anki.sync.SYNC_BASE = "%s" + addr
def resetHostNum():
    aqt.mw.pm.profile['hostNum'] = None

anki.hooks.addHook("profileLoaded", resetHostNum)

addr = "http://127.0.0.1:27701/" 行中的 127.0.0.1 换成对应服务器的 IP。27701 对应服务器配置的端口。

3.2. 客户端Anki2.0

见上文搭建Anki同步服务器(针对Anki2.0)

3.3. 手机端

4. 参考文献


OK!

以上,Enjoy~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
完全看不懂。。。。
完全看不懂。。。。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
搭建自己的Anki同步服务器
Anki自带的AnkiWeb同步服务体验较差,当你的单词库较大时,同步起来体验非常的差。因此我在腾讯云上自己搭建了Anki同步服务器。
光帆
2019/03/02
7.8K0
搭建自己的Anki同步服务器
Linux 下尝试自建Anki服务器
关于Anki是什么,具体怎么用,也许以后会在公众号中做进一步的介绍。总的来说,Anki是一个很好用的,在电脑端手机端均可用的,开源的记忆应用。可以帮助自己记住包括英语单词在内的各种知识,并支持各种各样的扩展。
idealclover
2018/10/31
2.7K0
为高效学习神器 Anki 部署一个专属同步服务器
Anki 是一个辅助记忆软件,其本质是一个卡片排序工具--即依据使用者对卡片上的自定义内容进行主动测试、自我评判后,其内部算法根据评判结果更改每张卡片下次测试时间的排序工具。
米开朗基杨
2022/05/25
1.3K0
为高效学习神器 Anki 部署一个专属同步服务器
[Linux]ankisyncd同步服务器重启脚本(Anki软件使用)
相对于针对Anki2.0的同步服务器程序AnkiServer,个人亲测觉得ankisyncd这个程序既不稳定,也不方便,用过一两天就崩溃了,而且独占终端,没有关闭,重启。如果不是考虑到会在Anki2.0与Anki2.1中间来回捣腾(我比较熟的是python3和PyQt5,Anki2.1漂亮一些,最热的插件也只会对这个版本进行维护,不过Anki2.0插件更多,纠结啊),我真的想重新装会AnkiServer。
祥知道
2020/03/10
8760
3 分钟为英语学习神器 Anki 部署一个专属同步服务器
Anki 是一个辅助记忆软件,其本质是一个卡片排序工具--即依据使用者对卡片上的自定义内容进行主动测试、自我评判后,其内部算法根据评判结果更改每张卡片下次测试时间的排序工具。
米开朗基杨
2023/09/09
1.4K0
3 分钟为英语学习神器 Anki 部署一个专属同步服务器
Django项目在Linux服务器上部署和躺过的坑
  在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台。那么问题来了,既然要在服务器上部署,
全栈测试开发日记
2023/02/02
2.1K0
Django项目在Linux服务器上部署和躺过的坑
搭建高性能的 Django 服务器栈
本文针对裸机 Linux 搭建 Django 的服务器栈,可直接应用在Linode等VPS上。 Linux:Ubuntu 12.04 + ,其他版本类似 说明: # 以#开头表示注释, $ 这里是需要执行的命令 <尖括号包含需要你自己定义的内容> ○、连接VPS或者服务器 不多说,putty就是个不错的工具,如果你本地有mac或者linux就更好了 一、升级软件包,打补丁 # 更新本地包的索引,这个必须做 $ sudo apt-get update # 升级所有软件包 $ sudo apt-g
小小科
2018/05/02
1.7K0
如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
angel_郁
2018/10/25
2.3K0
自建 Anki 同步服务器遇到的坑
一直以来都想着拯救我的 broken English,好准备接下来的六级考试。前段时间在 V2EX 看到一位大神分享了一份实用的英语学习指导 https://github.com/byoungd/English-level-up-tips-for-Chinese,遂被种草。同时我也认识到了自己单词量的匮乏,想通过背单词的方式把基础的词汇攒起来。恰好教程提供了一份「麦克米伦7000高频词」的 Anki 牌组,便打算从这里开始。
zgq354
2019/11/24
1.5K0
Python3+uWSGI+Nginx部署Flask
第一次在服务器上面部署Flask应用程序,踩了挺多坑,还好最终成功部署,记录一下。
Naraku
2021/07/29
1.5K0
如何在Debian 8上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您完成Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
SQL GM
2018/08/10
3.8K0
如何在CentOs 6.4 上使用uWSGI+Nginx部署Flask Web服务器
Armin Ronacher的Flask是过去几年中为Python创建的Web应用程序框架领域中发生过的最伟大的事情之一。
藕丝空间
2018/08/06
1.5K0
Debian 8如何使用Postgresql和Django应用程序
Django是一个用于快速创建Python应用程序的灵活框架。默认情况下,Django应用程序配置为将数据存储到轻量级SQLite数据库文件中。虽然这在某些负载下运行良好,但更传统的DBMS可以提高生产性能。
小翼111
2018/08/03
2.3K0
如何在Ubuntu 18.04上使用Postgres,Nginx和Gunicorn设置Django
Django是一个功能强大的Web框架,可以帮助您实现Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
乌鸦
2018/10/25
6.6K0
在 Linux 服务器上使用 Nginx + Gunicorn 部署 Django 项目的正确姿势
我的 Django 博客项目是部署在阿里云 ECS 服务器上面的,服务器的系统是64位的 Ubuntu 16.04 系统,部署的方式是使用 Nginx + Gunicorn 实现,数据使用的是 MySQL。部署其实是一个大坑,我在部署的过程中也是踩过很多坑,所以这篇文章就来介绍一下我的项目的完整部署过程,希望看到的人能少走弯路。
Hopetree
2022/09/26
1.2K0
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)
1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。 pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件
玩蛇的胖纸
2018/07/04
1.6K0
python Web开发01
注意下python 项目的虚拟环境下。 使用pip install gunicorn 安装 gunicorn
Echo_Wish
2023/11/30
2100
Django线上部署教程:腾讯云+Ubuntu+Django+Uwsgi
终于将Django成功部署到了腾讯云上,也实现了HTTPS的功能。现将步骤方法,部署环境一一列举如下,方便日后查看。
用户2416682
2019/09/27
2.8K0
Django线上部署教程:腾讯云+Ubuntu+Django+Uwsgi
如何在CentOS 7上使用PostgreSQL和Django应用程序
Django是一个用于快速创建Python应用程序的灵活框架。默认情况下,Django应用程序配置为将数据存储到轻量级SQLite数据库文件中。虽然这在某些负载下运行良好,但更传统的DBMS可以提高生产性能。
彼岸轮回
2018/10/25
3K0
django 项目部署详细教程 【uwsgi + nginx】
mkvirtualenv --python='/root/anaconda3/envs/MyDjango/bin/python' MyDjango
ruochen
2021/05/12
3.1K0
django 项目部署详细教程 【uwsgi + nginx】
推荐阅读
相关推荐
搭建自己的Anki同步服务器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验