背景

Vercel+MongoDB 部署的 Twikoo 需要借助外部图床才能实现评论区上传图片功能(按照官方文档,私有部署也需要外部图床)。之前我一直使用 sm.ms 免费图床,但恼于 5GB 的空间和 5MB 的单文件大小,所以特地查了查 Twikoo 文档,发现还有一个可以私有部署(即部署在私有服务器上)的兰空图床可以用。本文将介绍从部署到应用兰空图床的全过程。

在此之前,请确保你的服务器具有如下环境:

  • 宝塔面板 7.9.3
  • Nginx
  • PHP 8.0.2 以上版本
  • MySQL 5.7 以上版本

详细要求:

  1. PHP

1.1. 宝塔面板进入软件商店 - 已安装 - PHP - 设置。

1.2. 进入安装扩展,安装 fileinfo 和 imagemagick。

1.3. 进入禁用函数,删除 exec、shell_exec、readlink、symlink、putenv、getenv。

  1. MySQL

如需升级,宝塔面板进入软件商店 - 已安装 - MySQL - 设置 - 切换版本。如已有数据库,按照提示备份好所有数据库并下载,开启数据库回收站然后删除所有数据库。切换版本后再从数据库回收站中恢复数据库,再从备份好的数据库文件恢复一次

安装

以 img.casecori.top 为例,先去域名注册商处在 casecori.top 名下把 img 前缀通过 A 记录解析到服务器公网 IP,或者你也可以为图床购买一个域名然后解析到服务器,这里只考虑前种情况。随后宝塔面板进入网站 - 添加站点,按照下图配置后提交。

添加站点

访问下载页下载图床程序,在最新 Assets 下选第一个。

宝塔面板进入文件,定位到 /www/wwwroot/img.casecori.top,上传并解压下载好的文件。全选文件夹内的所有文件,工具栏点权限,按照下图配置后确定。

修改权限

宝塔面板进入网站,设置刚刚建好的站点,点网站目录,关闭防跨站攻击(open_basedir),网站目录设置为 /www/wwwroot/img.casecori.top/public。

再点伪静态,填入以下内容并保存。

1
2
3
location / {
try_files $uri $uri/ /index.php?$query_string;
}

再点 SSL,在 Let’s Encrypt 栏申请证书,随后在当前证书栏强制 HTTPS。

访问站点,会有检测过程,如果出现了红叉,你得检查 PHP 是否安装了相应扩展以及是否删除了相应禁用的函数。

在填写数据库页面填写数据库及密码,并创建管理员账号,不用修改端口。如果报错,检查 MySQL 版本号是否在 5.7 以上。

配置

修改容量

图片默认存储在本地,你需要根据服务器硬盘剩余容量来定义图床容量。

进入用户管理 - 编辑,修改总容量(单位:KB),例如我要设置为 15GB,直接输入 15728640 并确认保存。

修改最大文件大小

最大文件大小受 Nginx 和 PHP 的影响,它们决定你能设置的上限,默认 50MB。你可以在宝塔面板 - 软件商店 - 已安装 - Nginx - 性能调整 - client_max_body_size 和宝塔面板 - 软件商店 - 已安装 - PHP - 上传限制中修改。

进入角色组 - 编辑,修改最大文件大小(单位:KB),例如我要设置为 20MB,直接输入 20480 并确认保存。

图片链接转为 HTTPS

进入存储策略 - 编辑,修改访问网址,把协议头 http 改为 https 并确认修改。

图片默认权限改为公开

进入设置 - 图片默认权限,选中公开并保存设置。

允许游客上传

进入系统设置,检查启用接口和允许游客上传是否打开以及账号验证是否关闭。

应用

进入接口,复制接口 URL,修改,在后面添加 /tokens。

打开这个网址,按照下面的图片和代码填写。

POST

1
2
3
4
{
"email": "管理员邮箱",
"password":"管理员密码"
}

在下方 Response 中的 Body 栏,你将看到类似 1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5 的 Token,复制好它。

进入 Twikoo 管理面板 - 配置管理 - 插件,IMAGE_CDN 填入图床首页,例如 https://img.casecori.top注意,末尾不要添加斜杠。IMAGE_CDN_TOKEN 填入刚刚复制的 Token。


大功告成,现在,上传图片试试效果吧!