1. 项目概述:CentOS服务器变身漫画图书馆
在Linux服务器上搭建私人漫画库一直是个技术活,直到遇到Teemii这个神器。作为一名在CentOS环境摸爬滚打多年的老运维,我最近用Teemii把闲置的CentOS 7.9服务器改造成了私人漫画天堂,整个过程比预想的简单太多。这个方案最吸引人的地方在于:一键脚本搞定所有依赖环境部署,自动化的漫画抓取/分类系统,以及多终端适配的阅读界面。下面我就把这次改造的完整过程和技术细节分享给大家。
2. 环境准备与基础配置
2.1 系统要求与初始化
推荐使用CentOS 7.9 minimal版本(阿里云镜像源可下载),实测4核CPU+8GB内存的配置可流畅支持10人同时在线阅读。关键准备工作包括:
-
关闭SELinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config -
防火墙放行端口:
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload -
安装基础工具包:
yum install -y wget unzip git
注意:如果使用云服务器,请确保安全组已开放8080端口(Web界面)和9090端口(管理后台)
2.2 一键部署脚本解析
Teemii的安装脚本(install.sh)主要完成以下工作:
- 自动检测Python3.8+环境,未满足时通过EPEL源安装
- 部署MongoDB作为漫画元数据存储
- 配置Redis缓存提升阅读加载速度
- 安装Chromium用于漫画封面生成
- 创建systemd服务实现开机自启
典型安装命令:
wget https://teemii.io/install.sh && chmod +x install.sh
./install.sh --domain yourdomain.com --admin-pass yourpassword
3. 核心功能实现细节
3.1 漫画抓取引擎工作原理
Teemii的爬虫模块采用分布式架构:
- 调度器(Scheduler):基于APScheduler实现定时任务
- 下载器(Downloader):使用aiohttp实现异步下载
- 解析器(Parser):XPath+正则表达式提取漫画信息
- 去重模块:通过MD5校验文件指纹
配置文件示例(/etc/teemii/sources.yaml):
sources:
- name: "漫画源A"
url: "https://example.com"
update_interval: 3600 # 每小时检查更新
rules:
title: "//h1[@class='title']/text()"
chapters: "//div[@class='chapter-list']/a/@href"
3.2 在线阅读服务架构
前端采用Vue.js构建响应式界面,后端服务包含:
- 文件服务:Nginx处理静态文件请求
- API网关:FastAPI提供RESTful接口
- 转码服务:将ZIP/CBZ格式实时解压为WebP
- 阅读进度同步:WebSocket保持多设备状态同步
性能优化关键参数:
# /etc/nginx/conf.d/teemii.conf
location /read {
proxy_pass http://127.0.0.1:8000;
proxy_buffering off; # 禁用缓冲实现实时加载
client_max_body_size 100M;
}
4. 高级配置与优化技巧
4.1 存储方案选型
根据漫画数量推荐存储方案:
- 小于1万本:直接使用服务器本地存储
- 1-5万本:挂载NFS网络存储
- 5万本以上:配置Ceph分布式存储
挂载NFS示例:
yum install -y nfs-utils
mkdir -p /mnt/comics
mount -t nfs 192.168.1.100:/comics /mnt/comics
echo "192.168.1.100:/comics /mnt/comics nfs defaults 0 0" >> /etc/fstab
4.2 自动化维护方案
- 每日凌晨3点自动清理30天未访问的缓存:
0 3 * * * find /var/cache/teemii -type f -mtime +30 -delete
- 每周日1点自动备份元数据库:
0 1 * * 0 mongodump -o /backups/teemii-$(date +\%Y\%m\%d)
5. 常见问题排查指南
5.1 部署阶段典型问题
-
Python依赖安装失败 :
-
现象:
ERROR: Could not build wheels for pillow -
解决方案:
yum install -y python3-devel zlib-devel libjpeg-turbo-devel
-
现象:
-
端口冲突导致服务启动失败 :
-
检查命令:
ss -tulnp | grep -E '8080|9090' -
解决方法:修改
/etc/teemii/config.ini中的端口配置
-
检查命令:
5.2 运行期间常见故障
-
漫画加载缓慢 :
-
检查Redis内存使用:
redis-cli info memory -
优化方案:增加
maxmemory-policy allkeys-lru
-
检查Redis内存使用:
-
封面生成失败 :
-
查看日志:
journalctl -u teemii-cover -f -
常见原因:Chromium沙箱权限问题,添加
--no-sandbox参数
-
查看日志:
6. 安全加固建议
- 启用HTTPS加密:
certbot --nginx -d yourdomain.com
- 配置定期密码轮换:
# /etc/teemii/config.ini
[security]
password_expire_days = 90
- 限制管理后台访问IP:
location /admin {
allow 192.168.1.0/24;
deny all;
}
我在实际运行中发现,配合cpolar内网穿透可以完美实现外网访问,但需要注意流量加密。现在我的漫画库已经稳定运行半年,收录了2万多本漫画,手机/平板/电脑都能流畅阅读,再也不用担心各种漫画APP下架内容了。

6312

被折叠的 条评论
为什么被折叠?



