查看: 2471|回复: 3

[其它] 如何用百度云BOS实现discuz论坛远程附件

[复制链接]
发表于 23-2-20 07:19:19 | 显示全部楼层 |阅读模式

论坛版主招募
帖内有图片
点击放大看

通过百度云对象存储BOS,实现discuz论坛静态资源远程化。即将discuz论坛的图片、视频及其他附件等静态资源不改变论坛原上传逻辑,存储百度云BOS上。可实现网站动静分离、加快网站图片等附件访问速度等,使网络访问及用户体验提升。


通过将网站/论坛静态对象存放对象存储BOS,一方面可节约(云磁盘)存储空间;另一方面,用户访问时使用的是百度云BOS下行带宽,可提升访问速度。特别当web应用较多,服务器资源需满足多个应用请求,或网站访问量增高,也可使我们的业务So Easy应付自如。


现在网上有很多腾讯云COS、阿里云OSS对象存储实现DZ论坛远程附件的帖子、教程。如阿里云OSS,阿里云官方社区的教程是针对discuzX3.2的,且实现起来相对麻烦,改动源码较多,还不一定能成功;腾讯云COS,实现DZ论坛远程附件的路径可以多种,如扩展、插件、COSFTP等,扩展是腾讯云官方提供的,但也限于(仅支持)X3.4较早版本,升级新版本后,会与新的核心代码冲突,同时也可能与其它引用(类似PHP方法)插件冲突而埋下隐患,即便不升级(腾讯云在开源社区的源码包下方也对此特别注明)。第三方插件可支持更新的版本,但插件本身收费。


腾讯云COSFTP、百度云BOSFTP(都为亲测),两者都是运用Python流式上传原理,百度云Bosftp较Cosftp少一个python依赖项,同时支持python版本兼容性占优。相对降低了应用复杂性和配置、应用门槛。


介绍BOSFTP实现DZ远程附件的流程:

  • 已正确安装、运行DZ论坛;

  • 已有百度云BOS资源,且已设置好存储桶。或在百度云控制台按提示购置BOS对象存储,现在开通>

  • 控制台按需设置BOS,配置BOSFTP>

  • DZ论坛后台全局>上传设置>远程附件,正确配置参数。


BOSFTP是一个基于Python实现的BOS的FTP server工具,将FTP协议的操作转化为对BOS中存储的对象、目录的操作。支持文件上传、下载、删除以及创建文件夹等操作。

主要的功能

BOSFTP支持的主要功能如下:

  • 文件流式上传,大文件分块并行上传
  • 文件流式下载
  • 支持大部分FTP命令,满足FTP需求
  • 服务配置化,满足性能要求

系统环境

  • 操作系统:LINUX
  • Python版本:Python 2
  • 依赖:pyftpdlib>=1.5.0 bce-python-sdk>=0.8.23
安装

1.使用pip安装pyftpdlib

pip install pyftpdlib

2.安装python sdk及其依赖。

  1. pip install pycryptodome
  2. pip install future
  3. pip install futures
  4. pip install bce-python-sdk
复制代码
3.下载BOSFTP,并解压。
4.验证是否安装好依赖。
  1. cd ..
  2. python setup.py install
复制代码
*主要确认BOSFTP包内文件解压至指定文件夹后,1)包内相关文件无一缺少;2)python及相关依赖下载/安装成功,有执行程序的环境。

1、BOSFTP配置后,百度云控制台:

先启动FTP SERVER

执行命令启动一个FTP SERVER , 默认监听端口为2121。

  1. bash start.sh
复制代码

前提:确定该python脚本所在服务器目录,对应目录中执行启动脚本命令(该脚本由百度云官方提供、维护)。上述字符出现即代表BOSFTP安装配置成功(这里默认bosftp的端口为2121,需要安全组放通该端口,或你的自定义通讯端口)。


2、DZ后台,全局>上传设置>远程附件

11.jpg

如图,后台管理界面可见通讯/配置成功 点击放大图片

注:DZ后台配置好FTP服务区地址(你的服务器IP)、FTP端口(默认2121,可自定义、安全组放通)、FTP账号和密码(自定义设置);连接模式为被动,SSL选否,远程访问URL即你的BOS桶地址或CDN加速地址(如选CDN加速BOS桶文件)。选CDN的优势是节省BOS下行流量,对象访问速度快、跨地域无感等。

