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(prefix)/includeL(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

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYVyLhXG' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片