Linux 下尝试自建Anki服务器

什么是Anki

关于Anki是什么,具体怎么用,也许以后会在公众号中做进一步的介绍。总的来说,Anki是一个很好用的,在电脑端手机端均可用的,开源的记忆应用。可以帮助自己记住包括英语单词在内的各种知识,并支持各种各样的扩展。

今天的博文主要聚焦在Anki的同步问题上。anki的服务器在日本,同步相对较慢;另一方面自己也希望能更GEEK一点,将东西寄存在自己的服务器上。正巧自己的服务器也处于闲置状态,就开始着手搭建Anki的服务器。

本文的主要环境是CentOS6.5。

Anki服务端配置

CentOS中Python的升级

此部分主要参考资料 blog.ruterly.com/2015/12/03/... 在此基础上做了一些修改。

CentOS中Python的默认版本是2.6,而Ankiserver中相关组件所需要的版本最低为2.7。所以相应的,我们需要升级Python的版本。

写这篇博文的时候,Python2的最新版本是2.7.14。对应的命令如下。如果之后版本有更新只需做相应修改。

wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz tar -xzvf Python-2.7.14.tgz cd Python-2.7.14

如果没有安装wget可以使用yum进行wget的安装

yum install wget -y

其中 -y 命令指的是对于所有的设置都回复"yes",可以省很多事hhhh

进入到解压后的文件夹后,执行以下的命令进行配置

./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib

其中 --enable-loadable-sqlite-extensions 是sqlite的扩展,如果需要使用的话则带上这个选项

之后执行

vi ./Modules/Setup

找到#zlib zlibmodule.c -I <math xmlns="http://www.w3.org/1998/Math/MathML"> ( p r e f i x ) / i n c l u d e − L (prefix)/include -L </math>(prefix)/include−L(exec_prefix)/lib -lz去掉注释并保存,然后进行编译和安装

make && make install

安装好Python2.7之后我们需要先把Python2.6备份起来,然后再对yum的配置进行修改,如果不进行这一步操作的话,执行yum命令将会提示你Python的版本不对。

执行以下命令,对Python2.6进行备份,然后为Python2.7创建软链接

mv /usr/bin/python /usr/bin/python2.6.6 ln -s /usr/local/bin/python2.7 /usr/bin/python

然后编辑/usr/bin/yum,将第一行的#!/usr/bin/python修改成#!/usr/bin/python2.6.6 现在执行yum命令已经不会出现之前的错误信息了。

我们执行python -V查看版本信息,如果出现错误

error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

则编辑配置文件

vi /etc/ld.so.conf

添加新的一行内容/usr/local/lib,保存退出,然后

/sbin/ldconfig /sbin/ldconfig -v

pip设置和yum的修复

此部分主要参考资料 blog.ruterly.com/2015/12/03/... ruiaylin.github.io/2014/12/12/... 在此基础上有修改

下载最新版的pip,然后安装

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py

查找pip的位置

whereis pip

找到pip2.7的路径,为其创建软链作为系统默认的启动版本

ln -s /usr/local/bin/pip2.7 /usr/bin/pip

到此pip设置完成,下面进行yum的修复

which yum

获取yum的目录,一般为/usr/bin/yum

接下来打开/usr/bin/yum

vim /usr/bin/yum

将第一行 #!/usr/bin/python 改为 #!/usr/bin/python2.6

之后:wq保存退出,此时yum就可以了

AnkiServer的安装

使用easy_install进行安装,有博文提到使用pip安装会出现莫名其妙的bug,未加以验证。

easy_instlall AnkiServer

如果提示 No module named _sqlite3,是因为没有安装sqlite3,相应的命令

yum instal sqlite-devel -y

之后重新回到Python下载后解压的目录(Python-2.7.14),重新安装Python

./configure make make altinstall

AnkiServer就被安装好了

AnkiServer服务器端的设置

此部分主要参考文章 zhuanlan.zhihu.com/p/25187159 此基础上有更改

在自己想创建的目录下创建目录Anki

mkdir Anki

进入这个目录

cd Anki

找到AnkiServer中示例配置的目录,我的在/usr/local/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples

如果找不到的话可以尝试全局的搜索定位到目录

cd / find -name examples

可以定位到examples目录的位置

之后打开

cd /usr/local/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples

查看目录,我们发现其中有一个examples.ini文档

ls logging.conf example.ini supervisor-anki-server.conf

复制一个example.ini 到当前目录,修改为production.ini。

cp example.ini ~/Anki/production.ini

之后编辑该文档

vim ~/Anki/production.ini

修改其中的设置

host = 192.168.0.100 #服务器的地址 allowed_hosts = 192.168.0.30,192.168.0.40 #允许同步的客户端ip地址,你也可以写0.0.0.0 允许任何ip地址连接

之后:wq保存并退出

添加用户名密码

ankiserverctl.py addser <username> #添加一个用户,而后输入密码

测试运行

ankiserverctl.py debug

没有什么特殊的问题,这个时候就可以运行了

AnkiServer电脑端的设置

此部分主要参考文章同上,此基础上有更改

开启插件文件夹

新增一个txt挡案,檔名修改为mysyncserver.py

文件内容如下

import anki.sync anki.sync.SYNC_BASE = 'http://192.168.0.100:27701/' #上面设置的ip地址和端口号 anki.sync.SYNC_MEDIA_BASE = 'http://192.168.0.100:27701/msync/'

保存后,重启anki即可测试同步。

AnkiServer安卓端的设置

按照截图进行一步步操作

网址要注意ankiserver预设是使用http而不是https

相关推荐
STCNXPARM21 小时前
Linux camera之V4L2子系统详解
android·linux·camera·v4l2架构
yueyuexiaokeai11 天前
linux kernel常用函数整理
linux·c语言
郝亚军1 天前
ubuntu-18.04.6-desktop-amd64安装步骤
linux·运维·ubuntu
Konwledging1 天前
kernel-devel_kernel-headers_libmodules
linux
Web极客码1 天前
CentOS 7.x如何快速升级到CentOS 7.9
linux·运维·centos
一位赵1 天前
小练2 选择题
linux·运维·windows
代码游侠1 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习1 天前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱1 天前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
zly35001 天前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器