教程|使用空兰图床+又拍云USS搭建博客图床
本文最后更新于 2023-09-13,该文章更新时间较久,如有变动或失误地方请留言或自行查找。
在搭建自己个人博客的同时,图床可以可以有效提升站点打开速度。虽然WP自带媒体管理文件比较好用,但是为了提升站点打开速度、后续服务器迁移等因素,我还是选择了自己搭建图床的方案。当然,也有一些第三方的图床可供我们使用,如果第三方图床能满足需求的话也可以尝试下第三方图床,但是由于诸多不可控因素,在使用第三方图床的时候请在本地做好备份。
以上两个图床是我博客目前部分图片托管的图床,如果有需要可以自行了解一下。
下面,是我搭建私有图床的方法和遇到的一些问题。
1 准备工作
2 图床部署
首先我们需要选择一个图床程序,目前常用的就是上面提到的兰空和ImgURL图床程序,均是 GitHub 开源项目。其中上面提到的 ImgURL免费图床 也是 ImgURL图床的作者,该图床程序分免费版和专业版(付费),自用的话免费版也基本够用,但是我使用的个人兰空图床,所以下面也都是以兰空图床为例。
在安装图床程序之前,可以先阅读下图床使用文档,有一些基本配置要求:
2.1 安装要求
PHP >= 8.0.2
BCMath PHP 扩展
Ctype PHP 扩展
DOM PHP 拓展
Fileinfo PHP 扩展
JSON PHP 扩展
Mbstring PHP 扩展
OpenSSL PHP 扩展
PDO PHP 扩展
Tokenizer PHP 扩展
XML PHP 扩展
Imagick 拓展
exec、shell_exec 函数
readlink、symlink 函数
putenv、getenv 函数
2.2 支持的数据库
Mysql 5.7+
PostgreSQL 9.6+
SQLite 3.8.8+
SQL Server 2017+
2.3 基本环境配置
在下载兰空图床程序,并阅读安装条件之后,进行以下配置:
宝塔安装 PHP8.1 、MySQL 5.7.37以上版本、 Nginx 1.22.0 和 Redis 7.0.0 。安装好对应的应用之后,我们在将下载的图床程序上传到网站相应的目录并解压,然后在宝塔网站管理部分新建网站,并将将站点的运行目录指向程序的
public
文件夹。需要关闭
open_basedir
,否则会有意想不到的错误。简单来说,open_basedir 是用来限制 PHP 读取目录。
安装基本应用
创建站点
绑定运行目录
接下来将事先准备好的域名解析到图床程序站点,然后到网站设置界面,将伪静态设置为以下内容:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
伪静态设置
然后打开刚才创建的站点,会跳转到图床程序安装界面,如下图所示。你会看到运行环境检测未通过。
运行环境检测
此时我们需要到宝塔软件商店,找到已经安装好的PHP8.1,打开设置界面后选择安装扩展,安装Fileinfo、redis、readline、imagemagick扩展插件。
安装完上述插件之后,需要在PHP设置>禁用函数里,找到readlink、symlink、putenv、exec、shell_exec、chown函数进行删除,然后重启PHP服务。(getenv、chmod函数宝塔默认无禁用,所以无需设置)
运行环境通过
2.4 图床程序安装
完成上面的准备工作之后,我们在打开站点,就可以看到运行环境监测全部通过了。然后点击下一步,配置数据库信息和管理员账号。
配置数据库
其中数据库类型选择MySQL 5.7.37及以上版本,数据库链接地址和端口无需更改。数据库账号、名称和密码到数据库管理里面可以看到。
管理员邮箱和密码自行配置,完成这些配置后,就可以看到图床程序可以正常访问了。
3 可能出现的问题
如果你在安装时出现以下报错提示:
Installation error! SQLSTATE[HY000][1045]Access denied for user 'x x x x x x x x'@'localhost'(using password: YES)(SQL: SHOW FULL TABLES WHERE table_type ='BASE TABLE')
说明你在安装图床程序之前已经存在其他站点,且数据库版本低于MySQL 5.7.37,需要你备份数据库信息,到MySQL设置里将版本切换至MySQL 5.7.37及以上版本即可解决问题至此,一个图床程序便安装成功了,因为官方文档写的比较简单,部分人在部署图床的时候存在一些环境配置问题,所以我将一些配置操作详细整理了下。
4 接入又拍云USS云存储
安装完图床程序,并登录到图床之后,你可以看到有一个本地的存储策略,该策略是将上传图片存储在你的服务器。如果你需要将存储切换至其他云存储,需要创建新的存储策略,兰空图床支持支持本地
等多种第三方云储存AWS S3
、阿里云OSS
、腾讯云COS
、七牛云
、又拍云
、SFTP
、FTP
、WebDav
、Minio
。
4.1 注册账号
这里以又拍云为主,需要先到又拍云注册账号,并购买相应的服务。这里推荐使用又拍云联盟服务,每个月有15G CDN 和 10GB免费空间,搭建个人图床基本够用的。
4.2 创建云存储服务
如果你提交了又拍云联盟申请,账户内会有一个代金劵,然后进入又拍云控制台,在云产品里找到云存储并创建新服务,应用场景选择网页图片即可。
然后在加速域名里面填写准备的第二个域名,并进行对应的解析操作,该域名是图片访问地址的域名链接。
创建完云存储服务后,到账户管理中找到操作员,并创建一个操作员账号,然后在刚创建的云存储服务配置>存储管理最下面,找到操作员授权,添加相应的操作员并进行服务授权。
4.3 创建又拍云存储策略
接下来回到空兰图床,选择创建存储策略,将存储策略类型更改为又拍云USS,访问域名为上述又拍云云存储解析的域名(也就是准备的第二个域名),然后服务名称填写你所创建云存储的服务名称,并填写所创建云存储服务授权的操作员账号和密码,并点击保存。
接下来可以将右上角的存储模式切换为新创建的又拍云存储,然后上传一张图片进行测试是否可有上传成功,如果显示上传成功即表示之前的配置没有问题。
4.4 防盗链设置
如果你还需要进行防盗链设置,可以在又拍云创建的云存储配置里,找到访问控制,对Referer 防盗链管理进行设置。
白名单/黑名单
配置白名单即表示只有白名单内的网站可以打开图片,其余网站是无法引用该图片的。这里我才用的是白名单模式,需要添加的你的博客域名和图床域名,这样确保博客图片正常显示和图床可以正常预览图片。
禁止/允许 Referer 为空
Referer 防盗链的规则是判断链接打开URL地址来源,如果在白名单内则允许,否则拒绝。Referer 为空 就是URL引用图片,即直接通过链接打开图片。
如果允许 Referer 为空,则单独复制图片链接是可以在浏览器打开图片,但不能在非白名单内的站点进行引用。禁止则是相反,单独复制图片链接在浏览器无法打开图片,显示的是又拍云报错代码,这里可以创建404页面代替报错代码显示。
举个例子:当你在我博客内可以看到图片正常显示,选择一张图片右键在新标签页面打开,图片是是正常显示的,但是你复制链接并新建标签页打开,就会发现是跳转404页面,这就是设置了禁止 Referer 为空的效果。
写在最后
以上就是通过空兰图床+又拍云搭建私有图床的全部过程和详细操作,如果有遇到其他问题请查阅相关相关的官方文档,基本都可以找到对应的问题及解决方案。
- 感谢你赐予我前进的力量