腾讯云cos每月提供免费额度,不用白不用。用着腾讯云cos的人都知道,最近腾讯云cos升级了,从v3版本升级到v4版本了。据腾讯云官方数据说升级后会有更好的性能,更多的功能。我用着腾讯云cos的ftp功能,把我网站的数据库备份后通过ftp的方式上传到腾讯云cos中,不过我昨天发现,升级后后台根本就没有ftp账号添加了功能了。估计腾讯直接去掉了,不过v3版本的时候添加的ftp账号仍然是可以用的。不过v4就不行了。提交工单,腾讯客服提示文档有搭建ftp服务器的方法。研究了一下,果真v4版本已经提供了一个搭建ftp服务器的工具,果断搞起来。
1.首先看介绍一下这个ftp工具
文档地址:https://www.qcloud.com/document/product/436/7214
功能说明
COS FTP v4是依赖COS 4.X的FTP服务端工具。通过COS FTP工具可以通过FTP协议从COS上传和下载文件。
上传机制:上传先落地FTP的本地磁盘, 上传COS后删除,返回给客户端成功。(后期版本流式上传COS,不落本地磁盘)
下载机制:下载直接流式返回给客户端
支持FTP命令
- put
- get
- mput
- mget
- delete
- mkdir
- ls
- cd
- bye
- quit
- size
不支持FTP命令
- append
适用COS版本
4.x
系统要求
Linux (推荐腾讯云Centos系列CVM)
依赖库
针对Centos等使用yum安装的系统,build.sh会自动下载以下依赖。其他系统请自行安装。
cmake boost openssl-devel asio-devel libidn-devel
使用方法
获取程序包
下载地址:COS FTP V4 github
源码结构
目录 说明 bin 编译后生成的可执行程序 conf 配置文件目录 data 上传时存储临时数据的目录,上传成功或失败后删除 dep FTP Server所依赖的COS 4.X CPP SDK include 头文件所在的目录 lib 依赖的库目录 log 日志目录 opbin 有关清理日志, 自动拉起的脚本 src FTP源码目录 build.sh 编译脚本 start.sh 启动FTP server的脚本 stop.sh 停止程序的脚本 2.配置方法,这才是重点
1. COS账户信息配置 #cos, set your app info in cos cos_appid=1000000 cos_secretid=xxxxxxxxxxxxxxxxxxxxxxxxx cos_secretkey=xxxxxxxxxxxxxxxxxx # bucket信息,包括bucket的名字,以及bucket所在的区域。目前有效值华南广州(gz), 华东上海(sh), 华北天津(tj) cos_bucket=test cos_region=gz # domain设置为cos表示通过cos源站下载(推荐服务器为腾讯云机器用户设置) # domain设置为cdn表示通过cdn下载(推荐服务器为非腾讯云机器用户设置) cos_download_domain=cos # 此项不用设置, build.sh脚本会自动设置 cos_user_home_dir=/home/test/cosftp_data/ 2. FTP账户配置(格式-用户名:密码:读写权限. 多个账户用分号分割) login_users=user1:pass1:RW;user2:pass2:RW 3. 外网IP设置, 把外网IP设置服务器的外网IP(仅针对通过外网IP访问FTP服务的用户,如客户机和FTP服务器均在腾讯云CVM机器上,通过内网IP访问,则不用设置) pasv_address=115.115.115.115 4. 控制端口与数据端口设置, 可以使用默认设置(建议端口在1025 ~ 65535, 并保证未被防火墙iptables过滤) listen_port=2121
直接列出我的配置
对于服务器可能需要开启2121端口,下边列出卡其2121端口的方法
centos7.0以及以上 firewall-cmd --zone=public --add-port=2121/tcp --permanent centos7.0以下 iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
3.编译
因为FTP需要使用本地磁盘,因此请将FTP源码程序放在一个存储空间较大的盘。(腾讯云初始的机器购买的数据盘需要手动格式化并挂载, 请参考 https://www.qcloud.com/doc/product/213/2974
以root身份运行build.sh(因为build.sh里会调用yum进行安装依赖库,推荐使用腾讯云主流的Centos系列系统,如果是其他系列系统,如ubuntu,请修改opbin/env_init.sh)命令如下
sh build.sh
4.运行
切换到cos_ftp账户(这个账户是在build.sh脚本里建立的), su cos_ftp
sh start.sh (会启动FTP进程和monitor程序,以及安装自动清理日志的CT脚本)
使用FTP客户端连接server的控制端口(默认是2121),为避免客户机限制端口,建议使用pasv模式连接。
命令如下
su cos_ftp sh start.sh 停止命令 sh stop.sh
5.可能出现的问题
(1)推荐用新版的appid,地址为含有125开头的bucket,没有的话就新建一个,绝对是125开头的
(2)连接不上,请查看账户密码端口号,连接模式是否正确,以及服务器上进程是否起来(netstat -tulnp | grep vsftpd)
(3) 并发上传一个文件失败,FTP不支持并发上传文件,会对文件进行加锁,导致只有一个会成功。
(4) 上传文件过大,本地磁盘不足导致失败。通过FTP上传会先临时落FTP服务器磁盘(存放在FTP服务的data目录下),然后上传COS,上传成功后会删除本地文件。下载不落本地,不受磁盘空间限制,因此建议把FTP服务部署在空间较大的分区上。
(5) 使用FileZilla等客户端上传大文件失败, 第一版本的FTP服务器不支持append模式,而FileZilla等客户端在上传一些大文件时,会通过append操作。
(6)有问题请在下方留言
文章评论