一、速览

入门

Some-Many-Books 把常见的编程、设计、科研等 PDF 电子书按语言和主题归类,提供直接下载的链接,像一个数字化的图书馆。

它解决了“网上找资源要四处搜、链接失效”的痛点,只需打开浏览器即可浏览、下载。

二、快速部署

入门

前置条件

  1. 一台可以联网的机器(Linux、macOS 或 Windows)
  2. 已安装 Docker(Docker 是一种把软件打包成“集装箱”、随处可运行的工具)
  3. 至少 1 GB 空闲磁盘和 512 MB 可用内存

如果本机没有 Docker,可参考官方文档 https://docs.docker.com/get-docker/ 进行安装。

一步部署

## 创建一个用于存放源码的目录
mkdir -p ~/some-many-books && cd ~/some-many-books

## 拉取项目源码(这里使用 Git,若没有 Git 可直接下载 zip 包解压)
git clone https://github.com/Dujltqzv/Some-Many-Books.git .

## 使用官方 Nginx 镜像把项目目录作为静态文件根目录
docker run -d \
  --name some-many-books \
  -p 8080:80 \
  -v "$(pwd)/PDF-file":/usr/share/nginx/html/PDF-file \
  nginx:alpine

执行完毕后,打开浏览器访问 http://<服务器IP>:8080 即可看到电子书列表页面。

三、配置详解

入门

配置项 说明 示例
-p 8080:80 将容器内部的 80 端口映射到宿主机的 8080 端口,浏览器通过该端口访问。 -p 8080:80
-v "$(pwd)/PDF-file":/usr/share/nginx/html/PDF-file 把本地的 PDF 文件夹挂载到 Nginx 的静态资源目录,保证文件持久化。 -v /data/books:/usr/share/nginx/html/PDF-file
环境变量 TZ(可选) 设置时区,避免日志时间错乱。 -e TZ=Asia/Shanghai

只要保持挂载目录不被删除,容器重启后依然可以访问已有的 PDF 文件。

四、功能导览

进阶 · 推荐细读

  1. 分类浏览 – 页面左侧有语言(Java、JavaScript、C、C++、Go)和技术栈标签,点击即可筛选对应书籍。
  2. 直接下载 – 每本书后面的链接指向 PDF 文件,点击即开始下载,无需额外登录或验证码。
  3. 搜索 – 在浏览器自带的页面搜索(Ctrl+F)即可快速定位书名。

如果想让页面更美观或加入自定义主题,只需在本地编辑 PDF-file 目录下的 HTML 模板(如 index.html),然后重启容器:

docker restart some-many-books

五、常见问题

深入 · 老手可选

  • 端口冲突:宿主机已有服务占用 8080,修改 -p 参数为未使用的端口,例如 -p 9090:80
  • 文件权限:挂载目录的读写权限不足会导致 Nginx 读取 PDF 失败,确保目录所有者为当前用户或设置 chmod 755
  • 容器异常退出:使用 docker logs some-many-books 查看日志,常见原因是挂载路径错误或磁盘空间耗尽。
  • 数据持久化:只要不删除挂载的本地目录,PDF 文件会一直保留;若误删,可从 GitHub 项目中重新下载 PDF-file 文件夹。

以上问题大多可以通过检查 Docker 参数或文件权限快速定位并解决。


至此,你已经完成了 Some-Many-Books 的全套部署与使用。以后只需要把新的 PDF 放入 PDF-file 目录,刷新页面即可让访客立即下载。祝阅读愉快!

项目信息

项目
仓库 Dujltqzv/Some-Many-Books
语言 None
Star 22,910
Fork 2,244
主页

参考链接

延伸阅读

想继续探索?这些同领域的教程可能也适合你: