如何在 Ubuntu 12.04 上使用 Apache 配置 WebDAV 访问

news2024/11/19 3:25:39

简介

WebDAV 是内置在 HTTP 中的分布式网络编辑实现,允许您轻松共享文件并与他人协作。

我们可以在 Web 服务器中安装此扩展,以允许通过 Web 浏览器远程读写访问本地文件。在本指南中,我们将在带有 Apache Web 服务器的 Ubuntu 12.04 VPS 上配置 WebDAV。

在 VPS 上安装 Apache


我们将通过使用 WebDAV 模块在 Apache 上建立我们的 WebDAV 实现。

首先,您需要从 Ubuntu 的默认存储库中安装 Apache。

sudo apt-get update
sudo apt-get install apache2

现在您已经安装了一个完全功能的 Web 服务器。通过在 Web 浏览器中导航到服务器的 IP 地址,应该已经可以访问它。

启用 WebDAV


Apache 内置支持 WebDAV,只需启用一些模块即可访问它们的功能。

使用以下两个命令启用 WebDAV 模块:

sudo a2enmod dav
sudo a2enmod dav_fs

现在我们需要重新启动服务器以实施更改:

sudo service apache2 restart

WebDAV 作为一个功能现在已经启用,但我们还没有为我们的服务器正确配置它。

创建文件系统


我们将创建一个目录,用于存放我们的 WebDAV 文件内容。

Ubuntu 上 Apache 服务器的默认文档根目录位于 /var/www。但是,我们将创建一个别名,这将允许我们将目录内容放在其他地方。

在本指南中,我们将把我们的 WebDAV 内容放在 /webdav/

sudo mkdir /webdav

将 web 用户(即 www-data)赋予新目录的所有权,以便它可以正确地提供内容:

sudo chown www-data /webdav

设置密码保护


我们可以通过创建一个 htpasswd 文件为访问目录内容创建身份验证过程。

我们将其放在内容目录之外,以便系统用户无法访问它。在命令调用中创建一个用户名,然后会提示您输入相关密码:

sudo htpasswd -c /etc/apache2/webdav.password <span class="highlight">用户名</span>

现在,任何人都可以在文件中查看用户名和哈希密码。我们将把文件的组所有权分配给 www-data,然后将其他人的权限锁定:

sudo chown root:www-data /etc/apache2/webdav.password
sudo chmod 640 /etc/apache2/webdav.password

配置 Apache


现在,我们将不得不配置对我们的内容目录的访问,并告诉 Apache 使用 WebDAV 模块来提供该位置。我们还必须注意我们创建的身份验证方案。

以 root 权限编辑主虚拟主机配置:

sudo nano /etc/apache2/sites-available/default

在这里,我们的 Web 内容像往常一样从 /var/www 提供。我们将添加一些信息,让 Apache 将我们新目录中的内容视为 WebDAV 材料。

在目录列表下面,我们将添加一个别名指令,告诉 Apache 请求 “/webdav” 应该从我们创建的 /webdav 目录中提供服务。

然后,我们将添加选项以允许使用我们建立的方法进行身份验证。

. . .
. . .
<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>

<span class="highlight">Alias /webdav /webdav</span>

<span class="highlight">&lt;Location /webdav&gt;</span>
	<span class="highlight">Options Indexes</span>
	<span class="highlight">DAV On</span>
	<span class="highlight">AuthType Basic</span>
	<span class="highlight">AuthName "webdav"</span>
	<span class="highlight">AuthUserFile /etc/apache2/webdav.password</span>
	<span class="highlight">Require valid-user</span>
<span class="highlight">&lt;/Location&gt;</span>
. . .
. . .

保存并关闭文件。

使用以下命令重新启动 Apache:

sudo service apache2 restart

测试结果


您可以首先在 Web 浏览器中测试配置的结果,然后在 WebDAV 客户端中进行测试。

Web 浏览器测试


要测试您的身份验证是否正常工作,请使用 Web 浏览器导航到服务器的 IP 地址或域名。

您应该会看到默认的 Apache index.html 文件:

Apache Default index

这证明了常规 Web 功能正在工作。

现在,导航到您的 IP 地址或域名,后面跟着 “/webdav”:

<span class="highlight">您的_IP地址或域名</span>/webdav

您应该会提示输入您之前设置的用户名和密码组合。之后,您应该会看到一个空的目录列表:

Empty WebDAV

我们目前在这里没有任何内容,但我们将能够通过使用 WebDAV 客户端访问相同的区域来改变这一点。

WebDEV 客户端测试


有许多 WebDAV 客户端,并且对 WebDAV 访问的支持已经内置在许多流行的文件管理器中。

为了简单起见,在本指南中,我们将使用一个名为 “cadaver” 的简单命令行 WebDAV 客户端。

最好是从另一个 droplet 或 Linux 机器上,从默认仓库安装 cadaver:

