利用Caddy和H5ai进行文件管理 作者: Hogwarts 发布于: 2021-05-18 更新于: 2022-02-26 分类: 默认分类 我又得瑟了。趁热打铁,快马加鞭,把新学习的东东记录下来。年纪大了,健忘严重!要压制住内心的喜悦,淡定淡定! 看mirrors.yuntu.eu.org 的风格很清爽,就Google了一翻H5ai教程,学习中顺便还知道了WebDAV,以为是一个程序呢,搜了半天,也不知道如何下载、安装,原来是一个协议,在Caddy里输入几行命令即可,水平差,所以浪费了好长时间。将搭建过程分享出来,共勉。 # 一、Caddy和PHP的搭建 ##1.1 Centos安装PHP 参考前文:`https://winamp.top/101.html` ##1.2 Debian安装PHP 参考文章: `https://yushum.com/archives/194` ###1.2.1 基本命令 添加 APT 源 安装以下软件包 apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https 导入密钥 wget https://packages.sury.org/php/apt.gpg apt-key add apt.gpg 将 SURY 存储库添加到系统 sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' apt update apt upgrade 安装 PHP 7.4 apt install -y php7.4 php7.4-cli php7.4-common php7.4-opcache php7.4-fpm php -v systemctl status php7.4-fpm vim /etc/php/7.4/fpm/pool.d/www.conf 1.修改运行用户和组为nobody:nogroup 2.大约48、49行处将 listen.owner=www-data listen.nogroup=www-data 改为 listen.owner=nobody listen.nogroup=nogroup 3.运行 systemctl restart php7.4-fpm systemctl status php7.4-fpm 运行了上述命令下面报错应该就没有了。 报错:[ERROR 502 /] dial unix /run/php/php7.4-fpm.sock: connect: permission denied 运行命令:chown -R nobody:nogroup /run/php/php7.4-fpm.sock #Debian下PHP以nobody用户运行给予运行权限 #也可以以www-data用户运行,有问题多思考。 Nginx下报错:*13 FastCGI sent in stderr: "PHP message: PHP Warning: file_put_contents(/data/www/html/_h5ai/private/cache/cmds.json): failed to open stream: Permission denied in /data/www/html/_h5ai/private/php/core/class-json.php on line 18" while reading response header from upstream, chown -R www-data:www-data /data/www/html/_h5ai/ ###1.2.2 Debian下Caddyfile需要增加的内容 fastcgi / /run/php/php7.4-fpm.sock { ext .php split .php index index.php } # 二、H5ai下载和配置 ## 2.1 下载到网站运行主目录 下载到Caddy的网站主目录,以主目录 /data/www/html为例 wget –P /data/www/html https://release.larsjung.de/h5ai/h5ai-0.30.0.zip unzip /data/www/html/h5ai-0.30.0.zip ## 2.2 配置Caddyfile vim /etc/caddy/caddy.conf #增加index.php后的内容 fastcgi / /run/php/php7.4-fpm.sock { ext .php split .php index index.php "/_h5ai/public/index.php" #h5ai运行文件 } ## 2.3 查看运行情况 systemctl restart caddy systemctl status caddy ## 2.4 H5ai运行环境自检 在浏览器中输入你的域名,不出意外的话,将看到H5ai界面。 在浏览器中输入以下网址 https://你的域名/_h5ai/public/index.php 将会看到默认的`PayPal`对话框,点进即可。(如点不进去可能权限有问题,或自行修改h5ai的配置文件密码) 进入新页面后,将会看到`h5ai version`、`PHP version`等信息,且都是`yes`。 有几个`no`的信息可用下列方法改变。 Public Cache directory Private Cache directory Debian:chown -R nobody:nogroup /data/www/html/_h5ai/ Centos:chown -R nobody:nobody /data/www/html/_h5ai/ 或: chmod 777 _h5ai/public/cache chmod 777 _h5ai/private/cache #注意网站路径及用户组、注意路径 参考:https://github.com/lrsjng/h5ai/issues/614 PDF thumbs Debian:apt install imagemagick -y Centos:yum install ImageMagick -y Image thumbs no PHP GD extension with JPEG support available PHP GD库的问题,PHP7.4版本安装命令 apt-get install php7.4-gd Movie thumbs apt -y install ffmpeg #或编译安装 wget https://www.ffmpeg.org/releases/ffmpeg-4.4.1.tar.gz tar -zxvf ffmpeg-4.4.1.tar.gz cd ffmpeg-4.4.1 ./configure make make install 关于Movie thumbs的问题,推荐安装DPlayer,太复杂了,需要认真研究视频流再搞吧。 推荐一个安装完毕的版本:https://github.com/Pearlulu/h5ai_dplayer 啰嗦一下: 1. 如果单纯的存放文件的话,没有必要自检。 1. 其实Caddy自带的browse功能已经实现了类似H5ai的文件浏览功能,只是没有右侧菜单,非完美主义者未必需要H5ai。 ##2.5 存在的问题及解决办法 ### 2.5.1 存在的问题 > 因为 h5ai 所有的 URI 都会在服务端重定向至 /_h5a/public/index.php 并由它来生成页面,所以在 Caddy 里使用 index 指定网站首页后,浏览我们的网站时会出现很多 404 错误。 这点在 lighttpd / nginx / apache 下默认自动修正了,所以不需要其它设置。 而 Caddy 与 PHP 存在一些兼容性问题,无法自动处理这个问题。所以这里需要而使用rewrite 指令来将所有的 URI 重写至 /_h5ai/public/index.php。 **本人在实践中的问题就是:**在网站主目录下新建任意一个文件夹后,在浏览器打开这个文件夹后里面的内容无法查看。刷新后显示caddy browser,不能挂载H5ai程序。 ###2.5.2 解决问题参考 参考1.`https://github.com/caddyserver/caddy/issues/819` 参考2.`https://blog.rneko.com/archives/40/` ###2.5.3 重新配置Caddyfile vim /etc/caddy/caddy.conf #输入以下内容 你的域名:80 { redir https://你的域名{uri} } 你的域名:443 { gzip browse tls /证书路径/fullchain.cer /密钥路径/private.key root /data/www/html #网站路径 fastcgi / /run/php/php7.4-fpm.sock php rewrite { if {path} ends_with / to /_h5ai/public/index.php } header / { Strict-Transport-Security "max-age=31536000;" } } #终端输入以下命令 systemctl restart php7.4-fpm caddy chown -R nobody:nogroup /run/php/php7.4-fpm.sock ##2.6 H5ai美化及使用经验 ###2.6.1 关于H5ai的美化 推荐:`https://blog.rneko.com/archives/40/` ###2.6.2 关于使用经验 推荐:`https://wp.gxnas.com/3624.html` ###2.6.3 关于安装 推荐:wulabing的一键脚本`https://github.com/wulabing/h5ai_onekey_install-lnp-` ###2.6.4 关于报错 ERROR 0 /_h5ai/public/index.php] PHP message: PHP Warning: session_start(): open(/var/lib/php/session/sess_jqj4ojff7b7sqv82arb96cbggn, O_RDWR) failed: Permission denied (13) in /data/www/html/_h5ai/private/php/class-bootstrap.php on line 11 PHP message: PHP Warning: session_start(): Failed to read session data: files (path: /var/lib/php/session) in /data/www/html/_h5ai/private/php/class-bootstrap.php on line 11 解决方法参考:`https://www.cnblogs.com/ryanzheng/p/11592303.html` chmod -R 777 /var/lib/php/session/ # 三、搭建WebDAV环境 ## 3.1 搭建 所谓搭建WebDAV环境,其实就是修改Caddyfile,**不是**~~下载安装WebDav文件然后运行~~。 vim /etc/caddy/caddy.conf #输入以下内容 你的域名:80 { redir https://你的域名{uri} } 你的域名:443 { gzip browse tls /证书路径/fullchain.cer /密钥路径/private.key root /data/www/html #网站路径 fastcgi / /run/php/php7.4-fpm.sock php rewrite { if {path} ends_with / to /_h5ai/public/index.php } header / { Strict-Transport-Security "max-age=31536000;" } } 你的域名:port { #如有子域名,则可用443端口 gzip tls /证书路径/fullchain.cer /密钥路径/private.key basicauth / user passwd #修改WebDav登录用户名密码 webdav / { scope /data/www/html #网站路径 modify true } } **说明一下:** 1. 证书可以自动申请,把证书密钥换成“你的邮箱”。最好自行申请吧,如自行申请两次有出Bug的可能。 1. 因客户端RaiDrive连接时地址只能选https模式,故多开了一个port端口。 1. 如果把WebDAV选项放在默认的443端口下,那么打开网站会要求输入用户名和密码,输入后只能说明WebDAV安装成功了,打不开网页的。 1. 记得防火墙放行port端口。(这个非常重要) 1. **有`子域名`的情况下,可以用443端口,就没有上述问题了。****(推荐)** ##3.2 运行命令 systemctl restart caddy systemctl status caddy ##3.3 测试 在浏览器中输入`domain.com(你的域名):8080` 会看到输入`用户名`和`密码`的页面。 输入后显示 This XML file does not appear to have any style information associated with it. The document tree is shown below. 恭喜你,成功了! 关于WebDAV的认识,推荐一篇文章:[网络存储文件共享之 WebDAV](https://toutiao.io/posts/zccejvk/preview "网络存储文件共享之 WebDAV") # 四 客户端的选择 - Windows客户端:推荐开源的RaiDrive - 安卓客户端:CX文件管理器、文件管理器+ # 五、期望 - 可以参考`https://www.fmqcloud.com/archives/caddy-webdav.html`利用秋大的Docker实现WebDAV功能。待完善。 - Caddy+H5ai+WebDav实现了上传下载功能。要是再搭建一个Aria2就完美了。 - 骚年们,嗨起来吧! # 六、参考 1. [在Debian系统中APT安装PHP 7.1/7.2/7.3/7.4](https://yushum.com/archives/194 "在Debian系统中APT安装PHP 7.1/7.2/7.3/7.4") 1. [H5AI部署、配置与美化](https://blog.rneko.com/archives/40/ "H5AI部署、配置与美化") 1. [用Caddy快速搭建一个Webdav环境](https://www.fmqcloud.com/archives/caddy-webdav.html "用Caddy快速搭建一个Webdav环境") 1. [利用Caddy来搭建可挂载的WebDAV个人网盘+配合FileBrowser来管理文件](https://huaien.co/technology/use-caddy-to-build-webdav-server/ "利用Caddy来搭建可挂载的WebDAV个人网盘+配合FileBrowser来管理文件") 标签: caddy, h5ai, PHP
评论已关闭