专栏首页玩转云服务基于腾讯云cos的图床教程
原创

基于腾讯云cos的图床教程

2860元腾讯云代金券免费领取,付款直接抵现金,立即领取>>>

腾讯云海外服务器1折限时抢购,2核4G云主机661元/1年,立即抢购>>>

腾讯云服务器1折限时抢购,2核4G云主机698元/3年,立即抢购>>>

基于腾讯云cos的图床教程

现在越来越多的网站的图片都有一个专门的服务器来托管图片-这就是图床。作为一个爱琢磨的人,我也打算搞一个自己的图床网站,以后所有的图片都放这上面了,这样一来节省了不少流量和空间,还可以用这个网站发布一些高清的图片。

那么问题来了,目前网上有些程序对接腾讯云的cos需要在程序里面录入密钥信息不安全怎么办,那么为了安全应该怎么做呢?我在查找资料的时候知道了腾讯云还有个COSFS的东西,通过这个软件就可以把你的cos盘挂载到你主机的目录上。注意:该方法不适合那种高并发的需要进行大量IO读写的操作。COSFS 基于 S3FS 构建, 读取和写入操作都经过磁盘中转,仅适合挂载后对文件进行简单的管理,不支持本地文件系统的一些功能用法。

不过对于图床来说,只是需要存储文件而已,所以并不需要这么高的性能,所以这个是完全可以的。

1、安装图床

这里我使用的是Chevereto注意:它这个是有收费的和免费版本的,不过我们用免费版就已经够用了,推荐使用正版的免费版本,不要去下什么破解版的,不安全。

大家可以到官方的GitHub上下载源码。

官方给出了四种安装方式

这里我推荐最后一个,个人觉得最后一种方式搭配腾讯云轻量应用服务器的宝塔面板是最简单的方式。

首先我们先用宝塔建一个站点,记得要使用MySQL的数据库。

站点建好后,需要先下载压缩包,然后通过宝塔上传到自己网点的根目录下进行解压。 创建好了进行伪静态设置,复制下面的代码就可以了。

# Image not found replacement
location ~* (jpe?g|png|gif) {
log_not_found off;
error_page 404 /content/images/system/default/404.gif;
}
# CORS header (avoids font rendering issues)
location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
add_header Access-Control-Allow-Origin "*";
}
# Pretty URLs
location / {
try_files $uri $uri/ /index.php?$query_string;
}

效果是这样的

然后直接访问域名就可以看到设置的界面了,设置好相关的信息,安装就算是完成了

提示这个证明安装成功

2、挂载COSFS

COSFS 主要提供两种安装方式:通过安装包方式安装和通过编译源码方式安装。

方式一:通过安装包方式安装

? 该方式支持主流的 Ubuntu、CentOS 系统。

Ubuntu 系统

  1. 根据系统版本选择对应的安装包,目前支持的 Ubuntu 发行版包括 Ubuntu14.04、Ubuntu16.04、Ubuntu18.04、Ubuntu20.04。
#Ubuntu14.04
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs_1.0.19-ubuntu14.04_amd64.deb
#Ubuntu16.04
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs_1.0.19-ubuntu16.04_amd64.deb
#Ubuntu18.04
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs_1.0.19-ubuntu18.04_amd64.deb
#Ubuntu20.04
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs_1.0.19-ubuntu20.04_amd64.deb
  1. 安装。以 Ubuntu16.04 为例:
sudo dpkg -i cosfs_1.0.19-ubuntu16.04_amd64.deb

CentOS 系统

  1. 安装依赖
sudo yum install libxml2-devel libcurl-devel -y
  1. 根据系统版本选择对应的安装包,目前支持的 CentOS 发行版包括 CentOS6.5、CentOS7.0。
#CentOS6.5
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs-1.0.19-centos6.5.x86_64.rpm
#CentOS7.0
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs-1.0.19-centos7.0.x86_64.rpm
  1. 安装。以 CentOS7.0为例:
sudo rpm -ivh cosfs-1.0.19-centos7.0.x86_64.rpm

? 如果安装时报错,提示conflicts with file from package fuse-libs-*,则加--force参数再次安装。

方式二:通过编译源码方式安装

