利用Caddy在Windows上部署WebDAV 时间: 2022-11-22 23:36 分类: 技术笔记 # 简介 虽然在Win上面直接跑SMB特别方便,但性能瓶颈是比较明显的。因此考虑引入WebDAV。 WebDAV基于HTTP,所以自然就需要Web Server支持。不过显然在Win上面无论是跑IIS还是直接Apache/NginX都比较蛋疼。就需要通过其他一些轻量化的Web Server配合实现。 从搜索引擎里输入中文关键词,出现最多的就是Caddy这个轻量化服务器。所以我这次也实验性用它来跑。 # 流程 ## Step 1. 下载 Caddy Caddy这个奇葩玩意儿搞了个自由选择包含组件的模式来减少体积,而且是直接通过Release页面下载对应的exe,大大减少了阴间的手动编译的麻烦。~~虽然说直接弄个Installer会更阳间~~。我们只要选中带WebDAV这一个组件然后下载就可以了。 ## Step 2. 配置 Caddy Caddy 的配置文件默认采用魔改 JSON 的格式。 如果直接在目录内运行,会默认读取同目录下的`caddyfile`文件。所以不考虑后台运行的话,可以直接命名成这个。 具体的内容类似于 ```json { order webdav before file_server } :14514 { basicauth { user1 } webdav { root E:/mydisk } } ``` 其中,密码的位置必须填通过自带命令hash的密码。 命令为:`caddy hash-password` 最上面的`order`不能省略。 这里配置可以参考插件的gayhub页面:https://github.com/mholt/caddy-webdav ## Step 3. 后台运行(注册服务) 这地方很坑。首先,官方通过`caddy start/stop`提供了后台运行选项。但是,`cmd`的机制是你把cmd窗口关了这个后台一样被kill。 其次,后台运行需要绝对路径,但无法自动访问绝对路径下的`caddyfile`文件名的配置文件(只能默认读当前的Workspace),所以必须手动指定。同时,光指定还不行,因为指定之后,`caddyfile`的默认读取规则变成了标准JSON,而不是默认的定制JSON。所以必然报错。这就必须再次指定配置文件格式的参数即`--adapter`。最终总的运行参数为:`start --config D:\caddy\caddyfile --adapter caddyfile` 那么最后就是把上面的命令注册为服务。 第一种是用`AlwaysUp`这个软件。 首先是添加,在`General`选项输入`Application`跟`Argument`。接下来`Startup`里勾选`Ensure that Windows Networking components have started`。 这样直接运行就可以了。 (Ref: https://www.coretechnologies.com/products/AlwaysUp/Apps/CaddyAsAWindowsService.html) 第二种就是正儿八经Windows Service。 管理员运行cmd。 `sc.exe create caddy start= auto binPath= "YOURPATH\caddy.exe run"` 运行就是`sc.exe start/stop caddy` 这个直接在`service.msc`就能看到和管理。 (Ref:https://caddyserver.com/docs/running#windows-service) # 后记 不得不说,无论是Caddy的官方文档,还是对应的WebDAV插件文档真的是一坨,没啥参考价值,至少相对NginX而言差得太远。而对应的搜索出来的参考文章就更是xjb写不知所云了。这也是我特地写一篇总结的原因。初步尝试一下,也许后面就直接用另一个现成的服务了:https://github.com/hacdias/webdav 标签: 无
你的文章让我学到了很多知识,非常感谢。http://www.17qiaojia.com
你的文章让我感受到了不一样的风景,谢谢分享。http://www.sandsnk.com
你的文章让我感受到了生活的美好,谢谢!http://www.wangquanli.com
你的文章让我感受到了生活的美好,谢谢!http://www.18181699.com
你的文章充满了创意,真是让人惊喜。http://www.wsesx.com