前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hexo -32- 使用 chevereto 自建图床

Hexo -32- 使用 chevereto 自建图床

作者头像
为为为什么
发布2022-08-04 14:01:37
1.2K3
发布2022-08-04 14:01:37
举报
文章被收录于专栏:又见苍岚

chevereto 是国外开发的一款自建图床工具,本文记录使用 chevereto 搭建自有图床的过程。

背景

自从开始写 Hexo 博客,图床便必不可少,从开始的 Github 图床到七牛云图床,之后由于不可抗力切换到 cdn.jsdelivr,又由于速度太慢使用每张图不能超过 1M 的gitee,之后又是不可抗力退回了 cdn.jsdelivr,再到前提 5月17日,cdn.jsdelivr 的备案也到期了,决心自己建立图床。

简介

  • Chevereto 是一款自建图床程序
  • Chevereto 支持多用户系统、相册集、统一仪表板、HTML 可拖曳式上传、桌面版上传插件、多种外部存储(Amazon S3、Google Cloud、阿里云 OSS 等)、自定义主题、多语言、CDN 和自定义 API 等功能。
  • 程序本身收费,但有免费版,功能受限,个人使用也是足够的
  • 免费版 Chevereto 链接:https://github.com/rodber/chevereto-free
  • 更新频繁,当前最新版本 1.6.2
  • 官方网站:https://chevereto.com/

环境配置

  • Chevereto 依赖环境 PHP,MySQL,Nginx
    • 建议 PHP 版本7 以上
    • MySQL 5.7 以上
    • Nginx 1.2
  • 如果安装环境不熟悉可以使用宝塔配置相关环境

安装配置

建立站点
  • 在宝塔面板中建站
    1. 标准域名:端口是没有问题的,但如果域名没有备案也可以直接公网IP:端口
    2. 域名记得要解析到对应IP
    3. 根目录为网站在服务器的位置
    4. 需要创建数据库
  • 建站调试成功后,删除目录下的 index.html404.html
配置源码
  • 需要下载 chevereto安装包 或源码,当前最高版本 1.6.2 ,但较高版本放到服务器上打开网页一片空白,还不清楚原因,烦请路过的大佬指点
  • 建议下载 1.3.0 版本的代码
  • github地址:https://github.com/rodber/chevereto-free
代码语言:javascript
复制
git clone git@git.zhlh6.cn:rodber/chevereto-free.git
cd chevereto-free
git checkout 1.3.0

  • 将仓库中文件拷贝到站点根目录中,以上文地址为例
代码语言:javascript
复制
sudo cp -r * /www/wwwroot/Chevereto

  • 为源码中三个文件夹开放权限
代码语言:javascript
复制
chmod -R 777 app
chmod -R 777 content
chmod -R 777 images

  • 设置站点 Nginx 配置文件,加入如下代码:
代码语言:javascript
复制
location / {
    if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } try_files $uri $uri/ /api.php; } location /admin { try_files $uri /admin/index.php?$args;
    }

登录测试
  • 完成以上步骤后访问建站链接,即进入 Chevereto 初始化界面

其中的数据库信息需要在 MySQL 中建立,可以通过宝塔面板的 数据库 选项卡建立,首次使用需要更新数据库密码 host 和 prefix 默认即可

  • 随后填入管理员信息即可完成安装

上传图像

常规上传
  • 在 Chevereto 面板上选择上传按钮可以进行拖拽上传图像
  • 将图像拖拽上传
  • 之后在 Dashboard 的 Images 选项卡中可以看到上传的图像
  • 点击图像名称可以进入图像详情页面,其中的嵌入代码即为图像链接

这个链接可以用于各种文档的图片插入

API 上传图片
  • chevereto 支持 API 上传图像
  • 中文文档:http://ch.cndrew.cn/cn/API/API V1/#api_4
  • API版本一使用一个API密匙,你可以在仪表盘 > 设置 > API里面设置、查看。
  • API v1调用可以使用POST或GET请求方法来完成,但是由于GET请求受URL允许的最大长度限制,您应该更多的使用POST请求方法。
  • 请求网址
代码语言:javascript
复制
http://mysite.com/api/1/<action>/

  • 参数 密匙: API版本一的密匙,它可以在你的管理员设置面板进行设置。 操作: 你想做什么 [values: upload]. 来源: 图像URL或base64编码的图像字符串。您还可以在请求中使用文件[“source”]。 格式: 设置返回格式[values: json (默认的), redirect, txt].
  • 示例调用
