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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 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、每个账号之间相互看不到数据(除了管理员账号)

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
28天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
31 7
|
1月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
1月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
39 2
|
17天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
158 77
|
25天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
4天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
37 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
9天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
31 3
实战~如何组织一个多容器项目docker-compose
|
19天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
63 3
|
26天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
67 7