? 该方式支持主流的 Ubuntu、CentOS、SUSE、macOS 系统。

1. 安装依赖软件

COSFS 的编译安装依赖于 automake、git、libcurl-devel、libxml2-devel、fuse-devel、make、openssl-devel 等软件包,Ubuntu 、CentOS、SUSE 和 macOS 的依赖软件安装过程如下:

  • Ubuntu 系统下安装依赖软件:
sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config fuse
  • CentOS 系统下安装依赖软件:
sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse
  • SUSE 系统下安装依赖软件:
sudo zypper install gcc-c++ automake make libcurl-devel libxml2-devel openssl-devel pkg-config
  • macOS 系统下安装依赖软件:
brew install automake git curl libxml2 make pkg-config openssl 
brew cask install osxfuse

2. 获取源码

您需要从 GitHub 上将 COSFS 源码 下载到指定目录,下面以目录/usr/cosfs为例(实际操作下,建议您根据具体操作环境选择目录):

git clone https://github.com/tencentyun/cosfs /usr/cosfs

3. 编译和安装 COSFS

进入安装目录,执行如下命令进行编译和安装:

cd /usr/cosfs
./autogen.sh
./configure
make
sudo make install
cosfs --version  #查看 cosfs 版本号

4. Configure 操作问题处理

根据操作系统的不同,进行 configure 操作时会出现不同的提示,在 fuse 版本低于 2.8.4 的操作系统上,进行 configure 操作时会出现以下报错提示:

checking for common_lib_checking... configure: error: Package requirements (fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6) were not met:
  Requested 'fuse >= 2.8.4' but version of fuse is 2.8.3 

此时,您需要手动安装 fuse 2.8.4及以上版本,安装命令示例如下:

yum -y remove fuse-devel
wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.9.4.tar.gz
tar -zxvf fuse-2.9.4.tar.gz
cd fuse-2.9.4
./configure
make
make install
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/:/usr/local/lib/pkgconfig
modprobe fuse   #挂载 fuse 内核模块
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig   #更新动态链接库
pkg-config --modversion fuse  #查看 fuse 版本号,当看到 “2.9.4” 时,表示 fuse 2.9.4 安装成功 
  • SUSE 系统下手动安装 fuse 2.8.4及以上版本,安装命令示例如下:

! 安装时,需要注释掉example/fusexmp.c文件下第222行内容,否则 make 将报错。注释方法为/*content*/

zypper remove fuse libfuse2
wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.9.4.tar.gz
tar -zxvf fuse-2.9.4.tar.gz
cd fuse-2.9.4
./configure
make 
make install
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/:/usr/local/lib/pkgconfig
modprobe fuse   #挂载 fuse 内核模块
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig   #更新动态链接库
pkg-config --modversion fuse   #查看 fuse 版本号,当看到 “2.9.4” 时,表示 fuse2.9.4 安装成功 
  • 在 macOS 进行 configure 操作时,可能会出现如下提示:
configure: error: Package requirements (fuse >= 2.7.3 libcurl >= 7.0 libxml-2.0 >2.6 libcrypto >= 0.9) were not met
No package 'libcrypto' found

此时,您需要设置 PKG_CONFIG_PATH 变量,以使得 pkg-config 工具能找到 openssl,命令如下:

brew info openssl 
export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig #您可能需要根据上一条命令的提示信息修改这条命令

配置密钥

安装好后就可以配置密钥文件

在文件/etc/passwd-cosfs中,写入您的存储桶名称(格式为 BucketName-APPID),以及该存储桶对应的 <SecretId> 和 <SecretKey>,三项之间使用半角冒号隔开。为了防止密钥泄露,COSFS 要求您将密钥文件的权限值设置为640,配置/etc/passwd-cosfs密钥文件的命令格式如下:

sudo su  # 切换到 root 身份,以修改 /etc/passwd-cosfs 文件;如果已经为 root 用户,无需执行该条命令。

echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

比如:

echo examplebucket-1250000000:AKIDHTVVaVR6e3****:PdkhT9e2rZCfy6**** > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

挂载存储桶

然后把你的cos挂载到指定目录(注意:你要把它挂载在图床网站的目录下,原因后面会说)

