6

Linux 下尝试自建Anki服务器 - idealclover

 2 years ago
source link: https://idealclover.top/archives/266/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux 下尝试自建 Anki 服务器

2017.10.27 | 零零碎碎 | 4948 浏览 | 2 赞 | 2 条评论


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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK