什么是图床?
图床,也就是专门提供存储图片的地方,我们只要通过图床提供的 API 接口,把图片上传上去,就可以通过外链访问了,根本不用操心图片是怎么存的,硬盘空间不够了,硬盘坏了,访问速度比较慢等等问题,这些图床都会帮我们搞定,他们会用各种技术帮我们做图片相关的优化和服务,比如多机互备、CDN 加速、图片处理、图片鉴黄、文本识别等等。
目前图床可以分为两种,一种是公共图床,一种是自建图床。
公共图床也就是利用公共服务的图片上传接口,来提供图片外链的服务,比如新浪微博(现在不太好用了)。
常见的公共图床:
Imgur:https://imgur.com/
SM.MS:https://sm.ms/
阿里云OSS:https://www.aliyun.com/price/product#/oss/detail
又拍云OSS:https://www.upyun.com/products/file-storage
七牛云OSS:https://developer.qiniu.com/kodo
自建图床,也就是利用各大云服务商提供的存储空间或者自己在 VPS 上使用开源软件来搭建图床,存储图片,生成外链提供访问。
开源的自建图床:
Chevereto: https://chevereto.com/free
Lychee: https://lychee.electerious.com/
本文介绍的是 Chevereto
开源图床的安装流程。
下载安装文件
首先,确保服务器已经装有如下环境和服务:
PHP 7 (PHP 5.6 min) # 本人的版本为 7.4
MySQL 8 / MariaDB 10 (ALL PRIVILEGES) # 本人的版本为 MySQL 5.7
Apache / NGiNX # 本人的服务为 Nginx 1.18
URL rewriting
装有以上环境和服务后,预设好相关环境配置:
在 Nginx
配置文件中加入以下代码:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
在 MySQL
中创建好 Chevereto 的数据库。
然后下载 Chevereto 的安装文件:
会下载一个 installer.php
的 php 文件,将这个文件上传到服务器站点目录下,然后在浏览器输入网址 http://localhost/installer.php
,接下来根据指引一步步操作即可。
常见错误提示和解决方案
如果安装好后打开图床主页提示以下信息:
Unparenthesized `a ?: b ? c : d` is deprecated. Use either `(a ?: b) ? c : d` or `a ?: (b ? c : d)` in /Chevereto-Free/app/loader.php on line 481
是由于 PHP 版本不同导致代码格式不规范的错误提示,可以将 loader.php
文件 第481行
的代码替换为下面这句:
$handler::setCond('explore_enabled', Login::isAdmin() ?: (getSetting('website_explore_page') ? (Login::getUser() ?: getSetting('website_explore_page_guest')) : false));
如果图床主页提示以下错误:
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /localhost/lib/G/functions.php on line 254
则可以将 functions.php
代码中的 第254行
尝试以下2种修复方案(我用的第2种):
# 方案1:将254行的 continue; 改为
break;
# 方案2:将 continue; 改为
continue 2;
以上都改好后,刷新图床主页后错误提示就消失了。
参考阅读:
https://www.moerats.com/archives/390/
https://merlinblog.xyz/wiki/chevereto.html
https://xiaoyou66.com/archives/774