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使用远程附件教程。