Ubuntu 安装配置 WebDAV 服务指南
在 Ubuntu 上使用 Apache 搭建 WebDAV 服务是一个成熟且可靠的方案,整个过程主要包括安装 Apache、启用 WebDAV 模块、配置虚拟主机、设置用户认证,以及为安全起见配置 HTTPS 加密。
下面是详细的步骤指南,以 Ubuntu 22.04/24.04 LTS 和 Apache2 为例。
第一步:安装 Apache 并启用必要模块
首先,更新软件包索引并安装 Apache。之后,启用 dav 和 dav_fs 这两个核心模块,它们是 Apache 支持 WebDAV 功能的基础。
# 1. 更新系统并安装 Apache
sudo apt update
sudo apt install apache2 apache2-utils -y
# 2. 启用 WebDAV 相关模块
sudo a2enmod dav
sudo a2enmod dav_fs
# 3. 重启 Apache 使模块生效
sudo systemctl restart apache2
如果出现 80 端口被占用,采取以下办法查找占用进程:
# 方法一:使用 ss 命令(推荐)
sudo ss -tulpn | grep :80
# 方法二:使用 netstat
sudo netstat -tulpn | grep :80
# 方法三:使用 lsof
sudo lsof -i :80
根据占用进程采取相应措施
情况 A:端口被另一个 Apache 进程占用
这说明之前可能已经有一个 Apache 实例在运行,但 systemd 未正确跟踪。可以先尝试强制停止它:
# 停止所有 Apache 进程
sudo systemctl stop apache2
# 如果上面命令无效,可以强制终止所有 apache2 进程
sudo pkill -9 apache2
# 然后重新启动
sudo systemctl start apache2
如果仍然失败,检查是否有残留的 httpd 进程(某些发行版可能使用 httpd 名称):
sudo pkill -9 httpd
sudo systemctl restart apache2
情况 B:端口被 nginx 或其他 Web 服务器占用
如果显示是 nginx,你可以选择停止它,让 Apache 接管 80 端口:
# 停止 nginx
sudo systemctl stop nginx
# 如果需要完全禁止 nginx 开机自启,可以执行:
sudo systemctl disable nginx
然后重新启动 Apache:
sudo systemctl restart apache2
情况 C:没有其他 Web 服务,但端口仍被占用
可能是其他程序意外占用了 80 端口,比如某些开发工具或服务。此时可以查看是哪个程序(例如 python、node 等),并根据情况停止它。
情况C:Apache 被重复监听
如果你修改过 Apache 的监听端口配置(如 /etc/apache2/ports.conf),确保其中没有重复的 Listen 80 指令。正常情况下,ports.conf 中只有一行 Listen 80(或 Listen 8080 等)。
检查该文件:
cat /etc/apache2/ports.conf
如果发现有重复,注释掉多余的 Listen 行,然后重试。
情况D:如果端口冲突无法立即解决,可临时更改 Apache 端口
如果你不想停止其他 Web 服务,也可以修改 Apache 监听其他端口(例如 8080),然后通过 http://your-server-ip:8080 访问。
编辑 /etc/apache2/ports.conf:
sudo nano /etc/apache2/ports.conf
将 Listen 80 改为 Listen 8080。
然后检查你创建的虚拟主机配置(如 /etc/apache2/sites-available/webdav.conf)中 <VirtualHost :80> 也要改为 <VirtualHost :8080>,或者直接使用 <VirtualHost :> 匹配所有端口。修改后重新加载 Apache:
sudo systemctl restart apache2
验证 Apache 是否成功启动
启动后,运行以下命令查看状态:
sudo systemctl status apache2
如果显示 active (running),说明已成功。接着可以用浏览器访问 http://your-server-ip(或你设置的端口)测试是否正常显示 Apache 默认页面(或你的 WebDAV 页面)。
第二步:创建 WebDAV 共享目录并设置权限
创建一个目录用于存放你希望通过 WebDAV 共享的文件,并将该目录的所有权交给 Apache 的运行用户(通常是 www-data),以确保 Web 服务器有权限读写文件。
# 1. 创建共享目录(你可以根据需要修改路径)
sudo mkdir -p /var/www/webdav
# 2. 将目录的所有者改为 www-data
sudo chown www-data:www-data /var/www/webdav
# 3. 设置目录权限为 755
sudo chmod 755 /var/www/webdav
第三步:配置 Apache 虚拟主机
接下来,你需要为 WebDAV 服务创建一个 Apache 配置文件。这通常是在 /etc/apache2/sites-available/ 目录下新建一个配置文件。
# 创建并编辑配置文件
sudo nano /etc/apache2/sites-available/webdav.conf
将以下配置内容粘贴到文件中。请根据你的实际情况,将 ServerName 后的 webdav.yourdomain.com 替换为你的服务器 IP 地址或域名。
# /etc/apache2/sites-available/webdav.conf
<VirtualHost *:80>
# 请将此处的域名或IP替换为你自己的
ServerName webdav.yourdomain.com
DocumentRoot /var/www/webdav
<Directory /var/www/webdav>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# WebDAV 主配置区
<Location />
DAV On
# 启用基本认证
AuthType Basic
AuthName "WebDAV Server - Please Login"
# 用户密码文件的存放路径
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>
# 日志配置(便于排错)
ErrorLog ${APACHE_LOG_DIR}/webdav_error.log
CustomLog ${APACHE_LOG_DIR}/webdav_access.log combined
</VirtualHost>
配置完成后,启用这个新站点并禁用默认站点,然后检查配置是否有语法错误。
# 1. 启用新站点
sudo a2ensite webdav.conf
# 2. 禁用默认站点(可选)
sudo a2dissite 000-default.conf
# 3. 检查配置文件语法
sudo apache2ctl configtest
# 如果看到 "Syntax OK",则重启 Apache
sudo systemctl restart apache2
第四步:设置用户认证
WebDAV 服务需要用户名和密码才能访问。使用 htpasswd 工具创建用户密码文件。执行以下命令,系统会提示你输入并确认密码。
# 创建一个新用户,例如 "alice"
# -c 参数表示创建新文件,仅在第一次添加用户时使用
sudo htpasswd -c /etc/apache2/.htpasswd alice
# 添加更多用户时,不要使用 -c 参数,否则会覆盖之前的文件
# sudo htpasswd /etc/apache2/.htpasswd bob
安全提示:为确保认证文件的安全,建议将其权限设置为只有 root 可读写。
sudo chmod 640 /etc/apache2/.htpasswd
sudo chown root:www-data /etc/apache2/.htpasswd
第五步:启用 HTTPS 加密(强烈推荐)
由于 HTTP 协议以明文传输数据,包括你的密码,因此在公网环境中使用存在巨大的安全风险。启用 HTTPS 加密是生产环境中必须执行的一步。
最简便的方法是使用 certbot 自动获取并配置 Let‘s Encrypt 的免费 SSL 证书。
# 1. 安装 certbot 和 Apache 插件
sudo apt install certbot python3-certbot-apache -y
# 2. 运行 certbot,它会自动检测并为你配置好 HTTPS
# 运行后,根据提示输入你的邮箱,并选择需要配置的域名(即 webdav.yourdomain.com)
sudo certbot --apache
完成此步骤后,你将可以通过 https://webdav.yourdomain.com 安全地访问你的 WebDAV 服务了。
第六步:客户端挂载与使用
作为客户端(访问别人的 WebDAV)
如果你的目的是挂载别人提供的 WebDAV 服务,可以参考以下步骤。
# 1. 安装 davfs2 客户端
sudo apt install davfs2 -y
# 2. 将当前用户添加到 davfs2 组,以便非 root 用户也能挂载
sudo usermod -aG davfs2 $USER
# 需要重新登录才能使组权限生效
# 3. 创建本地挂载点
mkdir ~/webdav-mount
# 4. 创建并配置认证文件(可选,用于自动登录)
# 注意:将下面的 URL、用户名和密码替换成你自己的
echo "https://webdav.yourdomain.com your_username your_password" >> ~/.davfs2/secrets
chmod 600 ~/.davfs2/secrets
# 5. 挂载 WebDAV 服务到本地目录
mount -t davfs https://webdav.yourdomain.com ~/webdav-mount
挂载成功后,你就可以像操作本地文件夹一样,通过 ~/webdav-mount 目录来访问和管理远程文件了。
常见问题与解决思路
连接后无法上传文件
检查共享目录(如
/var/www/webdav)的权限是否正确,它应该属于www-data 用户。
忘记密码或需要修改密码
使用
htpasswd命令重新设置即可sudo htpasswd /etc/apache2/.htpasswd username。
davfs2 挂载失败,提示“权限不足”
确保当前用户在
davfs2 用户组中,并且认证文件~/.davfs2/secrets 的权限是 600。
移动端(如 iPhone)无法连接
确保服务器已配置并强制使用 HTTPS。iOS 的文件应用要求 WebDAV 连接必须是安全的(SSL/TLS)。