初识图床

一次偶然,看到了一个图床程序。通过了解之后,发现目前大多数网站都有自己的图片托管平台-图床

缘由

起初,博客的图片也是托管到了阿里,虽然现在阿里还没开启防盗链。但终究不是长久之计,于是我只能自给自足-搭建一个自己的图片托管平台,将博客的所有图片都放在上面,用来节省流量和空间。当然,本地图床无疑会消耗服务器的资源与空间。于是开始利用挂载腾讯云COS来搭建图床But过程并不是一帆风顺,也是屡屡碰壁,几次也是go die,不过,好在最终Success

于是记录到博客。

题外话

防盗链:

客户端在访问A站点时,实际上消耗了B站点的流量,而A站点却从中达成商业目的,从而不劳而获。这样的A站点着实令B站点不快。因此,常常有一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法消耗大网站的空间和流量。这时候,防盗链就开始起作用了,其他网站盗链过来的请求都会被拒绝

  • 挂载COS到服务器->百度找教程,教程参差不齐->不敢尝试害怕出错->夭折
  • 发现宝塔有一键挂载工具9.9¥/月->->进行挂载->挂载失败->联系作者->成功挂载->感谢作者。
  • 情况不对,不能9.9¥的续费下去->参考各教程,取其精华,去其糟粕->成功挂载->血亏9.9¥

血亏证明tuxue.jpg

血亏证明

准备

腾讯云COS存储桶,建站三件套,域名,服务器一台-CentOS7.5,图床程序-这里我以兰空图床为例。

运行环境

PHP7.07.3无法安装图床,MySQL5.6。其余版本自测

步骤

分为两步。

  • 第一步,只说明相关重要设置-并贴图演示。
  • 第二步,详细教程,每一小步都会贴图演示。

第一步

搭建图床-因兰空图床需要使用rewrite重写url,所以一般不支持虚拟主机安装。

进入宝塔->创建站点img.sqwro.cn->将图床程序上传至站点文件夹->绑定域名->访问安装。

图床具体设置参考兰空图床使用手册。

重要图床运行环境设置-基于宝塔

运行环境设置

图床系统设置

图床系统设置

文件路径根据个人习惯设置,不过要和腾讯云COS挂载的目录一致

文件夹设置
复制文件夹路径

第一步完成

第二步

利用腾讯云提供的COSFS工具,将腾讯云的COS对象存储映射到云服务器的指定磁盘目录上。ps:要与第一步的目录一致,指定的目录必须为空,否则挂载失败!

CentOS系统下安装环境依赖包。

sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel fuse

CentOS系统下安装环境依赖包

获取COSFS源码-从GitHub上将COSFS源码下载到指定目录,下面以目录/usr/cosfs为例:

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

获取COSFS源码

下载时间较长,hetui.jpg

编译和安装COSFS-直接将以下命令全部复制-粘贴至命令行,无需按回车,系统会依次执行每条命令。

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

前三条命令
第四条命令
第五条命令
第六条命令

COSFS使用方法-配置密钥文件,一般都为root用户,第一条命令不用执行。可将<BucketName-APPID>替换为自己的存储桶名称<SecretId>替换为自己的ID<SecretKey>替换为自己的Key,粘贴至命令行并按下回车执行第二条命令。

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

配置密钥文件

将密钥文件权限设置成640-直接将以下命令复制-粘贴至命令行,按下回车执行该命令。

chmod 640 /etc/passwd-cosfs

设置密钥权限

存储桶COS挂载至服务器指定目录-直接将第一行命令复制-粘贴至命令行,按下回车执行该命令;然后将第二行命令中的<BucketName-APPID>替换为自己的存储桶名称/mnt/cosfs替换为图床存储图片的文件路径,存储域名替换为存储桶对应的域名。可看图示进行替换,接着将修改好的第二行命令,复制-粘贴至命令行,无需按回车系统自动执行该命令。

mkdir -p /mnt/cosfs
cosfs <BucketName-APPID> /mnt/cosfs -ourl=存储域名 -odbglevel=info -oallow_other

挂载存储桶
挂载

至此,挂载完毕

验证是否成功挂载

复制-粘贴以下命令,按下回车,进行查看,如和图示一致,则成功挂载。

df -h

验证是否挂载成功

这时我们进入宝塔管理页面会发现多了一个256T的磁盘。

256T

验证图床是否可用

进入我们搭建好的图床->上传一个图片。如果挂载的硬盘文件夹里出现我们上传的文件,则说明图床可用。

上传图片
获得上传图片路径
挂载的硬盘文件夹里出现我们上传的文件

至此,全部工程竣工

常用挂载选项

  1. -omultipart_size=[size]
    multipart_size用来指定分块上传时,每个分块的大小,默认是10 MB。 由于分块上传对块的数目有最大限制(10000 块),所以对于大文件,例如超出10 MB * 10000 (100 GB) 大小的文件,需要根据具体情况调整该参数。该参数单位是 MB
  2. -oallow_other
    如果要允许其他用户访问挂载文件夹,可以在运行COSFS的时候指定allow_other参数。
  3. -odel_cache
    默认情况下,COSFS为了优化性能,在umount后,不会清除本地的缓存数据。 如果需要在COSFS退出时,自动清除缓存,可以在挂载时加入该选项。

如果用来做图床,则挂载-oallow_other

卸载存储桶

可按情况执行以下命令,执行时将/mnt替换为挂载时的文件路径。

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

注意事项

  • COSFS提供的功能和性能和本地文件系统相比,具有一些局限性。具体包括:随机或者追加写文件会导致整个文件的重写。
  • 多个客户端挂载同一个COS存储桶时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等。
  • 不支持hard link。不适合高并发读/写的场景。
  • 挂载、卸载文件时,不要同时在挂载点上。可以先cd到其他目录,再对挂载点进行挂载、卸载操作。

最后附载几张相关截图

创建存储桶。地域选与服务器一个地区的,如果服务器是腾讯云的

创建
创建1

查看<BucketName-APPID>-空间名称、<SecretId><SecretKey>存储域名ps存储桶域名在配置时要去掉<BucketName-APPID>,并且将https改为http

存储桶域名
访问密钥
API

修改图床首页底部版权信息

修改版权

敲黑板

可参考此方法挂载其他对象存储阿里云OSS、七牛云KODO、又拍云USS、京东云OSS。整理不易,转载请注明WyArT'Blog:https://sqwro.cn/13.html

Last modification:January 26th, 2020 at 09:05 am
如果觉得我的文章对你有用,请随意赞赏