前言

最近在逛翠翠的博客-服务器指北看到一个非常好看的在线书架web程序——Calibre-web

这个项目在github开源、并且有好几套Docker解决方案

项目地址:https://github.com/janeczku/calibre-web

这个界面真的是漂亮的要命,一眼就喜欢上了

开始部署

部署方式

网上我大概找到两种方案:

  • Docker部署,免除了配置环境的麻烦,不同大佬大概有3个左右不同的Docker镜像
  • 基于宝塔面板部署,对像我这种对Docker容器一窍不通的小白来说比较友好,缺点是中间会遇到各种奇奇怪怪的问题,这里是基于宝塔面板部署Calibre-web的一次踩坑经历

前提需求

  • 一台服务器+宝塔面板(宝塔非必须)
  • 安装好LNMP环境+CentOS 7
  • Python 2.7+
  • 一个设置好DNS解析的域名
  • 服务器安全组开放8083端口

设置域名解析

登录万网域名控制台的域名列表里找到你的域名点击右边的解析点击添加记录
记录类型: A-将域名指向一个IPV4地址
主机记录:
泛解析域名就是www.你的域名
二级域名就是自定义adress.你的域名
记录值:服务器的公网IPV4地址
其他:保持默认
点击确定域名解析就好了

开放服务器端口

在服务器控制台里的安全组或者宝塔面板里的安全选项卡里放行端口: 8083

准备安装

1.检查系统Python版本

1
python2 --version

一般CentOS 7安装宝塔面板会安装Python2.7.5,可忽略这步

2.Github拉取master分支

https://codeload.github.com/janeczku/calibre-web/zip/master

3.添加网站

进入宝塔面板,点击左边选项卡网站,添加站点输入你的域名信息

需要注意:
Calibre-web使用的数据库是自己用桌面版直接新建的一个数据库,不是MySQL
设置SSL直接宝塔一键申请证书,强制Https

开始安装

1.上传代码到站点根目录
解压源码,注意图中两个文件的路径(图中所有文件必须位于网站根目录下)

2.命令行安装

shell连接服务器
cd进入站点根目录
使用Python安装命令

1
pip install --target vendor -r requirements.txt

我在其中遇到三条警告/错误

第一条是提示pip版本过低,按照提示升级下就好,可忽略

1
2
WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

还有一条是提示Python版本过低

1
ERROR: Package 'tornado' requires a different Python: 2.7.5 not in '>= 3.5'

还有一个致命错误

1
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-*(其中×与要安装的软件有关)

解决方法,分别运行下面的两条命令

1
2
sudo python -m pip install --upgrade --force pip   
sudo pip install setuptools==33.1.1

待执行完后,再次运行上面的Python安装web程序的命令
执行cps.py

1
2
yum install screen
screen -S cps

cd 到站点目录

1
python cps.py

在执行这步,我又碰到个错误

1
ImportError: No module named babel

查了下,可能是因为缺少一些Python的babel依赖

安装babel

1
pip install babel

执行完上面的,再次执行安装web命令,又报错了

1
ImportError: No module named flask_login

Google了下,执行下面命令安装缺少的依赖

1
pip install flask_login

重新执行web安装命令,还是跟上面报错一样
获取flask-login版本

1
pip show flask-login

还是各种问题,炸了,还是更新Python到3.5以上吧,头疼
在更新了Python2.7.5到3.8.1后,执行命令出现错误

1
No module named '_sqlite3'

执行命令
yum安装sqlite3

1
yum install sqlite-devel

cd进入Python3目录

1
cd Python-3.8.1

重新编译Python3

1
./configure --prefix=/usr/local/python3

编译安装

1
make && make install

我失败了……

😛
……

后续

详见Centos7+宝塔面板搭建Calibre-Web在线书库