sudo apt-get install cadaver

现在,让我们创建一个文件,我们将上传到 WebDAV 目录:

cd ~
touch testfile

接下来,我们将使用与从浏览器访问相同的位置连接:

cadaver http://<span class="highlight">your_IP_address_or_domain</span>/webdav
服务器 `162.243.2.14` 上需要对 webdav 进行身份验证:
用户名:

您必须输入 “http://” 部分,以便 cadaver 正确找到您的服务器。我们需要再次进行身份验证,然后我们将进入一个命令行界面。

dav:/webdav/>

在这里,我们可以同时使用类似于常规 Linux 命令的命令来操作客户端和主机。

要列出服务器目录的内容,请输入:

ls

列出集合 `/webdav/`:集合为空。

该目录为空。让我们上传我们的测试文件来改变这种情况:

put testfile

我们可以再次尝试列表命令,看到文件现在在服务器上:

ls

列出集合 `/webdav/`:成功。 testfile 0 Sep 20 19:36

我们可以通过输入以下命令来创建一个目录并进入其中:

mkdir hello
cd hello

然后,我们可以通过输入以下命令来创建一个文件:

edit file.html

我们可以插入任何我们想要的内容:

<h1>你好!!!</h1>

完成后,我们可以输入 exit 来关闭连接:

exit

现在,如果我们回到我们的网络浏览器,我们所做的更改是可见的:

<span class="highlight">your_IP_address_or_domain</span>/webdav
WebDAV content

关闭目录列表


尽管目录列表对于查看 WebDAV 可用的文件非常有用,但通常情况下,特别是如果您将其用于实际的网络内容,关闭该列表会更有用。

如果您希望 Web 可访问部分的行为更像一个网站,而不是一个目录列表,从配置文件中删除 “Options Indexes” 行:

sudo nano /etc/apache2/sites-available/default
Alias /webdav /webdav

<Location /webdav>
	<span class="highlight">Options Indexes     ## 删除此行</span>
	DAV On
	AuthType Basic
	AuthName "webdav"
	AuthUserFile /etc/apache2/webdav.password
	Require valid-user
</Location>
. . .
. . .

重新启动 Apache 以使用您的更改:

sudo service apache2 restart

请记住,您需要创建常规的网页才能使其正确运行,比如一个 “index.html” 文件:

sudo nano /webdav/index.html

<h1>默认的 WebDAV 页面</h1>
<p>这是默认页面,目录列表已关闭</p>

保存并关闭文件。

当我们导航到主要的 WebDAV 目录时,该页面现在会显示,但编辑功能仍然可以在客户端上启用。

WebDAV landing page

结论


现在,您应该拥有一个完整的带有基本身份验证的 WebDAV 目录。如果您的目录包含绝对必须保密的内容,您可能希望在密码身份验证之上实现 SSL 解决方案。然而,这超出了本文的范围。

许多文件管理器和客户端可以无缝访问和修改 WebDAV 内容,就好像它是额外的本地存储一样。WebDAV 允许比传统可能的 HTTP 体验更加动态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql--创建数据库

一、创建一个数据库 “db_classes” mysql> create database db_classes; mysql> show databases; -------------------- | Database | -------------------- | db_classes | | information_schema | | mysql | | performance_schema | |…

PeLK: 大卷积核强势回归,高达101 × 101,提出了外围卷积

paper&#xff1a;https://arxiv.org/pdf/2403.07589 code&#xff1a;暂无 目录 0. 摘要 1. 引言 2. 相关工作 2.1. Large Kernel Convolutional Networks 2.2. Peripheral Vision for Machine Learning 3. 密集卷积优于条纹卷积 4. 参数高效的大核卷积神经网络 4.1. …

【Vue】如何使用Webpack实现打包操作

一、Webpack介绍 Webpack最主要的作用就是打包操作&#xff0c;由两个核心部分构成分别是“出口”与“入口”。wbepack是现在比较热门的打包工具了&#xff0c;它可以将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。说的直白一点&#xff0c;通过webpac…

ansible-playbook离线升级centos内核

目录 概述实践ansible目录结构关键代码执行效果 结束 概述 内核离线包官网下载地址如下&#xff1a; 地址 实践 ansible目录结构 如对 ansible 不熟悉&#xff0c;离线包下载有问题&#xff0c;请至此地址下载&#xff0c;按本文操作可直接使用。 相关文章链接如下 文章地…

Java基础_集合类_List

List Collection、List接口1、继承结构2、方法 Collection实现类1、继承结构2、相关类&#xff08;1&#xff09;AbstractCollection&#xff08;2&#xff09;AbstractListAbstractSequentialList&#xff08;子类&#xff09; 其它接口RandomAccess【java.util】Cloneable【j…

Android Studio gradle 默认sourceSets配置

