关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto

搭建自己的webdav网盘服务器

前因

这次折腾webdav服务器的原因主要有两点:
第一限于国内各家网盘都必须配合会员才能正常食用(没有会员加持的情况下某度的几k每秒了解一下 :-o 
第二就是相比某度之类的不支持webdav协议的网盘来看,webdav协议的服务器可以直接在WindowsMacAndroid以及IOS下原生挂载作为存储用的网络硬盘,说白了就是在有网的情况下,这个网盘就像你的本地磁盘一样,打开我的电脑就可以进行操作,比如对文件的复制粘贴以及office文档表格直接打开修改都和在本地的操作一样,而不用像其他度盘之类的先要下载客户端,或者就是通过登录web端进项操作。

开干

首先声明:这次搭建的环境是基于Ubuntu 18.04,以Apache作为web端管理

安装Apache 2

Apache 2的安装以及ssl的配置参见我的这篇文章

启用webdav模块

sudo a2enmod dav_fs
sudo a2enmod dav

创建一个访问路径

mkdir /var/www/joynaruto    //"joynaruto"为你的访问文件夹名称
chmod www-data:www-data /var/www/joynaruto

创建密码文件并创建用户”admin”

htpasswd -c /etc/apache2/pass.wd admin    //具体路径、admin以及pass.wd都可以自定义

这里会提示你输入密码并确认,新用户admin就创建好了

注意一下
这里创建的的admin账号和系统中创立的其他账号没有关系,是独立开来的


如果后续还要建立其他用户,使用-b即可,例如建立一个名为tmm的用户,则使用htpasswd -b /etc/apache2/pass.wd tmm "对应密码"即可

授予密码文件相应权限

chown -R www-data:www-data /etc/apache2/pass.wd   //授权密码目录给Apache
chmod 640 /etc/apache2/pass.wd   //设置密码文件读写权限

改写Apache的配置文件

http访问

/etc/apache2/sites-available/000-default.conf中加入如下代码:

<VirtualHost *:80>   //如果要使用其他端口,可以修改,不过别忘了在ports.conf也添加监听

Alias /joynaruto  /var/www/joynaruto  //自定义文件路径别名

<Location /joynaruto>   //自定义的别名
  Options Indexes
  Dav On
  Authtype Basic
  AuthName "joyaruto"   //自定义的别名
  AuthUserFile /etc/apache2/pass.wd   //密码文件所在路径
  Require valid-user
</Location>

</VirtualHost>

https访问

/etc/apache2/sites-available/default-ssl.conf中加入如下代码:

<VirtualHost *:443>  //参见上述http配置
		ServerAdmin webmaster@localhost
		ServerName xxx.com   //自己的域名

		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined

		SSLEngine on
		SSLCertificateFile	/etc/apache2/ssl/xxx.crt  //主证书
		SSLCertificateKeyFile /etc/apache2/ssl/xxx.key    //密钥证书
		SSLCertificateChainFile /etc/apache2/ssl/xxx.crt  //中间证书

Alias /joynaruto  /var/www/joynaruto   //同上述http配置

<Location /joynaruto>   
  Options Indexes
  Dav On
  Authtype Basic
  AuthName "joynaruto"
  AuthUserFile /etc/apache2/pass.wd
  Require valid-user
</Location>

</VirtualHost>

</IfModule>

最后重启Apache服务后,就可以通过http(s)://域名:端口号/别名来进行访问,如果访问不了记得防火墙放行相应端口~

挂载

完成部署后就要开始挂载,前面提到Windows、Mac、Android以及IOS都可以原生挂载,我主力是win和Android,所以下面就简单说下这俩平台挂载方法:

Windows(2个坑)

坑1:在默认情况下,Windows只支持http访问,如果要开启https访问,可以通过修改注册表下的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\ParametersBasicAuthLevel为2,就可开启https访问,最后通过下方命令重启webdav服务即可

net stop webclient
net start webclient

坑2:在默认情况下,Windows原生挂载webdav后,只支持最大50M的读写,也就是说如果打开或者编辑一个超过50M的文件就会提示”文件超过限制大小”,无法访问编辑。我们可以通过修改注册表\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\ParametersFileSizeLimitInBytes值改为十进制的”4294967295″即可从原来的50M修改为4G

Android

我的主力机是Google Pixel 2XL ,这里我使用的是Solid Explore作为挂载软件(因为他的界面真的是我的菜),点击添加照着提示输入域名端口号以及账密之类的就可以顺利挂载了,这里没啥特别注意的点。

后续

我试着传了几个文件测了个速,速度都可以跑满我家的上下行带宽,效果非常理想。另我原来主要通过winscp这款软件来作为我电脑和vps的传输,以前传输协议选的是默认的”SFTP”协议,传些小文件还好,但一旦传输大文件就很吃力了,速度十分不稳定。这次在winscp中选择”Webdav”传输协议后,速度以肉眼可见的加快,而且十分稳定。如果碰到有些文件夹无权限访问的话,用chmod改下权限即可!

发表回复

textsms
account_circle
email

Joynaruto

搭建自己的webdav网盘服务器
前因 这次折腾webdav服务器的原因主要有两点: 第一限于国内各家网盘都必须配合会员才能正常食用(没有会员加持的情况下某度的几k每秒了解一下 :-o  第二就是相比某度之类的不支持webda…
扫描二维码继续阅读
2020-02-19