2017.10.27 | 零零碎碎 | 2 赞 | 2 条评论


请注意,本文编写于 953 天前,最后修改于 397 天前,其中某些信息可能已经过时。

什么是Anki

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

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

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

Anki服务端配置

CentOS中Python的升级

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

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)/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的修复

此部分主要参考资料
http://blog.ruterly.com/2015/12/03/Update-python/
https://ruiaylin.github.io/2014/12/12/python%20update/
在此基础上有修改

下载最新版的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服务器端的设置

此部分主要参考文章
https://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即可测试同步。

<h2>AnkiServer安卓端的设置</h2>

按照截图进行一步步操作

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

本文链接:https://idealclover.top/archives/266/

本作品由 idealclover 采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。

标签: Anki, CentOS, tar, 设置, python

2

已有 2 条评论


  1. qing
    qing 回复

    我说怎么看着这么熟悉的样子,前两天在看芭芭拉·奥克利的《学习之道》有一章介绍重复记忆的,正好提到了Anki这个APP哈哈哈哈哈

    1. idealclover
      idealclover 回复

      hhhh~Anki超好用的~而且不知道为什么就是对开源的东西充满了好感hhhh

🤔关于我
翠翠 idealclover
南京大学商学院 2016 级本科生
了解更多
🏠关于博客
基于 Typecho 博客框架
使用个人创作的 clover 主题
💾博客小程序
💸支持我