Linux 下尝试自建Anki服务器

什么是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

版权声明:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

高性能配置中心 duic - 设计&实现

配置(Configuration)对于技术人员来说应该都不陌生,通常配置都是以 key-value 的形式存在于配置文件当中。例如线程池大小、数据库连接、逻辑开...

15830
来自专栏Python自动化测试

python接口测试之urllib2的应用(十五)

在接口测试中或者说在网络爬虫中,urllib2库是必须要掌握的一个库,当然还有优秀的requests库,今天重点来说urllib2库在接口测试中...

15830
来自专栏信安之路

一步一步带你体验 openvas

openvas 是 nessus 项目的一个开源分支,用于对目标系统进行漏洞评估和管理,openvas 的配置使用相较于 nessus 更加复杂,扫描速度也不如...

17800
来自专栏不止是前端

API网关的常用功能及架构图

48790
来自专栏北京马哥教育

如何在一个 U 盘上安装多个 Linux 发行版

33850
来自专栏抠抠空间

Linux上安装rz和sz命令

40900
来自专栏老蒋专栏

腾讯云服务器快照备份硬盘 确保系统和文件数据安全

目前,阿里云快照备份是需要收费服务的,腾讯云快照备份还没有收费。缺点就是腾讯云快照备份需要手动备份,不可以设定定时自动备份,不过我们要求也不要太高毕竟人家还没有...

51600
来自专栏java一日一条

使用 Nginx 自己实现一个 Web 调试代理服务器

在Hecker News中我提到过,我记录了一种我使用NGINX(一个久经考验的产品,可以迅速地反向代理)作为一个本地测试代理服务器的方法。

23910
来自专栏北京马哥教育

Linux:chattr命令和chgrp命令

文 | 云豆 图 | 来源网络 云豆贴心提醒,本文阅读时间5分钟,文末有秘密! Linux chattr命令 Linux chattr命令用于改变文件...

35690
来自专栏静下来

ECSHOP整合百度ueditor编辑器方法 支持远程图片本地化

image.png ECSHOP商城自带的编辑器实在是不能忍,太难用了。 就换成了百度的ueditor编辑器,本来最近修改了几个商城的,索性自己也记录一次吧。 ...

38960

扫码关注云+社区

领取腾讯云代金券