Linux Ubuntu 手动搭建webDav

1、安装

因为需要跟 zotero 进行交互,因此需要在服务器搭建一个webDav
以下是搭建步骤:

sudo apt-get update 
sudo apt-get install apache2

Ubuntu 安装apache2来实现

不同于Centos

安装好了之后,运行

a2enmod dav_fs
a2enmod dav

激活模块。

2、配置ports

进入到 /etc/apache2 目录下。修改port,使得它不跟nginx起冲突

Listen 后面加上自己要自定义的接口

3、生成密码

然后我们就要生成密码了:

htpasswd -c /etc/apache2/webdav.password 你的用户名

输入密码。

4、配置要暴露的文件路径

然后进入到 /etc/apache2/sites-available 目录下。

可以选择新建一个conf文件,也可以选择修改原来的 000-default.conf

<VirtualHost *:7080>ServerAdmin webmaster@localhostDocumentRoot /home/imp/edc_demo/webdavErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combinedDavLockDB "/var/DavLock"<Directory /home/imp/edc_demo/webdav/>DAV OnOptions Indexes MultiViewsAllowOverride NoneOrder allow,denyallow from all</Directory>Alias /webdav /home/imp/edc_demo/webdav<Location /webdav>DAV OnAuthType BasicAuthName "agile"AuthUserFile /var/passwd.davRequire valid-user</Location></VirtualHost>

解释一下上面的几个参数哈。

  • <VirtualHost *:7080>:代表监听的端口,也是之后要在浏览器输入的端口,这个端口和刚刚ports.conf里配的是同一个

  • ServerAdmin webmaster@localhost:设置管理员邮箱地址。

  • DocumentRoot /home/imp/edc_demo/webdav:指定网站的根目录。

  • ErrorLog ${APACHE_LOG_DIR}/error.log:指定错误日志文件的位置。

  • CustomLog ${APACHE_LOG_DIR}/access.log combined:设置访问日志的位置和格式。

  • DavLockDB "/var/DavLock":指定 WebDAV 的锁定数据库文件位置。

  • <Directory /home/imp/edc_demo/webdav/>:配置 /home/imp/edc_demo/webdav 目录的访问权限。

    • DAV On:启用 WebDAV 功能。

    • Options Indexes MultiViews:允许目录浏览和多视图。

    • AllowOverride None:禁止使用 .htaccess 文件覆盖配置。

    • Order allow,denyallow from all:控制访问权限,允许所有客户端访问此目录。

  • Alias /webdav /home/imp/edc_demo/webdav:创建别名 /webdav,指向 /home/imp/edc_demo/webdav 目录。

  • <Location /webdav>:针对 /webdav 路径的配置。

    • DAV On:启用 WebDAV 功能。

    • AuthType Basic:启用基本身份验证。

    • AuthName "agile":设置认证提示信息。

    • AuthUserFile /var/passwd.dav:指定用户名和密码的文件。

    • Require valid-user:要求用户进行验证后才能访问 /webdav 目录。

有点多,没事,我概括一下 

把 

             AuthName "agile"
             AuthUserFile /etc/apache2/webdav.password

改成 自己的用户名,把刚才生成的password文件的位置放进来。

         Alias /webdav /home/imp/edc_demo/webdav

后面改成你要暴露的linux 文件路径地址。

5、重启apache

sudo systemctl restart apache2

6、验证一下

打开浏览器输入 http://ip:host/webdav/

输入用户名密码

6、我写了一个脚本

我写了一个脚本。这个脚本可以在你搭建好这套之后,通过传入用户名、密码,自动创建一个账号,并且在 目录下 建一个 和用户同名的 文件夹

它分成2个部分

add_user.exp

#!/usr/bin/expect
set user [lindex $argv 0]
set password [lindex $argv 1]spawn sudo htpasswd -c /etc/apache2/webdav.password $userexpect "New password:"
send "$password\r"
expect "Re-type new password:"
send "$password\r"
interact

add_user.sh