cosfs 你的bucket名字 挂载目录 -ourl=你的腾讯云的访问网址

比如:将
my-bucket
这个bucket挂载到
/tmp/cosfs
目录下,SecretId是
faint
,SecretKey是
123
,OSS endpoint是
https://cos.ap-hongkong.myqcloud.com

echo my-bucket:faint:123 > /etc/passwd-cosfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/cosfs(你安装图床的本地地址,/www/wwwroot/域名/images)
cosfs my-bucket /tmp/cosfs(你安装图床的本地地址,/www/wwwroot/域名/images) -ourl=https://cos.ap-hongkong.myqcloud.com oallow_other

卸载存储桶

安装好后如果需要卸载可以输入以下命令 方式1:fusermount -u /tmp/cosfs(你安装图床的本地地址,/www/wwwroot/域名/images)命令专用于卸载 FUSE 文件系统

方式2:umount -l /mnt, 当有程序引用文件系统中文件时,进行卸载不会报错,并在没程序引用时完成卸载 方式3:umount /mnt, 当有程序引用文件系统中的文件时,进行卸载会报错

注意:

当然,如果我们直接这样设置的话,你的图床是无法直接访问自己挂载的目录的(默认是只有root用户才能修改)我们需要修改访问权限:

在你挂载的时候在命令行后面加上 -oallow_other

服务器重启后需要重新挂载。

常用挂载选项

-omultipart_size=[size]

用来指定分块上传时单个分块的大小(单位: MB),默认是10MB。 由于分块上传对单个文件块的数目有最大限制(10000块),所以对于超出100GB(10MB * 10000)大小的文件,需要根据具体情况调整该参数。

-oallow_other

如果要允许其他用户访问挂载文件夹,可以在运行 COSFS 的时候指定该参数。

-odel_cache

默认情况下,COSFS 工具为了优化性能,在 umount 后,不会清除本地的缓存数据。 如果需要在 COSFS 退出时,自动清除缓存,可以在挂载时加入该选项。

-onoxattr

禁用 getattr/setxattr 功能,在1.0.9之前版本的 COSFS 不支持设置和获取扩展属性,如果在挂载时使用了 use_xattr 选项,可能会导致 mv 文件到 Bucket 失败。

-opasswd_file=[path]

该选项可以指定 COSFS 密钥文件的所在路径,该选项设定的密钥文件需要设置权限为600。

-odbglevel=[dbg|info|warn|err|crit]

设置 COSFS 日志记录级别,可选 info、dbg、warn、err 和 crit。生产环境中建议设置为 info,调试时可以设置为 dbg。如果您的系统日志,未定期清理且由于访问量很大,生成大量日志,您可以设置为 err 或者 crit。

-oumask=[perm]

该选项可以去除给定类型用户,对挂载目录内文件的操作权限。例如,-oumask=755,对应挂载目录的权限变为022。

-ouid=[uid]

该选项允许用户 id 为 [uid] 的用户不受挂载目录中文件权限位的限制,可以访问挂载目录中的所有文件。 获取用户 uid 可以使用 id 命令,格式id -u username。例如执行id -u user_00,可获取到用户 user_00 的 uid。

-oensure_diskfree=[size]

