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

简介: 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、每个账号之间相互看不到数据(除了管理员账号)

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
492 4
|
7月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
492 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
9月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
9月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
484 20
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
896 3
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
655 4
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
1686 1