webdav软件_记录我曲折的webDav配置之路(Windows篇)
阿帕奇,永远滴神!
承接macbook篇,这次配置我⾃⼰的笔记本电脑(win7系统)的webdav服务器虽然也花了两天,但我认为在windows上配置还是相对更友好的,花的时间多主要是我⾛了弯路。
好在最后还是成功了,⼼⾥⼀块⼤⽯头落了地,现在的成果可以让我最后不⾄于交不了差。
1、配置windows版webdav路上的坑
百度“windows7 配置 webdav”,出来最多的结果肯定是让你启⽤IIS功能的。毕竟是系统⾃带的功能,兼容性最好对吧?
win7创建webdav - 百⾥孤坟 - 博客园w wwblogs
然⽽IIS完美诠释了什么叫“微软出品,必属淘汰品”。
如何解决这个问题,百度肯定能得到各类⽜⿁蛇神的答案。⼤致有什么你的系统不是正版啦,你应该开启⼀些权限啦,你要调低UAC的等级啦。在众多⽅案中我基于我的本本可能缺失了⼀些组件的猜测,选择了下载Microsoft Web Platform Installer的⽅案。
Microsoft Web Platform Installer 2.0 Beta d ownload.pchome
然⽽史⼀般的体验告诉我,我不应该再在这个问题上纠结下去了。
我误打误撞到了⼀篇吐槽的帖⼦,(V2EX?有点熟欸?我想起来了配置macbook的时候我也过这上⾯的吐槽贴。)
www.v2ex/t/598070w ww.v2ex
成功⼈⼠的博⽂永远是顺顺利利的,有时只有吐槽贴才能给钻⽜⾓尖的你指条明路。
帖⼦⾥有提到另外两种⼯具:nextcloud和caddy。我先搜了nextcloud,吹的很好但是始终绕不开Linux,可是我已经没时间研究换Linux 系统了。于是⼜去看了caddy。
⼏乎所有的教程都推荐官⽅⽹站去下载,我⼀看官⽹还挺好的,适配系统,要什么插件⾃⼰选。
Download Caddy c addyserver
linux系统安装步骤csdn但是下载下来之后就是不能⽤,只闪退。
后来⼜了⼀个github的版本,这个下载下来居然是能⽤的,打开之后命令⾏界⾯⼀直停着,根据教程也能出现404页⾯。
github/caddyserver/caddy g ithub
不是吧,v2还没v1好⽤?
⽤v1呗?可是⾥⾯没说加了webdav插件啊?
那之后再加?搜索加载插件的⽅法,最多的答案是从官⽹下载的时候就勾选好插件。
这,这,这……第⼀天就这么过去了。
2、再会apache
晚上在家的时候我就在想,我本本上需要的不过是⼀个服务器架设软件。caddy提供的功能如此,nextcloud提供的是如此,那什么可道云、晖,也是如此。
那可不可以⽤apache来做?它不⾄于不做windows版本,⽽且也不⾄于windows版本就把webdav这些东西去掉。
Windows下配置Apache服务器 - 航⾏ - 博客园w wwblogs
第⼆天,apache的配置过程异常简单。毕竟只要下载⼀个安装包,修改⽂件的过程也是在macbook上实操过的。windows启动apache更简单明了,可以直接去服务列表启动。
不过⼆者的f⽂件确实有略微差别。
再搜索⼀篇配置webdav的帖⼦。
Apache 2.2.x 配置WebDAV w ww.yiibai
为了保持⼀致性,我把webdav服务器搬到了htdocs⽂件夹下⾯,作为apache服务器的⼦⽬录。上传⽂件的位置⾃然也是uploads。
另外需要注意的是⽤cmd执⾏htdigest -c "%APACHE_INSTALLED_PATH%/user.passwd" DAV-upload admin命令前,需要把⽬录先cd到apache⽂件夹下的bin⽂件夹位置,不然会反馈不到这个命令。看来bin⽂件夹⾥有很多功能⽂件。
博⽂推荐的BitKinex⼀点也不含糊,很顺利地完成了测试webdav服务器的功能。可以在win7本本上访问127.0.0.1/uploads⽂件夹了。
3、恼⼈的405
我没有急着拆包⽹购的路由器,先⽤⼿机热点使macbook和win7本本联⽹。然后试着访问,查到win7的对外IP地址(当然是⾃动分配的浮动ip),改成该ip下的uploads⽂件夹,⽤macbook上的浏览器可以访问成功!
这表明服务器搭建ok,是可以通过联⽹访问的。
不过代码改完ip之后,⽤ipad模拟器测试,上传还是失败,提⽰:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed using AFNetworking stackoverflow
把3840这个error修复掉其实有很多种⽅法,stackoverflow⾥介绍可能的是返回数据⾥存在较多Fragments,建议⽤NSJSONReadingAllowFragments修复。但我推测更可能的原因是windows搭建的webdav服务器并没有返回JSON格式的数据,所以⽤
也会报3840的错误。
如果按视频教程的⽅法设置sponseSerializer为AFHTTPRequestSerializer可能更好⼀点。反正我的⽬的是⽤PUT⽅法上传⽂件即可,拿到服务器返回的⼆进制数据也不需要解析。
但接下来的报错就很⿇烦了:
Error Domain=AFNetworkingErrorDomain Code=-1011 “Request failed: method not allowed (405)”
method not allowed,PUT⽅法不被接受!?我配置好了webdav呀!macbook更新系统后也运⾏的好好的呀。
看来,其中还是存在⼀些问题,介于搜到的⼤多数答案都认为是服务器的问题,我拿BitKinex试了下直接拖拽上传到uploads,果不其然地报错了。也是put⽅式不被接受,服务器返回数据⾥明确指出了允许的⽅法包含GET POST OPTIONS HEAD等,但是没有PUT和DELETE
怎么让apache重新⽀持PUT⽅法?中⽂博客⼤多让你改f⽂件,
其中有⼀段
<Directory "/var/www/html/doc">
Dav On
AllowOverride None
Options All
Order allow,deny
Allow from all
</Directory>
只要加上Order allow,deny或者Allow from all
开启apache服务时就会报错,如果不加,则没有任何效果,还是不⽀持PUT。
⼀些建议我去看⽂档的,⽐如增加
<LimitExcept GET OPTIONS>
require user admin
</LimitExcept>
之类的,也没有任何效果。(这东西f⾥没有,但f⾥有,不过我在GET后⾯加了POST也没啥效果)stackoverflow没啥有营养的东西,⽐如这篇
How to enable and use HTTP PUT and DELETE with Apache2 and PHP?s tackoverflow
就是让你放弃PUT,采⽤更安全的编写⽹络端php脚本的⽅式⽤POST实现上传。
没啥意义,PUT安不安全不是我现阶段考虑的事。
后来我到了⼀篇可能是众多⽅案⽼祖宗的博⽂。
上传⽂件之PUT⽅法上传(服务器配置不当)_千寻的博客-CSDN博客_put上传⽂件b log.csdn
它提到Directory代码块⾥⾯,只需要添加⼀句DAV On即可。
但我的apache版本⾥除了Require all granted和AllowOverride None,其它都没有。
试试把这⼀句添加到最后,其它不管?
重新启⽤apache服务,成功!使⽤BitKinex拖拽上传,成功!
(开启⽂件锁那⼀步我没删,估计也是起到作⽤的)
最后⽤模拟器调试代码,也成功了!
成功了!
真的成功了!
我掏出⽹购的路由器,设置好⽆线⽹络。再连接win7本本和macbook,貌似会⾃动给我俩机⼦分配192.168.1.102开始往后的ip地址。之后的测试跟前⾯⼀样,也很顺利。看来我的app离完成不远了。
阿帕奇,永远滴神!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。