本文将介绍使用 COSFS 工具 将 WordPress/NextCloud 的文件目录挂载到 COS 存储桶的方法,以达到节约服务器硬盘空间的目的。
Wordpress 的数据存放在安装目录下的 wp-content/uploads 文件夹,里面存储着网站的媒体文件,占据的磁盘空间特别大。
Nextcloud 的数据存放在安装目录下的 data 文件夹 里面存储着网站的媒体文件,占据的磁盘空间特别大。
为了节省磁盘空间,就将腾讯云对象存储(COS)挂载到他们的数据目录下,存储数据文件。
在挂载 COS 前,必须备份好数据,做好服务器镜像。
我就遇到过挂载好 COS 并重启服务器之后无法连接服务器的状况。
下面以 Ubuntu 18.04.1 LTS 系统为例,说明挂载方法。
【官方文档】
【参考文章】
一、准备环境、安装并编译 COSFS
1、安装依赖软件
sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config fuse
2、获取源码
git clone https://github.com/tencentyun/cosfs /usr/cosfs
在下载源码的时候,网速特别慢,所以我选择本地下载,然后上传到服务器。 本地下载
3、编译和安装 COSFS
cd /usr/cosfs
./autogen.sh
./configure
make
sudo make install
cosfs --version #查看 cosfs 版本号
如果显示以下内容,说明安装正确
Tencentyun Object Storage Service File System V1.0.16(commit:unknown) with OpenSSL
License GPL2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
二、挂载 COS
1、配置密钥文件
在 etc 文件夹下新建文件,命名为 passwd-cosfs ,并写入以下内容。
官方给的格式如下
<BucketName-APPID>:<SecretId>:<SecretKey>
官方给的示例如下
examplebucket-1250000000:AKIDHTVVaVR6e3:PdkhT9e2rZCfy6
如果需要挂载多个存储桶,则按照上面的格式多添加几行。
之后将编辑好的内容保存,并将权限改为 640 。
2、运行工具,挂载 COS
在运行挂载命令之前,一定要确保被挂载目录的文件夹下没有文件。
如果有文件,可以移动到新建文件夹内,之后将其导入挂载的存储桶内。
如果需要导入存储桶的文件大于 1000 ,那么需要使用对象存储控制台或者软件导入数据,不能在挂载文件夹后使用复制粘贴方法导入数据,否则数据传输慢或出现异常,甚至导致服务器卡顿、死机。
官方给的格式如下
cosfs <BucketName-APPID> <MountPoint> -ourl=<CosDomainName> -odbglevel=info
官方给的示例如下
cosfs examplebucket-1250000000 /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info -onoxattr
由于一些原因,我自己更改了一些,执行了下面的内容
cosfs examplebucket-1250000000 /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=crit -ouid=1000 -ogid=1000 -oallow_other -oumask=007 -ouse_cache=/cosfscache/ygwt -omax_stat_cache_size=2000 -oensure_diskfree=10240
解释一下含义
-odbglevel=crit 是调高日志级别,防止日志占用过多空间。
ouid=1000 -ogid=1000 -oallow_other 指定用户读写。
查询方法为
cat /etc/passwd | grep 你的用户名
执行后命令行显示如下内容
www:x:1000:1000::/home/www:/sbin/nologin
x后面的两个数就是uid和gid。
下面的方法也可以查询
id 用户名
-oumask=007 是设定权限为 0770 。
-ouse_cache=/cos/ygwt 是指定缓存文件夹,在之前应新建好文件夹,否则会报错,如果多个存储桶不能共用同一个缓存文件夹。
omax_stat_cache_size=2000 是缓存文件占用空间最大值(MB)。
-oensure_diskfree=10240 当缓存文件所在磁盘,剩余空间不足 10240 MB 大小时,COSFS 将尽量减少使用磁盘空间。
3、设置重启后自动挂载
在 /etc/fstab 文件中写入以下内容
官方给的示例如下
cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,allow_other,url=http://cos.ap-guangzhou.myqcloud.com,dbglevel=info
如果需要挂载多个存储桶,则按照上面的格式多添加几行。
由于一些原因,我自己更改了一些,执行了下面的内容
cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,url=http://cos.ap-beijing.myqcloud.com,dbglevel=crit,uid=1000,gid=1000,umask=007,allow_other,use_cache=/cosfscache/ygwt ,max_stat_cache_size=2000,ensure_diskfree=10240
4、卸载存储桶
当有程序引用文件系统中文件时,进行卸载不会报错,并在没程序引用时完成卸载。
umount -l /mnt
三、可能出现的问题
1、NextCloud 挂载 COS 后出现以下提示
请更改权限为 0770 以避免其他用户查看目录。
解决方法
卸载存储桶后,在挂载的命令中加入以下内容再执行
uid 和 gid 需要自己去查,上面有查询方法的介绍。
-ouid=1000 -ogid=1000 -oumask=007 -oallow_other
在设置重启后自动挂载的代码中加入以下内容
代码之间有逗号,每行代码结尾无逗号
uid=1000,gid=1000,umask=007,allow_other
刷新 NextCloud 界面,不再出现错误提示,界面可以正常显示。
2、WordPress 挂载后网站的图片和视频无法显示
F12 - Network 查看资源加载状态,加载图片时 HTTP 状态码为 403 ,加载视频时状态码为 404 。
解决方法
卸载存储桶后,在挂载的命令中加入以下内容再执行
-oallow_other
在设置重启后自动挂载的代码中加入以下内容
代码之间有逗号,每行代码结尾无逗号
allow_other
重新打开网站,可以正常加载图片和视频。
四、 COS 数据备份
请参考下面这篇文章
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。