Twikoo 通过私有部署兰空图床实现图片上传
背景
Vercel+MongoDB 部署的 Twikoo 需要借助外部图床才能实现评论区上传图片功能(按照官方文档,私有部署也需要外部图床)。之前我一直使用 sm.ms 免费图床,但恼于 5GB 的空间和 5MB 的单文件大小,所以特地查了查 Twikoo 文档,发现还有一个可以私有部署(即部署在私有服务器上)的兰空图床可以用。本文将介绍从部署到应用兰空图床的全过程。
在此之前,请确保你的服务器具有如下环境:
- 宝塔面板 7.9.3
- Nginx
- PHP 8.0.2 以上版本
- MySQL 5.7 以上版本
详细要求:
- PHP
1.1. 宝塔面板进入软件商店 - 已安装 - PHP - 设置。
1.2. 进入安装扩展,安装 fileinfo 和 imagemagick。
1.3. 进入禁用函数,删除 exec、shell_exec、readlink、symlink、putenv、getenv。
- 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 | location / { |
再点 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。
打开这个网址,按照下面的图片和代码填写。
1 | { |
在下方 Response 中的 Body 栏,你将看到类似 1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5
的 Token,复制好它。
进入 Twikoo 管理面板 - 配置管理 - 插件,IMAGE_CDN 填入图床首页,例如 https://img.casecori.top
,注意,末尾不要添加斜杠。IMAGE_CDN_TOKEN 填入刚刚复制的 Token。
大功告成,现在,上传图片试试效果吧!