使用Apache搭建WebDav服务

AI大语言模型

安装Apache:

sudo apt install apache2 apache2-utils

启用所需模块:

sudo a2enmod dav
sudo a2enmod dav_fs
sudo a2enmod ssl
sudo a2enmod auth_digest

创建用于登录WebDav的用户:

sudo htpasswd -c /etc/apache2/webdav.password username

WebDav目录添加Apache运行用户权限:

sudo chown -R www-data:www-data /webdav-dir

为了方便管理上传的文件,将系统用户添加到www-data组:

sudo usermod -a -G www-data 你的用户名

如果系统用户需要写入权限,为WebDav目录添加用户组写权限:

sudo chmod -R g+w /webdav-dir

测试WebDav目录权限:

sudo -u www-data ls /webdav-dir

创建配置文件:

sudo vi /etc/apache2/sites-available/webdav.conf

内容如下:

<VirtualHost *:80>
	# 将访问路径 /webdav 映射到服务器目录 /webdav-dir
	# 访问 http://example.com/webdav实际访问的是 /webdav-dir 目录
	Alias /webdav /webdav-dir

	<Directory /webdav-dir>
		DAV On # 允许对该目录进行 WebDAV 操作
		AllowOverride None # 不允许目录中的 .htaccess 文件覆盖这里的配置
		Options Indexes # 当目录中没有索引文件(如 index.html)时,显示文件列表
		DirectoryIndex disabled # 禁用默认索引文件
		php_admin_flag engine off # 禁用PHP模块在这个目录生效
		
		# 使用 HTTP Basic 认证
		AuthType Basic
		AuthName "My WebDAV" # 弹出认证对话框时显示的名称
		AuthUserFile /etc/apache2/webdav.password # 密码文件路径
		Require valid-user # 必须登录才能访问
	</Directory>
</VirtualHost>

其中需要注意DirectoryIndex disabled,如果没有这一行,当目录中包含index.html或index.php等索引文件时,客户端在列出该目录时就会返回405错误。

如果需要SSL安全访问,可创建配置文件webdav-ssl.conf:

sudo vi /etc/apache2/sites-available/webdav-ssl.conf

配置内容如下:

<VirtualHost *:443>
	Alias /webdav /webdav-dir

	# 配置SSL证书
	SSLEngine On
	SSLCertificateFile /etc/ssl/certs/webdav.pem
	SSLCertificateKeyFile /etc/ssl/private/webdav-key.pem

	<Directory /webdav-dir>
		DAV On
		AllowOverride None
		Options Indexes
		DirectoryIndex disabled
		php_admin_flag engine off
		
		AuthType Basic
		AuthName "My WebDAV"
		AuthUserFile /etc/apache2/webdav.password
		Require valid-user
	</Directory>
</VirtualHost>

注意其中的证书路径,根据实际情况填写。本地调试安装SSL证书启用HTTPS访问

检测配置是否正确:

sudo apache2ctl configtest

返回Syntax OK则说明一切正常。

创建符号链接:

sudo a2ensite webdav.conf

以上命令相当于:

ln -s /etc/apache2/sites-available/webdav.conf \
/etc/apache2/sites-enabled/webdav.conf

sites-available目录存放可用的站点配置文件,sites-enabled目录存放已启用的站点配置文件,通常是指向sites-available中对应配置文件的符号链接。

只有当创建新的配置文件,且需要启用时,才需要执行a2ensite。

同样的,需要创建webdav-ssl.conf的符号链接:

sudo a2ensite webdav-ssl.conf

重载配置:

sudo systemctl reload apache2

如果需要重启Apache服务,使用命令:

sudo systemctl restart apache2

如果已有相同端口、相同域名的配置文件,可能会引起冲突,则需要合并相关配置到同一个文件中。

AI大语言模型