代码语言:javascript
复制
GET http://mysite.com/api/1/upload/?key=12345&source=http://somewebsite/someimage.jpg&format=json

  • 在浏览器中可以执行上述 http 请求
代码语言:javascript
复制
http://xxx.xx.xx.xxx:xxx/api/1/upload/?key=xxxxxxxxxxxxxxxxxxx&source=https://x0.ifengimg.com/feather/images/62184/2021/06/09/16232207753201478.jpg&format=json

  • 返回报文
代码语言:javascript
复制
{"status_code":200,"success":{"message":"image uploaded","code":200},"image":{"name":"16232207753201478","extension":"jpg","size":"53967","width":"300","height":"250","date":"2022-05-20 10:25:19","date_gmt":"2022-05-20 02:25:19","title":"16232207753201478","description":null,"nsfw":"0","storage_mode":"datefolder","md5":"3117e2ce60d991496b02d75101832add","source_md5":null,"original_filename":"16232207753201478.jpg","original_exifdata":null,"views":"0","category_id":null,"chain":"5","thumb_size":"13225","medium_size":"0","expiration_date_gmt":null,"likes":"0","is_animated":"0","is_approved":"1","file":{"resource":{"type":"path"}},"id_encoded":"t1H","filename":"16232207753201478.jpg","mime":"image\/jpeg","url":"http:\/\/xxx.xxx.xxx.xxx:6222\/images\/2022\/05\/20\/16232207753201478.jpg","url_viewer":"http:\/\/xxx.xxx.xxx.xxx:6222\/image\/16232207753201478.t1H","url_short":"http:\/\/xxx.xxx.xxx.xxx:6222\/image\/t1H","image":{"filename":"16232207753201478.jpg","name":"16232207753201478","mime":"image\/jpeg","extension":"jpg","url":"http:\/\/xxx.xxx.xxx.xxx:6222\/images\/2022\/05\/20\/16232207753201478.jpg","size":"53967"},"thumb":{"filename":"16232207753201478.th.jpg","name":"16232207753201478.th","mime":"image\/jpeg","extension":"jpg","url":"http:\/\/xxx.xxx.xxx.xxx:6222\/images\/2022\/05\/20\/16232207753201478.th.jpg","size":"13225"},"size_formatted":"54 KB","display_url":"http:\/\/xxx.xxx.xxx.xxx:6222\/images\/2022\/05\/20\/16232207753201478.jpg","display_width":"300","display_height":"250","views_label":"\u6b21\u6d4f\u89c8","likes_label":"\u559c\u6b22","how_long_ago":"1 \u79d2 \u524d","date_fixed_peer":"2022-05-20 10:25:19","title_truncated":"16232207753201478","title_truncated_html":"16232207753201478","is_use_loader":false},"status_txt":"OK"}

  • 从json 的 image . url 键值中可以获取图像上传后的链接
Picgo 上传
  • picgo 插件可以结合各大图床完成图像一键上传,也支持自建图床 Chevereto,需要额外安装插件
  • 在插件设置搜索 chevereto,安装插件
  • 配置上传信息
  • 之后讲道理可以正常使用了 我在配置过程中一直没能成功上传图像,原因未知
  • 还有一种方法是 Picgo 安装 web-uploader 插件,自定义配置信息上传图像

很遗憾这种方式配置后仍然无法正常上传,原因未知 错误信息 : {}

直接存入 image 文件夹
  • 在Chevereto 文件夹中,直接将图像 1.png 拷贝进 images 文件夹
  • 组合链接,chevereto-url / 图像路径
代码语言:javascript
复制
http://101.43.39.125:6222/images/1.png
即可直接访问,通过该方式可以绕过 chevereto 的上传系统,继而保存其他非图像格式的文件 该方式其实没有用到 chevereto ,Nginx 本身支持的相关功能

错误处理

setting.php 不可写入
  • 需要好好配置几个文件夹的可写权限

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 简介
  • 环境配置
  • 安装配置
    • 建立站点
      • 配置源码
        • 登录测试
        • 上传图像
          • 常规上传
            • API 上传图片
              • Picgo 上传
                • 直接存入 image 文件夹
                • 错误处理
                  • setting.php 不可写入
                  • 参考资料
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档