惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
博客园 - Franky
GbyAI
GbyAI
B
Blog
WordPress大学
WordPress大学
D
Docker
小众软件
小众软件
月光博客
月光博客
博客园 - 【当耐特】
T
The Blog of Author Tim Ferriss
IT之家
IT之家
腾讯CDC
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
H
Help Net Security
M
MIT News - Artificial intelligence
L
LangChain Blog
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
如何使用 docker 部署 onemanager | 竹林里有冰的博客
竹林里有冰 · 2024-02-11 · via 竹林里有冰的博客

部署方法#

如果你只是想找一个 OneManager-php 的 Docker 部署方法,直接看 https://github.com/zhullyb/OneManager-php-docker


一直以来,我都是 OneManager-php 的忠实用户。这些年来,尽管有 alist 这种 UI 好看,多种网盘高度聚合的项目逐渐取代了 onemanager 的生态位,但 onemanager 支持文件分片上传、上传流量不经服务器的特点还是让我非常满意。前一阵子,glitch 暂停了针对项目自定义域名的支持,因此在我手贱地取消了项目原本绑定的域名后,迫切地需要寻找一个新的部署的平台,只不过 onemanager 项目现在列出的方案都不太让我满意,因此我就萌生出了在 vps 上自己部署的想法。

Docker 镜像选用#

vps 上自己部署 php 项目,最简单的方法是使用 Docker,使用 Docker 就可以免去配置 nginx 或者同类产品的 php-fpm 配置才怪。我打开 Docker 提供的 php 官方镜像,最小的镜像是带-cli后缀的,这个镜像就不适合进行部署,php 内置的开发服务器是单线程的,当同时打开两个网页访问开发服务器的时候,其中一个网页就会卡住;以-fpm结尾的镜像变体很明显,仍然需要去 nginx 或同类产品的配置文件那边去配置 fpm,这给部署了好几次 php 项目的我带来的心理阴影;剩下一个就是-apache后缀、使用 apache server 提供 php 服务的镜像,体积虽然大了点,但好在操作简单,只需要将 php 文件放进 /var/www/html,启用 php 的相关拓展,启用 apache 的相关功能即可。

php 拓展#

php 的拓展可以使用镜像自带的 docker-php-ext-installdocker-php-ext-enable 命令进行操作,此外还有一个 docker-php-ext-configure 命令可以配置相关的拓展,不过我并不是 php 开发者,不熟悉拓展有什么好配置的。

OneManager-php 没有依赖任何的 php 拓展,因此这个步骤可以直接跳过。

Apache Server 配置#

和 php 拓展一样,镜像内也提供了几个命令进行 Apache Server 的配置,分别为 a2disconfa2dismoda2dissitea2enconfa2enmoda2ensitea2ensite

OneManager-php 在部署的时候依赖于 Apache Server 的 rewrite 的模块,因此在 Dockerfile 中需要使用 a2enmod rewrite 开启 rewrite 支持。至于别的 Apache Server 配置,都可以通过项目中的 .htaccess 文件进行配置。

.htaccess 文件纠错#

在 OneManager-php 仓库中,.htaccess 文件有一些小问题。

RewriteRule ^(.*) index.php?/$1 [L]

这行配置原本是将访问的路径追加到 index.php?/ 后面的意思,但 一旦路径中出现了 [] 或者空格等字符时,会触发 Apache 自带的保护,因此我们将这行改成下面这个样子即可。

RewriteRule ^(.*) index.php [QSA,L]

原项目合并了我的 PR,因此这一过程不再需要。

处理文件权限问题#

OneManager-php 在运行过程中,会有针对配置文件的读写操作,此外还内置了一键更新的功能,因此会对路径内的文件进行读写,我们需要确保 php 在运行过程中有权限对这些文件进行读写。

可以直接将 /var/www/html 路径的所有权转给 www-data 用户。

chown -R www-data:www-data /var/www/html

最终的 Dockerfile#

FROM php:8-apache
RUN a2enmod rewrite
COPY OneManager-php /var/www/html
RUN chown -R www-data:www-data /var/www/html

其实一共就 4 行,还是挺简单的。