ios 搭建http服务器_使用ubuntu搭建私有NAS

v2-533fd23a82c1a3da38b1a665800ebb53_1440w.jpg?source=172ae18b

背景

随着软硬件技术的发展,现代社会人们所需要处理的数据规模越来越庞大,对数据的归类、存储、访问等需求急剧增加。然而目前互联网上所提供的数据存储和访问服务都无法提供令人满意的解决方案。

本文提供了一种利用普通家庭网络和家庭废弃硬件设备搭建私有nas服务的方案,这一方案主要优势在于够提供较强的扩展性,适用于具有一定linux操作基础的专业软件工程人员或计算机领域学生和研究人员。

硬件环境

3.5寸工控主板(或树莓派、废旧电脑等)

硬盘

软件环境

操作系统:ubuntu18.04

数据共享协议:samba

远程访问:zerotier

安装流程

操作系统安装

  1. 下载ubuntu18.04镜像

路径:http://releases.ubuntu.com/18.04/ubuntu-18.04.4-desktop-amd64.iso

2. 制作启动盘

可用来制作U盘启动的工具非常多,常用以下几种:

  • poweriso
  • balena etcher
  • UltraISO

3. 安装

开机进入bios,选择从U盘启动,安装系统

配置samba服务

远程访问

服务器搭建完成后,如果没有公网IP或域名解析服务,可以使用zerotier软件在公网组建虚拟局域网实现远程访问。免费用户最多支持100个IP地址,个人使用足够。

搭建虚拟局域网方法:

  1. 注册zerotier账号
  2. 创建虚拟网络
  3. 下载zerotier客户端添加虚拟网络
  4. 添加完成后虚拟局域网中的设备即可从公网互相访问

测试

pc:直接从文件管理器中添加samba网络硬盘即可

ios/ipad os:可使用Documents APP

android:ES文件浏览器,添加网络位置

扩展

相比于直接使用群晖、freeNas等Nas系统,这一方案具有较强的扩展性。ubuntu系统不仅可以作为nas服务器,还可以支持但不限于以下服务和协议:

  • Git服务器
  • 网站服务器
  • nfs协议
  • AFP服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用SwiftUI自定义iOS分段控件可以通过以下步骤实现: 1. 创建一个新的SwiftUI View,命名为SegmentedControl。 2. 在SegmentedControl中定义一个枚举类型,用于表示分段控件中的选项。 3. 在SegmentedControl中定义一个@Binding属性用于绑定选中的选项。 4. 在SegmentedControl中使用ForEach循环遍历所有的选项,并将它们显示在分段控件中。 5. 在ForEach循环中,使用Button显示每一个选项,并在按钮的action中更新选中的选项。 6. 为分段控件添加样式,例如设置选中的选项的背景色和字体颜色等。 下面是一个简单的示例代码: ```swift enum SegmentedOption: String, CaseIterable { case option1 case option2 case option3 } struct SegmentedControl: View { @Binding var selectedOption: SegmentedOption var body: some View { HStack { ForEach(SegmentedOption.allCases, id: \.self) { option in Button(action: { self.selectedOption = option }) { Text(option.rawValue) .foregroundColor(self.selectedOption == option ? .white : .black) .padding(.horizontal, 20) .padding(.vertical, 10) .background(self.selectedOption == option ? Color.blue : Color.gray) .cornerRadius(10) } } } } } ``` 在使用时,只需要将SegmentedControl添加到需要显示的View中,并将选中的选项绑定到某个属性即可。例如: ```swift struct ContentView: View { @State private var selectedOption: SegmentedOption = .option1 var body: some View { VStack { SegmentedControl(selectedOption: $selectedOption) Text("Selected option: \(selectedOption.rawValue)") } } } ``` 这样就可以在界面上显示一个自定义的iOS分段控件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值