vsftp容器搭建+go开发web用户管理界面(更新于2022.02.23)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: vsftp容器搭建+go开发web用户管理界面(更新于2022.02.23)

前提


vsftp采用虚拟账号+被动访问配置

默认账号密码:company/Tenez.cn

1、磁盘划分完成

df -h 部分: /dev/mapper/DB-DBlv     1007G   36G  921G   4% /u01

2、安装docker,配置存储磁盘

cat /usr/lib/systemd//system/docker.service |grep ExecStart
部分:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/u01/docker/data

部署


1、启动容器

创建vsftp容器

映射的目录根据实际情况修改,我的磁盘划分挂载位置是在/u01,所以映射的是/u01/目录下

docker run -id  --name=vsftp --network=host --privileged=true  -v /u01/vsftp/data:/ftp/data swr.ap-southeast-3.myhuaweicloud.com/softwares/vsftp:3.2 /usr/sbin/init

创建mysql容器

这里的数据库只是一个记录账号的作用,不存用户文件,没有做持久化

docker run -itd --name vsftp-mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8

现在我们可以使用xftp等ftp工具,测试链接下:

ip:宿主机ip

端口号:10021

用户名:company

密码:Tenez.cn


2、安装前端和配置备份

vsftp-web3.0.zip安装包解压后存放到宿主机的/u01/vsftp/data目录下

目录层级:

ls /u01/vsftp/data/vsftp-web3.0
2.sh  ftp.go  ftp.sql  go.mod  go.sum  nohup.out  pages  statics  templates

backupdata.zip安装包解压后存放到宿主机的/u01/vsftp/data目录下

目录层级:

ls /u01/vsftp/data/backupdata/
backup.sh

进入到vsftp容器内部,检查crond定时任务,每30分钟将打包备份一次容器内部/ftp/company目录下的所有文件,7天滚动保留

docker exec -it vsftp bash
crontab -l
30 * * * * sh /ftp/data/backupdata/backup.sh >> /ftp/data/backupdata/backupdata.log 2>&1

进入到vsftp容器内部,运行前端go程序

运行之前需要修改数据库连接信息,把ip修改成实际数据库ip

cd /ftp/data/vsftp-web3.0
cat ftp.go |grep mysql
      db, err := gorm.Open("mysql", "root:password@(172.xx.xx.xx:13306)/db?charset=utf8mb4&parseTime=True&loc=Local")
      db, err := gorm.Open("mysql", "root:password@(172.xx.xx.xx:13306)/db?charset=utf8mb4&parseTime=True&loc=Local")
      db, err := gorm.Open("mysql", "root:password@(172.xx.xx.xx:13306)/db?charset=utf8mb4&parseTime=True&loc=Local")
nohup go run ftp.go &

现在浏览器访问:http://172.xx.xx.xx:9090将得到如下界面

1675245905341.jpg


总结


部署说明

使用容器部署

容器名称 映射目录 端口号 服务
vsftp /u01/vsftp/data:/ftp/data 主机网络。主端口号9090,10021 ftp服务,用于上传下载文件
vsftp-mysql 13306:3306 数据引擎服务,用于存放ftp账号密码信息

*注:以下提到的路径全部为容器内部路径'


账号说明


账号名称 密码 权限
company Tenez.cn 可以查看所有ftp账户数据


WEB界面说明


FTP管理http://172.xx.xx.xx:9090,可以增删账号(只适合用于内网)


数据存放说明


全部ftp用户数据路径:/ftp/company/

单个ftp账号数据路径:/ftp/company/账号名称

ftp关于账号密码信息:vsftp-mysql 容器中的db数据库ftpuserlist表


数据备份说明


每30分钟会备份所有账号数据到/ftp/data/backupdata目录,滚动保留7天


数据删除说明


1、当一个ftp账号被删除后,账号内的数据将不会被清除,重新创建相同账号后将恢复数据

2、当ftp账号被删除后,已创建成功的ftp链接将不会被强制中断,仍然可以传输数据


数据限制说明


1、每个账号最大速率5m/s

2、最大建立连接400个(指定了端口号范围10180-10580)

3、每个账号之间相互看不到数据(除了管理员账号)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
缓存 弹性计算 API
用 Go 快速开发一个 RESTful API 服务
用 Go 快速开发一个 RESTful API 服务
|
7天前
|
前端开发 开发者 容器
【布局革命!】Flexbox与Grid双剑合璧:解锁Web设计新纪元,让响应式界面瞬间焕发光彩!
【9月更文挑战第1天】本文通过问答形式深入探讨了Flexbox和Grid布局的特点与应用场景。Flexbox专为单轴布局设计,适用于响应式导航栏和列表;Grid布局则适用于二维布局,可精确控制元素的位置和大小,适合构建复杂的内容区域和仪表板。文章还提供了示例代码,帮助读者更好地理解和应用这两种布局方式,以创建高效、美观的Web界面。
34 9
|
5天前
|
监控 前端开发 数据库连接
Zabbix 5.0 LTS的web界面安装及修改zabbix web管理员的默认密码
这篇文章是关于如何安装Zabbix 5.0 LTS的web界面以及如何修改Zabbix web管理员默认密码的教程。
19 1
|
10天前
|
Kubernetes 应用服务中间件 nginx
基于容器化的Web服务器管理
【8月更文第28天】随着云原生技术的发展,容器化已经成为部署和管理应用程序的标准方式之一。Docker 和 Kubernetes 等工具提供了强大的容器管理和编排能力,使得开发者能够轻松地部署、扩展和维护 Web 服务器。本文将详细介绍如何使用 Docker 和 Kubernetes 实现 Web 服务器的容器化部署,并提供详细的步骤和代码示例。
14 1
|
2天前
|
前端开发 JavaScript 开发者
现代前端框架激烈交锋,高效响应式 Web 界面的归属扑朔迷离!
【9月更文挑战第6天】本文通过实际案例,比较了主流前端框架 Vue.js、React 和 Angular 的特点与优势。Vue.js 以简洁的语法和灵活的组件化架构著称,适合小型到中型项目;React 强调性能和可扩展性,适用于大型应用;Angular 凭借全面的功能和严格架构,适合企业级开发。开发者应根据项目需求和技术栈选择合适的框架。
9 0
|
24天前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
25天前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
27天前
|
前端开发 开发者 容器
【布局革命!】Flexbox与Grid双剑合璧:解锁Web设计新纪元,让响应式界面瞬间焕发光彩!
【8月更文挑战第12天】面对复杂的网页布局需求,前端开发者需掌握Flexbox与Grid布局技术。Flexbox专为一维布局设计,适用于构建响应式导航栏或列表;Grid则是一种二维布局系统,适合精确控制复杂网格布局。本文通过问答形式深入讲解这两种布局方式的特点、应用场景及使用方法,并提供示例代码,帮助开发者构建高效美观的Web界面。
40 1
|
7天前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
18 0
|
7天前
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
22 0
下一篇
DDNS