#!/bin/bashuser=$1
password=$2# 创建文件夹
echo "创建文件夹 /home/imp/edc_demo/webdav/$user"
mkdir -p "/home/imp/edc_demo/webdav/$user"# 添加用户
echo "添加 $user 对应的webdav配置"
expect ./add_user.exp "$user" "$password"# 更新配置文件
file="/etc/apache2/sites-available/000-default.conf"
if grep -q "Location /webdav/$user\b" "$file"; thenecho "Location already exists in $file"
elsesed -i "/<\/VirtualHost>/ i\\
\\
\t<Location /webdav/$user>\\
\t\tDAV On\\
\t\tAuthType Basic\\
\t\tAuthName \"$user\"\\
\t\tAuthUserFile /etc/apache2/webdav.password\\
\t\tRequire valid-user\\
\t</Location>\\
" "$file"systemctl restart apache2
fiecho "添加用户成功!!!!"

使用的话,就是

./add_user.sh 用户名 密码

执行完这套之后,可以在浏览器里访问

http://ip:port/webdav/用户名,访问到这个用户才能访问到的文件夹。

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

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

相关文章

【视频笔记】古人智慧与修行

古人的智慧 相由心生、老子悟道、佛祖成佛 多一些思考&#xff0c;多一些精神修炼。 除非我们今天能够产生与人类科技发展相并行的精神变革&#xff0c;否则永远可能也无法跳脱出历史的轮回。 视频来源 曾仕强教授周易的智慧 太极两仪四象八卦 一生二&#xff0c;二生三&…

大数据机器学习深度解读决策树算法:技术全解与案例实战

大数据机器学习深度解读决策树算法&#xff1a;技术全解与案例实战 本文深入探讨了机器学习中的决策树算法&#xff0c;从基础概念到高级研究进展&#xff0c;再到实战案例应用&#xff0c;全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践&…

现代雷达车载应用——第2章 汽车雷达系统原理 2.5节 检测基础

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.5 检测基础 对于要测试目标是否存在的雷达测量&#xff0c;可以假定下列两个假设之一为真&#xff1a; •H0:—测量结果仅为噪声。 •H1:—测量是噪…

eNSP小实验(vlan和单臂路由)

一.vlan的划分 实验目的&#xff1a; ①pc1 只可以和pc2通信&#xff0c;不可以和pc3 pc4通信 ②pc1和pc2只能到Server1&#xff0c;pc3和pc4到Server2 1.拓扑图 2.配置 PC1-4 同理配置 SW1 <Huawei> <Huawei>u t m //关闭注释 Info: …

Nginx的location匹配和rewrite重写

一、location匹配 常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置 $ &#xff1a;匹配输入字符串的结束位置 * &#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”&#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll…

1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种?

本文是基于RocketMQ 4.9版本讲解 前置知识 为了帮助大家更好地理解这些消息底层的实现原理&#xff0c;这里我就通过三个问题来讲一讲RocketMQ最最基本的原理 1、生产者如何发送消息 在RocketMQ中有两个重要的角色 NameServer&#xff1a;就相当于一个注册中心 Broker&#xf…

批量生成标题文章:AI文章创作助力高效办公,提升办公效率

随着人工智能技术的不断发展&#xff0c;AI文章创作已经成为了高效办公的新趋势。这种技术可以快速生成高质量的文章&#xff0c;从而大大提高办公效率。相比传统的手写文章&#xff0c;AI文章创作具有更高的效率和准确性。在撰写文章时&#xff0c;往往要花费大量的时间和精力…

SpringBoot之视图渲染技术

前言 在Spring Boot中&#xff0c;视图渲染技术用于将动态数据渲染到用户界面&#xff0c;生成最终的HTML、XML、JSON等文档&#xff0c;以便将其返回给客户端浏览器 一.关于Freemarker 1.介绍 Freemarker是一个Java模板引擎&#xff0c;用于生成基于模板的动态内容。它是一…

有没有手机电脑同步的工作时间管理软件?

越来越多的职场人士感到每天的工作任务是比较多的&#xff0c;而工作时间又是有限的&#xff0c;所以经常时间不够用。因此&#xff0c;对于上班族来说&#xff0c;高效的时间管理是提高工作效率、按时完成任务的关键。为了满足这一需求&#xff0c;很多网友都在寻找一款既能在…

