Calibre-web 个人图书库搭建记 13 python,linux 相关的知识学习

昨天半夜又搞了一下web服务器,想着将calibre-web的静态目录static放到对象存储中,将web服务器的存储空间给解放出来,因为calibre-web的在线阅读用的目录就是static目录,整个目录一直是在不断的增长中的,calibre-web对整个解压目录没有采用统一文件夹,而是直接放到了static的跟目录下了。

这让整个迁移和实时解压文件产生了问题,将静态css,js这些文件通过腾讯的对象存储的挂载磁盘方式挂载static目录后python flash 对整个静态目录读写貌似慢了很多。主要体现在第一次对文件的读写上,因为要上传和实时解压上影响了程序响应效率。

既然上传资源文件到对象存储,那就继续考虑对象存储文件的外部访问通过对象存储的cdn方式访问。找到python flash_cdn 插件,可以统一配置 url_for调用static 的资源cdn 域名,在访问url_for函数生成时自动生成cdn 域名前缀的资源。

但开启flash_cdn函数后本地读写反应更慢了,在线阅读直接响应过慢请求失败。只能先换回本地读写模式,等后面有时间再通过插件研究如何配置cdn域名。后面cdn访问的模式还继续研究一下,考虑新建一个对象存储,配置同步源来缓存资源,把文件读写继续放到本地磁盘,然后通过修改程序模板增加cdn资源访问的域名。

但仔细回顾一下自己使用对象存储的初衷主要是为了节约服务器费用,因为受限于服务器的磁盘和带宽限制而单独折腾的这些方案实际上可能只是一些不必要的过早优化?如果服务器磁盘足够充足,带宽资源有限或充足的情况下还可以有更好的优化方案。完全calibre-web 原生程序负责书库管理和展示+nginx 静态资源代理+cos对象存储内网回源+修改calibre-web的模板调用路径就可以解决大部分折腾这么久的对象存储挂载问题。前提是服务器磁盘充足,加带宽充足或cos对象存储支持内网回源。接下来要考虑考虑这个方案了,毕竟增加一块云磁盘费用好像比这样折腾挂载读写性能不稳定的对象存储要靠谱的多。 腾讯云貌似开始测试文件网关功能了,也许这个功能可以替代增加存储盘这个步骤,也可以去尝试一下这个服务。

最近折腾完calibre-web 书库使用对象存储来存储,复盘发现也许这个尝试过并不是一个最好的方案,用cos也许最爽的是可以高速本地书库到对象存储上,自动维护本地文件夹同步状态。如果真用上了本地磁盘加cos回源的策略也可以考虑用cos做服务器上行的代理通道,这样可以做到突破服务器上传文件的带宽瓶颈,以后写程序也可以考虑通过cos对象中转需要上传到服务器的文件。文件增量不大,成本可以接受的情况下,增加一份冗余的同步对象存储就可以解决很多架构和读写瓶颈的挑战,还能提升服务器的带宽效率。

最近搞linux挂载cos对象存储,了解了linux挂载磁盘、硬链接文件与软链接文件夹的操作。搞本地calibre书库的迁移,了解了windows 共享文件夹操作、映射磁盘、虚拟盘符这些操作,以后对目录和文件迁移,磁盘扩容又知道了新的用法了。折腾着就能越来越知道文件系统操作并不是什么难题,善于利用工具和方法。自己遇到的业务场景都有非常成熟的应用设计了,只需要仔细学习到这些方法就可以了。


这一系列文章并没有什么具体的技术细节,开了个QQ交流群(72239907),方便大家交流读书、技术问题、图书资源共享。如果有什么软件安装等问题也可以加 calibre 交流群的QQ群(72239907)进行交流。
点击链接加入群聊【爱读书 读好书 calibre】:https://jq.qq.com/?_wv=1027&k=5vYWQsV

“Calibre-web 个人图书库搭建记 13 python,linux 相关的知识学习”的7个回复

  1. 不知能否留言,想设置calibre web在我的nas上,一直没懂,想请教您,不知如何联系

  2. 请教个问题
    我用docker部署的calibre-web,但是部署完之后/books/下面没有metadata.db这个数据文件,一直搞不懂metadata.db这个文件应该从哪里拿,或者 说是怎么手动生成它

    1. 这个文件是 桌面软件 calibre 生成的,是pc版本的电子书管理软件,这个是calibre-web 的电子书库的基础库。
      metadata.db 是calibre 书籍管理数据库文件,理论上你的书也是这个软件进行管理的。

      这是软件的下载地址 https://calibre-ebook.com/

  3. 有没有已经搭好的服务器镜像呢,我准备在内部网络上弄一个小型的电子图书馆。有的话,请Email联系。

评论已关闭。