Linux 下尝试自建Anki服务器 - idealclover
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.
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 国际许可协议 进行许可,转载请注明出处。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK