另一种在ARM/x86架构处理器上部署WebDAV服务器的方法

news2024/9/23 7:26:25

引言

最近搞了个矿渣,处理器是国产的RK3328,四核A53架构,64位的,性能太好了,装了个OpenWRT,想用来当nas用,但是我发现,竟然没有合适的文件服务器,局域网内用SMB确实可以,但是这玩意儿不能放到公网上用,FTP又有点老,不太好用,就想着搞个WebDAV的服务器,但是网上在OpenWRT上配WebDAV要么是用lighttpd,要么是用apache,感觉都比较复杂,关键是这些框架都不是专为WebDAV服务的,只是用了他们里面的一个mod,要使用mod就需要把整个框架的基础配置完,综上,我找了半天,找了个单独的WebDAV服务器。

链接在这里:https://github.com/hacdias/webdav

这个服务器是一个用Go语言写的应用程序,并不是专为OpenWRT开发的,但是鉴于我们使用的是ARM64架构,他有编译,所以刚好可以在OpenWRT上运行,x86同理。

ARM64应用

配置文件

下面的代码请保存为config.yaml,这是服务器的配置文件。

# Server related settings
address: 0.0.0.0
port: 0
auth: true
tls: false
cert: cert.pem
key: key.pem
prefix: /
debug: false

# Default user settings (will be merged)
scope: .
modify: true
rules: []

# CORS configuration
cors:
  enabled: true
  credentials: true
  allowed_headers:
    - Depth
  allowed_hosts:
    - http://localhost:8080
  allowed_methods:
    - GET
  exposed_headers:
    - Content-Length
    - Content-Range

users:
  - username: admin
    password: admin
    scope: /a/different/path
  - username: encrypted
    password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
  - username: "{env}ENV_USERNAME"
    password: "{env}ENV_PASSWORD"
  - username: basic
    password: basic
    modify:   false
    rules:
      - regex: false
        allow: false
        path: /some/file
      - path: /public/access/
        modify: true

上述配置文件中,users下的usernamepassword有四组,请将下面三组删去,只留下第一组;

users下的scope表示WebDAV服务器的根目录地址,如果你插了个硬盘,这里可以填硬盘挂载点,例如\mnt\sda1

address表示服务器地址,这里保持0.0.0.0不变即可;

port表示监听端口,这里是WebDAV服务器的端口,你可以选一个你喜欢的端口,比如1234

tls表示是否使用下面certkey指定的证书,false表示不使用证书。

如何启动

完成上述配置后,你就可以启动服务器试试看了,请切换到服务器应用所在路径,将上述配置文件放在应用一起,然后运行下面的命令:

./webdav -c ./config.yaml

你会看到服务器出现了一些信息,使用你的WebDAV客户端试试看吧,用户名和密码就是上面配置文件里的usernamepassword所指定的内容。

OpenWRT添加开机启动

当然了,到了这里只是把程序打开了,如何让他随着机器一起启动呢,需要用到OpenWRT的服务机制。

使用WinSCP连接路由器后台,切换到/etc/init.d目录,在这下面新建一个名为webdav的文件,填入以下内容:

#!/bin/sh /etc/rc.common

START=99
STOP=10

USE_PROCD=1

NAME="webdav"
WEBDAV_BIN="/usr/share/webdav/webdav"
WEBDAV_CONF="/usr/share/webdav/config.yaml"
WEBDAV_LOGFILE="/tmp/webdav.log"
WEBDAV_PID="/var/run/webdav.pid"

start_service() {
	stop
	
	config_load webdav
	local webdav_enable
	config_get_bool webdav_enable webdav enabled
	if [ "$webdav_enable" -eq 1 ]; then
		nohup $WEBDAV_BIN -c $WEBDAV_CONF >$WEBDAV_LOGFILE 2>&1 & echo $! >WEBDAV_PID
	fi
}

boot() {
	if  [ -e WEBDAV_PID ]
	then
		rm WEBDAV_PID &> /dev/null
	fi
	start
}

stop_service() {
	if  [ -e WEBDAV_PID ]
	then
		kill $(cat WEBDAV_PID) &> /dev/null
		rm WEBDAV_PID &> /dev/null
	fi
}

shutdown() {
	if  [ -e WEBDAV_PID ]
	then
		rm WEBDAV_PID &> /dev/null
	fi
}

restart() {
	stop
	start
}

将上述文件权限改为0755,直接右键属性就可以改。

/etc/config目录下新建一个webdav文件,权限改为0664,填入以下内容:

config webdav 'webdav'
	option enabled '1'

上述enabled后跟的数字表示是否启动WebDAV服务器,1表示启动,0表示不启动。

最后,在/usr/share目录下新建一个文件夹webdav,确保你的应用程序名为webdav,配置文件名为config.yaml后放入该文件夹,让/usr/share/webdav目录下分别有/usr/share/webdav/webdav/usr/share/webdav/config.yaml两个文件即可。

试试看咯

在OpenWRT网页里,点系统-启动项,划到最下面,看看是不是webdav这一个启动项已经出来了,出来后,将其启用,然后点启动,在你的客户端上试试看吧。

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

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

相关文章

Java并发编程—CompletableFuture的常用方法(建议收藏)

在过去的一段时间里,博主一直在给大家分享多线程并发编程里面的关键CompletableFfuture类的各种技术点,并发编程作为java开发里面关键点之一,也是大家向上提升重要的一点;对于CompletableFuture的学习一定要学到位,前面…

盘点 JDK 中基于 CAS 实现的原子类

前言 JDK 中提供了一系列的基于 CAS 实现的原子类,CAS 的全称是Compare-And-Swap,底层是lock cmpxchg指令,可以在单核和多核 CPU 下都能够保证比较交换的原子性。所以说,这些原子类都是线程安全的,而且是无锁并发&…

第4季5:图像sensor的驱动源码的编译

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 本文演示如何修改sensor的驱动源码,修改之后如何编译与运行。 一、sensor的注册接口分析 这部分内容见第4季4:图像sensor的驱动源码解析。 二、黑电平 关于黑电平的概念&a…

[附源码]计算机毕业设计抗疫医疗用品销售平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【电巢】电源管理芯片:国产化替代厂家竞逐千亿黄金赛道

前言 整个2022年三季度,全国新能源电动车的起火已高达600多起,同比上升了30%多,如果具体到每天来看,平均每天都有超过7起新能源电动车火灾发生。 7月22日,台湾省专业赛车手林某颖驾驶着一辆白色特斯拉Model X&#xff…

es与mysql之间的数据同步

常见的数据同步方案有三种: 同步调用 异步通知 监听binlog 方案一:同步调用(基本不会用,问题太多) 基本步骤如下: hotel-demo对外提供接口,用来修改elasticsearch中的数据 酒店管理服务在完成…

活动预告 | DataFunSummit 2022-MLOps 及 AI 工程化落地论坛

11月19日 13:30-17:30,OpenMLDB 项目发起人、第四范式技术副总裁 郑曌作为出品人发起 DataFunSummit 2022 MLOps 及 AI 工程化落地论坛。OpenMLDB PMC、第四范式资深系统架构科师 卢冕,将在论坛中为大家带来议题为《开源机器学习数据库 OpenM…

吃透阿里P8推荐424页Java服务端研发知识图谱后,直接入职蚂蚁P6

前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员&#…

看场景、重实操,实时数仓不是“纸上谈兵”

本文转载自阿里云Hologres产品负责人合一在ITPUB的访谈,谈谈他眼中的实时数仓, 原文链接: https://mp.weixin.qq.com/s/RZMWf9r4fKV9mNoGGUtaVw 这两年,企业IT领域掀起实时数仓热潮。然而,只要稍做梳理就会发现&#…

【笔试强训】Day 6

🌈欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x…

Redis - Redis为什么这么快?

1. Redis为什么这么快? 数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的;基于内存实现,读写速度快;Redis 是单线程的,避免了不必要的上下文切换和竞争条件,也不…

卖座网站影院界面:优化长列表的滑动流畅度方案

关键点1:优化长列表的滑动流畅度 问题:在长列表中,向下滑动时,为了提高用户的使用感受,这个滑动一般都会做的很流畅。但是在网速不快的情况下,它自然会卡顿,所以为了优化网速慢带来的卡顿现象&…

好用的国产远程控制软件,我只推荐这款!

近年来,越来越多的人需要远程办公,远程为用户提供服务或支持等,导致人们对远程控制软件的需求不断增加。 但现在市面上远程控制软件参差不齐,有的远程控制软件功能不齐全,有的操作步骤过于繁琐,有的使用起…

vue 组件封装——可自由拖拽移动的盒子

最终效果 完整代码 关键性要点&#xff0c;详见注释 组件封装 superBox.vue <template><divref"box_Ref"class"box"mousedown"moveStart"mousemove"moving"mouseup"moveEnd":style"{width: (nodeInfo.width…

js模块化

第1章:模块化入门 1.1.理解什么是模块 将一个复杂的程序依据一定的规则拆分成单个文件&#xff0c;并最终组合在一起这些拆分的文件就是模块&#xff0c;模块内部数据是私有的&#xff0c;只是向外部暴露一些方法与外部其它模块通信 1.2.为什么要模块化? 降低复杂度&#…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java网络游戏虚拟交易平台8rfnp

计算机毕业设计的编程真的不会, 应该怎么办啊, 平时学了3年都没学懂&#xff0c;然而还有一个月就要答辩了&#xff0c;一点东西都没做出来&#xff0c;不知道该怎么办了&#xff1f;好迷茫&#xff0c;如果毕不到业怎么办, 有没有快速的学习方法 毕设毕设&#xff0c;最终的是…

【软件测试】10年测试老鸟,告诉你测试内功修炼之道......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 一名测试人员&#…

Docker[2]-docker的组成与卸载

1.5 Docker的基本组成 1.5.1 镜像(image) Docker 镜像&#xff08;Image&#xff09;就是一个只读的模板。镜像可以用来创建 Docker 容器&#xff0c;一个镜像可以创建很多容器。 docker面向对象容器对象镜像类 1.5.2 容器(container) Docker 利用容器&#xff08;Container&a…

一文读懂如何让网页变灰白色(黑白色)

文章目录1. 文章引言2. 实现方法2.1 修改CSS文件2.2 修改html标签2.3 修改body标签2.4 使用grayscale.js插件1. 文章引言 有段时间&#xff0c;我们打开知名的网页&#xff0c;发现全部变成黑白色了&#xff0c;如下图所示&#xff1a; 一般在清明节&#xff0c;全国哀悼日&am…

学会这些C语言技巧,你的编程能力大大提升

一、函数指针 在讲回调函数之前&#xff0c;我们需要了解函数指针。 我们都知道&#xff0c;C语言的灵魂是指针&#xff0c;我们经常使用整型指针&#xff0c;字符串指针&#xff0c;结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体 但是好像我们…