discuzx3.4使用腾讯COS远程附件教程

使用腾讯cos好处是很多了,不但可以节省服务器本身的存储空间,而且加载图片附件等不需要通过服务器自身进行转发,脱离了宽带的限制,可以加载的更加迅速。

discuz使用腾讯cos远程附件其实挺简单。但是官方的文档有些地方没有说清楚,可能是经常从事这行业的人来说应该都是常识吧,

不过对我们这样的第一次使用的人来说其实还是很有难度的,不知道怎么下手。折腾了一天,终于弄好了,现在给大家分享出来。

1.首先,安装discuz就不说了。

要使用腾讯cos首先要去开通。开通之后选择创建存储桶,如下图所示,选择左上角的那个。

如果使用的服务器也是腾讯云的服务器的话,存储桶的地区选择和你服务器相同的地区,设置会更加方便一点。如果不是的话就随意了。

访问权限选择公有读私有写即可。如果是私有读写的话,会导致后面安装的FTP服务器无法读取文件。

创建好了存储桶,去API密钥管理获取SecretId,SecretKey,找到你创建的存储桶,选择配置管理,

里面有存储桶名称,所属地域,和访问域名的内容,全部保存下来,cos存储桶的创建就完成了。

secretid = XXXX
secretkey = XXXXX
存储桶名称 = bucket name-123
存储桶地区 = ap-xxx
存储桶访问域名 = https://存储桶名称.cos.ap-chengdu.myqcloud.com

2.然后在服务器上安装FTP Server 工具。

这里是官方文档

以我自己为例。一开始一直报错,无法使用,很大的原因就是因为,没有安装依赖包,依赖包安装的不完全。

所以我们首先安装依赖包。

以我自己安装测试的环境为例。CentOS 7.6.1810(Py3.7.8)

首先安装pip。没有pip的话后面的依赖包安装起来就会很麻烦。

但是centos并不能直接安装到pip,所以们需要安装另外的epel扩展源。

sudo yum -y install epel-release

安装完毕之后,再安装pip。

sudo yum -y install python-pip

到这一步后面就会很顺利了。我当时一直安装不上pip,网上查询了很久才找到的解决方法。

后面的步骤官网文档里面就有了。

开始安装FTP server工具的依赖包。

python-devel:

根据操作系统的不同,自行选择。
yum install python-devel
aptitude install python-dev

cos-python-sdk-v5(≥1.6.5)

pip install cos-python-sdk-v5

pyftpdlib (≥1.5.2)

pip install pyftpdlib

psutil(>=5.6.1)

pip install psutil

这些依赖包依次安装。

如果安装到 psutil 的时候出现报错

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-*(其中×与要安装的软件有关)

解决方法是更新 setuptools 和 pip:

pip install --upgrade setuptools
python -m pip install --upgrade pip

全部安装完成之后,就可以准备安装FTP sever工具了。

3.先下载cos-ftp-server

如果打不开链接的话,在这里下载

[bdbtn]https://pic.moeyao.cn/wp-content/uploads/2020/11/202011280518356.zip[/bdbtn]

在本地解压文件,打开conf/vsftpd.conf.example文件。

使用notepad之类的工具都可以。

[COS_ACCOUNT_0]
cos_secretid = 通过cos获取
cos_secretkey = 通过cos获取
cos_bucket = 你创建的存储桶名称
cos_region = 你创建的存储桶地区
cos_protocol = https              不用改动
#cos_endpoint = ap-chengdu.myqcloud.com
home_dir = 你要自动上传到cos存储桶的文件目录,必须是真实存在的。
ftp_login_user_name = ftp工具账号,自定义
ftp_login_user_password = ftp工具密码,自定义
authority = RW            不需要改动
delete_enable = true      不需要改动

#和上面的一样,可以创建不同的账号上传另外的目录,不需要可以注释掉
[COS_ACCOUNT_1]
cos_secretid = XXXX
cos_secretkey = XXXXX
cos_bucket = {bucket name}-123
cos_region = ap-xxx
cos_protocol = https
#cos_endpoint = ap-xxx.myqcloud.com
home_dir = /home/user1
ftp_login_user_name=user1
ftp_login_user_password=pass1
authority=RW
delete_enable=true

[NETWORK]
masquerade_address = 127.0.0.1   如果ftp工具是和你的服务器是同一个的话,就就填写127.0.0.1,如果不同的话就填写服务器实际的IP地址
listen_port = 2121                默认端口,不需要改动,但是需要在服务器放通端口。

#passive_port可以设置passive模式下,端口的选择范围,默认在(60000, 65535)区间上选择
passive_port = 60000,65535

[FILE_OPTION]
# 默认单文件大小最大支持到200G,不建议设置太大
single_file_max_size = 214748364800

[OPTIONAL]
config_check_enable = true

# 以下设置,如无特殊需要,建议保留default设置  如需设置,请合理填写一个整数
min_part_size       = default
upload_thread_num   = default
max_connection_num  = 100
max_list_file       = 10000
log_level           = DEBUG
log_dir             = log

配置文件修改完毕之后,另存为一个文件名为vsftpd.conf的的配置文件。

上传文件到服务器。

授予权限。

4.开始安装运行。

进入 FTP Server 目录,运行 setup.py 安装 FTP Server 及其相关的依赖库(需要联网)

python setup.py install   # 这里可能需要您的账号 sudo 或者拥有 root 权限。

运行 ftp_server.py 启动 FTP Server

python ftp_server.py

此外还有两种方式启动 FTP Server,如下:

使用 nohup 命令,以后台进程方式启动:

nohup python ftp_server.py >> /dev/null 2>&1 &

使用 screen 命令放入后台运行(需要安装 screen 工具,没用这个,不再叙述):

screen -dmS ftp
screen -r ftp
python ftp_server.py
#使用快捷键 Ctrl+A+D ,切回主 screen 即可。

停止运行

若您是直接运行,或 screen 方式放在后台运行的 FTP Server,您可以使用快捷键Ctrl+C停止 FTP Server 运行。

若您是通过 nohup 命令启动,可以使用下面方式停止:

ps -ef | grep python | grep ftp_server.py | grep -v grep | awk '{print $2}' | xargs -I{} kill {}
其中ftp账号和密码都是自定义的,输入进去就可以了。

远程访问URL就是创建存储桶是获取到的域名。

设置完毕,点击测试远程附件,提示远程附件设置一切正常,那么就ok了。

5.另外再说两点有可能发生的问题。

ftp进程的最大使用内存大约为:

        # 1. 每个控制连接大概会耗费1 — 3MB内存

        # 2. 每个连接的list操作大约会耗费max_list_file KB

        # 3. 每个上传线程需要读取一个part_size的缓冲区,另外在上传到COS过程中,客户端又会向ftp服务端写入

        # 4. ftp server主线程大约耗费20MB

所以如果服务器配置不高的话,有可能会报错,提示内存不够。

这种情况下是可以将配置检测跳过去的。

打开conf/vsftpd.conf文件,

搜索

config_check_enable = true

将将true更改为false即可。

然后使用

nohup python ftp_server.py >> /dev/null 2>&1 &

后台运行FTP工具,就可以正常使用了。

使用过程中需要注意的一点是,如果是全新安装的discuz,没有发过任何文章,那么可以直接使用。

如果有发过帖子的话,虽然附件会上传之腾讯COS,但是浏览的时候并不会直接链接cos进行下载,依然是通过服务器进行传输文件的,

相当于设置无效了,这种情况将所有文件下载到本地,然后在完全上传到COS,然后全部替换成远程附件即可。

操作方式可以参照这里discuzx3.4使用远程附件教程