Calibre-web 个人图书库搭建记 8

解品喜
因为上周末在腾讯云上搭建了Calibre-web 程序。为了节省服务器硬盘,为了以后书库扩容方便,自己把书库文件通过腾讯云的对象存储挂载到云主机的方式存放的。 开始主要是想用腾讯云免费的50G对象存储(cos)空间,但后来发现用户对象存储好像天热比较适合这种固定且读写不频繁的图书库场景。 但用对象存储挂载到云服务器上发现读写瓶颈非常明显,基本上只要一更新calibre的数据库就会把 Calibre-web的程序搞崩溃。自己开始不知道是对象存储当磁盘挂载的读写造成的。结果反复的尝试和研究calibre-web的驱动方式与挂载磁盘的关系,一个劲的重启、删除数据库、重装来测试。 最后才发现原来是对象存储当磁盘使用不能把对象文件当数据库来使用。仔细研究了一下calibre管理图书的原理,发现书库的索引库放在了跟图书源文件一个目录,这行好处是可以配置一个数据库文件地址,就能按照数据相对索引到图书文件。 但用在我搭配的这个方案上直接就是瓶颈了,只能考虑需要程序了。因为查找图书文件需要根据索引数据库(metadata.db)的相对位置寻找,所以calibre-web只有一个配置metadata.db目录的选项。自己考虑将metadata.db这个索引数据放到服务器本地磁盘上去,这样可以与图书文件分离开来。程序中单独再配置一个数据库位置,读写索引数据库都通过本地磁盘进行,手动管理本地书库和云书库索引文件。 因为对python编程不熟悉,自己只是先简单的在代码中改造了一下图书索引数据库的连接位置。这样配合系统配置的索引库目录还能继续找到真正数据文件存放的目录,类似于换了一个数据,但静态文件还继续从原来文件夹读取。 一换本机磁盘上的图书索引数据库地址,接着程序就流畅的运行了起来,不在频繁程序崩溃了。这也就基本把这个calibre-web程序在腾讯云上跑稳了。 只等域名备案解析了吗? 不是的,…