这里相关参数是你在BOSFTP配置文件中设置的值。参考这里>

  1. [BOS_ACCOUNT]
  2. # 设置ak, sk, bucket
  3. access_key_id = <your access_key_id>
  4. secret_access_key = <your secret_access_key>
  5. bucket = <BucketName>
  6. # FTP Server 的工作目录。
  7. bos_user_home_dir = /home/users/xxx

  8. [FTP_ACCOUNT]
  9. # FTP 账户配置。配置格式为<用户名:密码:读写权限>,多个账户用分号分割。
  10. login_users = usr1:psw1:RW;usr2:psw2:R

  11. [NETWORK]
  12. # 设置endpoint,默认为http://bj.bcebos.com
  13. #endpoint = http://xx.bcebos.com
  14. # FTP监听端口号,默认为2121
  15. listen_port = 8081
  16. # HTTP连接超时时间,默认为3600
  17. connection_timeout_in_mills = 10000
  18. # 并行上传最大并行数,即线程池线程数, 默认为cpu_count * 4
  19. parallel_upload_num = 9
  20. # FTP server最大连接数,默认为1024
  21. max_connection_num = 1000
  22. # 三步上传将文件切割成每个multi_part_size后进行并行上传, 默认为10485760(10M)
  23. multi_part_size = 10485760
  24. masquerade_address = 127.0.0.1
  25. # passive_port可以设置passive模式下,端口的选择范围,默认在(60000, 65535)区间上选择
  26. passive_port = 60000,65535

  27. [LOG]
  28. # 设置日志级别
  29. log_level = INFO
  30. # 设置日志目录, 日志名为bosftp.log
  31. log_dir = ./log/
复制代码

配置文件说明

  • bos_user_home_dir: 本地文件夹路径,上传或是下载都在这个目录进行
  • login_users: 为用户账户信息,启动服务时会验证用户名和密码是否存在于login_users1当中,例如: open 127.0.0.1 2121连接到server,提示输入用户名和密码,这里输入的信息必须存在login_users当中才会通过权限认证
  • parallel_upload_num: 大文件上传会将文件分块(默认10M),然后并发的将这些文件块上传,这个参数用来控制并发度
  • masquerade_address: 使用masquerade_address选项来唯一绑定一个passive模式下用于reply的IP
  • log_dir: BOSFTP的运行日志文件所在目录。
上述配置文件所示,通过设定可支持如分割上传即断点续传性能。
测试
sh start.sh& "启动后台服务
cd test
sh run_test.sh
sh stop.sh

关闭服务

-执行命令ctrl + c关闭FTP Server服务。 可以指定在后台运行sh start.sh&将服务启动,运行sh stop.sh 关闭服务。


最后,观测图片是否上传BOS成功。

122.jpg

如图,图片地址为XXX.cdn.bcebos.com/forum/202302/20/065900c4afzaml45lkl6mj.jpg;XXX为BOS桶名称。到此,反映在你论坛前端的图片实际已存储于BOS桶,这一步表示已成功。

帖子/信息不错,登录后收藏/点赞/评分
发表于 23-2-20 08:33:07 | 显示全部楼层
食品酒水 应有尽有
实践中支持python2~3高阶版本;仅为参考>。可实现上传对象至远程存储,删除对象时远程同时删除(同步论坛本身上传逻辑)。另外,还可支持远程设置保护原图功能、防盗链等,以及图片、视频返回带设定圆角、缩放、增亮、智能对比度、盲水印及PDF文档智能处理等能力,如有必要(智能数据处理服务,实践中需修改论坛远程附件返回的文件后缀方能实现)。
1)判断附件是否为论坛远程附件;
2)如是,则增加智能数据处理参数并返回客户端。
这可能会增加系统开销,具体如何应用根据实际情况决定。

可多端浏览;右侧扫码,手机/微信上订阅我们 ► 城事 房产 招聘 跳蚤 便民
发表于 23-2-20 09:06:18 | 显示全部楼层
家居家装
版本记录
BOSFTP工具包 [2018-03-08] 版本号1.2.0
修复安装时的python sdk版本问题,优化日志目录配置

BOSFTP工具包 [2018-03-08] 版本号1.0.1
支持APPE接口实现断点续传功能

BOSFTP工具包 [2018-11-09] 版本号1.0.0
支持文件上传,下载,删除, 支持文件夹创建
支持put、get、delete、mkdir、ls、cd、quite、size、rename命令
自定义ftp配置
大文件分块上传
星巴克优惠券 瑞幸优惠券 滴滴优惠券 肯德基券 麦当劳券 饿了么红包 美团惊喜红包
发表于 23-3-1 08:55:30 | 显示全部楼层

发表回复

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表