Leetcode 139.单词拆分

OJ链接 &#xff1a;139.单词拆分 代码&#xff1a; class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> set new HashSet<String>(wordDict);int n s.length();boolean[] dp new boolean[n1];dp[0] true;//初始…

Ant中a-select 下拉选择内容过多,滚动条,滚动定位偏移

1.绑定值为null,默认选项&#xff0c;会出现滚动问题&#xff0c;定位偏移&#xff0c;ant官网解释如下 getPopupContainer菜单渲染父节点。默认渲染到 body 上&#xff0c;如果你遇到菜单滚动定位问题&#xff0c;试试修改为滚动的区域&#xff0c;并相对其定位。Function(tr…

SpringBoot整合Kafka (一)

&#x1f4d1;前言 本文主要讲了SpringBoot整合Kafka文章⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#xff1a;努力一点&#xff0c;优秀一点 目录 文章目录 &…

【Python】计算最少排班人数(2)

接前一文章 部分关键代码及方法&#xff1a; 程序界面代码&#xff1a; winTk() win.config(bg#F2F2D7) win.geometry(550x440) win.title(最优排班计算器)frameFrame(win,width500,height60,bg#F2F2D7) frame.grid(row0,column0,columnspan5) l1Label(frame,text选择文件&a…

JetBrains2023年度报告,编程领域的风向标

前言 JetBrains是一家位于捷克的软件开发公司&#xff0c;有很多知名的开发IDE都是他们家的&#xff0c;比如IntelliJ IDEA、CLion、PyCharm、WebStorm等等&#xff0c;还有Kotlin编程语言也是JetBrains开发的&#xff0c;后来成为Android官方开发语言。 自2017年JetBrains发…

JVM之jmap java内存映射工具

jmap java内存映射工具 1、jmap jdk安装后会自带一些小工具&#xff0c;jmap命令(Memory Map for Java)是其中之一。主要用于打印指定Java进程(或核 心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照&#xff0c;从而可以离…

使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8

文章目录 前言版本差异说明替换方法parse_moedl( ) 方法_predict_once( ) 方法修改 yaml ,加载主干论文引用timm 是一个包含最先进计算机视觉模型、层、工具、优化器、调度器、数据加载器、数据增强和训练/评估脚本的库。 该库内置了 700 多个预训练模型,并且设计灵活易用。…

经典策略筛选-20231213

策略1&#xff1a; 龙头战法只做最强&#xff1a;国企改革 ----四川金顶 1、十日交易内出现 涨停或 &#xff08;涨幅大于7个点且量比大于3&#xff09; 2、JDK MACD RSI OBV LWR MTM 六指标共振 3、均线多头 4、 筹码峰 &#xff08;锁仓&#xff09; 5、现价> 五日均…

OkHttp: 拦截器和事件监听器

文章目录 1. 拦截器1. 拦截器链2. 实际案例1. 注册为应用拦截器2. 注册为网络拦截器 3. 如何选择用哪种拦截器1. 应用拦截器2. 网络层拦截器3. 重写请求4. 重写响应 4. 可用性 2. 事件监听器1. 请求的生命周期2. EventListener使用案例3. EventListener.Factory4. 调用失败的请…

【LeetCode】28. 找出字符串中第一个匹配项的下标 【字符串单模匹配:KMP算法】

题目链接 Python3 直觉解法 class Solution:def strStr(self, haystack: str, needle: str) -> int:pn, ph 0, 0n len(needle) h len(haystack)while ph < h:if haystack[ph] needle[pn]:if pn n-1: # 1234 123return ph - len(needle) 1else: pn 1ph 1else:…

【LeetCode刷题】-- 163.缺失的区间

163.缺失的区间 class Solution {public List<List<Integer>> findMissingRanges(int[] nums, int lower, int upper) {List<List<Integer>> res new ArrayList<>();for(int num : nums){if(lower < num){res.add(Arrays.asList(lower,num -…