COSFS 工具为提升性能,默认使用系统盘存放上传、下载的临时缓存,文件关闭后会释放空间。在并发打开的文件数较多或者读写大文件的时候,COSFS 工具会尽量多的使用硬盘来提高性能,默认只保留 100MB 硬盘可用空间给其他程序使用,可以通过选项 oensure_diskfree=[size] 设置 COSFS 工具保留可用硬盘空间的大小,单位为 MB。例如-oensure_diskfree=1024,COSFS 工具会保留1024MB剩余空间。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 [email protected] 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 7天学会腾讯云服务器建站(七) – 后续进阶与其他腾讯云产品的应用

    对于我们使用腾讯云服务器以及新手站长开始入门学习用服务器建站,笔者有准备这个系列文章,今天是最后一篇。其实我们很多网友应该是有学会如何使用腾讯云服务器建站,而且...

    老蒋
  • 轻量应用服务器搭建lsky图床并使用KODO云存储

    Lsky Pro图床是一个支持本地、阿里云 OSS、腾讯云 COS、七牛云、又拍云等储存方式的基于PHP的开源图床。

    勤奋的思远
  • 赛事相关 | 腾讯觅影×腾讯云TI平台,锁了!

    9月15日,由“科创中国”联合体指导,腾讯公司联合首都医科大学附属北京同仁医院、首都师范大学、郑州大学第一附属医院、上海市胸科医院、上海全景医学影像联合发起的2...

    腾讯云TI平台
  • 【技术种草】十分钟带你白嫖腾讯云个人专属云盘

    好消息,好消息,只需10分钟,手把手教你利用腾讯云COS存储+网盘cloudreve可以快速搭建个人专属网盘了

    乌龟哥哥
  • gitee不讲武德。

    敲得码黛
  • 新手如何使用JavaSDK,轻松上手腾讯云COS?Java内调用对象存储桶

    COS对象存储是什么?一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。

    Mintimate
  • 【玩转腾讯云】用COS+CDN+CI+Hexo+Next+VsCode+智能DNS搭建丝滑的博客

    对于一般的内容而言,使用动态博客较为复杂,需要数据库、运行环境的配合。动态博客的代码也较为复杂,修改代码进行个性化难度较高。

    羽翰尘
  • 丝滑的博客:基于COS/CDN/CI/Hexo/DNS

    作者介绍 羽瀚尘:研究生在读,喜欢互联网技术,善于使用公有云服务满足现实需求。 目前搭建博客有哪些选择呢? 动态博客:WordPress... 静态博客...

    云存储
  • 图床来了,markdown和wordpress用户的福音,每月一块钱

    相信大部分技术人写作都是用 markdown 轻量级标记语言进行博客写作,但是基本所有支持 markdown 本地写作工具都只能采用导入本地图片引用的方式,一旦...

    kk大数据
  • WordPress基于腾讯云COS存储站点图片及跨域解决方法

    沈唁
  • 腾讯云COS对象存储+PicGo搭建图床教程

    兮动人
  • 【技术种草】双十一之玩转代金券

    这就要四台了,而博主我现在还是一名初中生,有些只能放在一台服务器上面完成,但现在,腾讯云出了一个极其实惠的活动,So,没错,本篇文章就是教你们如何正确地薅羊毛,...

    勤奋的思远
  • 云+社区【玩转腾讯云】征文活动获奖名单公布

    由腾讯云+社区主办的云+社区【玩转腾讯云】征文活动已经圆满顺利的落下帷幕!感谢小伙伴们对云+社区征文活动的支持!接下来,就是期待已久的开奖时刻啦。

    云加社区
  • 【云+社区年度征文】从配置腾讯云cos做图床谈开去(mweb/typora + picgo)

    有明亮和暗黑主题, 有大纲, 有导出pdf, 有vim编辑模式, 并且注册账号之后, 就可以多平台云同步, 除了网页, mac/win/linux的客户端也有.

    sean_yang
  • 免费的对象存储——七牛云还是腾讯云

    在小程序生成海报时,需要将文章的头图下载到本地,开发过小程序的都知道小程序在进行网络通信时候只支持HTTPS请求。

    Bug生活2048
  • 腾讯云可免费领取6个月50GB对象存储COS 可通过COSBrowser管理

    我们在使用腾讯云产品的时候可能较多的会使用腾讯云服务器,但是对于云数据库、CDN、短信、人工智能等产品应该也有不少网友项目涉及到。与腾讯云服务器相关联的腾讯云对...

    老蒋
  • 搭建一个属于自己的图床

    php版本选择7.3(本人用的7.3其他我不清楚)并安装fileinfo和opcache扩展

    亦言
  • 写文章时将本地图片自动转换网络图片

    这天呢。被他看到我写的越搞越大那篇文章,看见了里面那么多稀奇古怪的图片。满脸纳闷的问到:

    vannding
  • 【玩转腾讯云】征文活动获奖名单公布

    由云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动,吸引入驻作者积极参加,非常感谢各位作者的参与。经过评委老师从产品创新性、实用性、可借鉴性、...

    云加社区

扫码关注云+社区

领取腾讯云代金券


http://www.vxiaotou.com