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 國際許可協議進行許可,轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章