一. AS默认的sourceSets配置 sourceSets在Android插件中如何使用的&#xff1a;android {sourceSets {main {manifest.srcFile AndroidManifest.xmljava.srcDirs [src]resources.srcDirs [src]aidl.srcDirs [src]renderscript.srcDirs [src]res.srcDirs [res]assets.srcD…

企业智能名片小程序:AI智能跟进功能助力精准营销新篇章

在数字化浪潮的推动下&#xff0c;企业营销手段不断迭代升级。如今&#xff0c;一款集手机号授权自动获取、智能提醒、访客AI智能跟进及客户画像与行为记录于一体的企业智能名片小程序&#xff0c;正以其强大的AI智能跟进功能&#xff0c;助力企业开启精准营销的新篇章。 通过深…

STM32用HAL库函数实现硬件IIC

/*出处&#xff1a;【STM32入门教程-2024】第12集 IIC通信与温湿度传感器AHT20(DHT20)_哔哩哔哩_bilibili */ 这篇笔记我主要介绍代码实现&#xff0c;想要了解原理的请自己看视频&#xff0c;我不过多赘述了。 AHT20通信数据帧格式&#xff1a; ①对照手册上的通信流程写初…

政安晨:【Keras机器学习示例演绎】(二十)—— 综合梯度的模型可解释性

目录 综合梯度 设置 综合梯度算法 可视化渐变和集成渐变的辅助类 让我们试一试 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c…

debian配置BIND DNS服务器

前言 局域网内有很多台主机&#xff0c;IP难以记忆。 而修改hosts文件又难以做到配置共享和统一&#xff0c;需要一台内网的DNS服务器。 效果展示 这里添加了一个域名hello.dog&#xff0c;将其指向为192.168.1.100。 同时&#xff0c;外网的域名不会受到影响&#xff0c;…

实验8 NAT配置

实验8 NAT配置 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置五、 实验步骤2.静态NAT配置3.NAT Outbound配置4.NAT Easy-IP配置 一、 原理描述 2019年11月26日&#xff0c;全球43亿个IPv4地址正式耗尽&#xff0c;这意味着没有更多的IPv4地址可…

Java 网络编程之TCP(五):分析服务端注册OP_WRITE写数据的各种场景(二)

接上文 二、注册OP_WRITE写数据 服务端代码&#xff1a; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.S…

STM32H750外设之ADC开关控制功能介绍

目录 概述 1 ADC开关控制介绍 2 开关控制功能流程 2.1 软件使能ADC 的流程 2.2 软件禁止 ADC 的流程 3 相关寄存器 3.1 ADCx_ISR 3.2 ADCx_CR 4 使能/禁止ADC流程图 ​5 写入 ADC 控制位时的限制 概述 本文介绍STM32H750外设之ADC开关控制功能&#xff0c;该功能是…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件&#xff0c;专注研发项目管理&#xff0c;内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能&#xff0c;完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…

每日OJ题_DFS回溯剪枝⑧_力扣494. 目标和

目录 力扣494. 目标和 解析代码&#xff08;path设置成全局&#xff09; 解析代码&#xff08;path设置全局&#xff09; 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联…

“无媒体,不活动”,这句话怎么理解?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 “无媒体&#xff0c;不活动”通常指的是在现代社会中&#xff0c;媒体对于各种活动&#xff0c;尤其是公共活动和事件的推广、宣传和影响力是至关重要的。它强调了媒体在塑造公众意识、…

【Redis 开发】(Feed流的模式,GEO数据结构,BitMap,HyperLogLog)

Redis FeedTimeline GEOBitMapHyperLogLog Feed Feed流产品有两种常见模式: Timeline:不做内容筛选&#xff0c;简单的按照内容发布时间排序&#xff0c;常用于好友或关注。例如朋友圈 优点:信息全面&#xff0c;不会有缺失。并且实现也相对简单 缺点:信息噪音较多&#xff0c…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期&#xff0c;云和恩墨 zData X 多元数据库一体机&#xff08;以下简称 zData X&#xff09;在某证券公司的OA、短信和CRM业务系统中成功上线&#xff0c;标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

【VBA】获取指定目录下的Excel文件,并合并所有excel中的内容。

1.新建一个excel表格。并创建两个Sheet&#xff0c;名字分别命名为FileList 和 All information。 2.按ALTF11进入 VBA编程模块&#xff0c;插入模块。 3.将如下 第五部分代码复制到模块中。 点击运行即可&#xff0c;然后就能提取指定目录下的所有excel文件信息并合并到一起…

2021东北四省赛补题/个人题解

Dashboard - The 15th Chinese Northeast Collegiate Programming Contest - Codeforces I 模拟 #include <bits/stdc.h> using i64 long long; using namespace std; #define int long long int mp[8] {0, 7, 27, 41, 49, 63, 78, 108}; void solve() {int n; cin …