共计 4840 个字符,预计需要花费 13 分钟才能阅读完成。
前世的原因
相信很多同学跟我一样,使用 Typora 做技术文档,Blog 的创作,然后用类似 PicGO 这样的工具上传到 Github,其实这是个不错的做法。
好处就是 免费 , 简单 , 方便,缺点呢,自己本地看还行,因为我知道大家都会武功或者借助一些技巧,而且呢发文到各大平台问题也不大。毕竟各大平台的 Markdown 文档编辑器会自动给我们上传图片到他们自己的图床。
如果是在自己 Blog 站点直接发出去呢,里面图片地址是 githubusercontent.com 域名下的,那么对于网络条件不好的用户,就会显示不出来或者加载很慢,毕竟不是谁都会武功的对吧。
等等,我有个好主意!😈😈
【那我把我 markdown 里面的链接都替换成平台的不就好了么?】
!!! 像我这样,有这种想法呢也正常的。
试一试
平台还是比我们要聪明点啦。我们发现把地址复制出来是可以正常显示的。
这里肯定又有学习不错的大聪明说,我学过,无非是别人加了防盗链,之前 gitee 也是。我们把 Header 里面的 Referer 改成平台自己支持的域名就行了。
兄弟,你学的很好,那你就这么玩哈。
自己演绎了个剧本大家不要见笑。
其实呢,对于各大平台来说不管是 Gitee,还是知识社区,进行一些防盗链是非常正常的,毕竟服务器资源都是要花钱的,也会有一些其他风险,我觉得作为行业内的还是应该理解的,只是 Github 这样的比较另类。
今生的解决办法
那么怎么解决呢,用 Github 的确是不行了。
买个 OSS 服务吧。可以是可以,花点钱,趁现在 618 各大云厂商都在推出促销服务,比较现在茅台价格都被电商玩出事了对吧,有需要的同学可以去看看
其实也是个不错的方案,毕竟对象存储服务就是用来存放文件,图片,日志等东西的,而且选好存储类型的话,预算还是不高的,玩过云资源的都知道,不管是哪种类型的资源,存储本身是不贵的,流量才贵。所以大家可以自己权衡下,我也没算过账
【我怕哪天网站太火,OSS 资源刷爆账单!】
一是做梦,有那一天,你还在乎这点钱?
还是好好搬砖吧。哎,最近又……,算了不提了
想到手上还有两台轻量应用服务器,包月流量不小,带宽也还可以,现在就跑了几个应用和 MySQL,Redis,ES 等中间件,还可以搞
【等等,你不是前端吗,要这些东西干嘛】
我骨子里是后端
MinIO
MinIO is a high-performance, S3 compatible object store. It is built forlarge scale AI/ML, data lake and database workloads. It is software-definedand runs on any cloud or on-premises infrastructure. MinIO is dual-licensedunder open source GNU AGPL v3 and a commercial enterprise license.
【说的真好,嗯。。说的啥】
它说自己很牛逼
【?!】
就是自己能用来搭建对象存储服务。
安装
当然,你可以裸机直接装,我选择 docker 的方式
查询下信息
docker search minio
# 我们选择第一个
创建数据目录
# 请相对于自己的目录
mkdir -p data/containers/minio/data
创建 docker-compose.yml
目录:data/containers/minio/docker-compose.yml
请相对于刚才自己创建的目录
services:
minio:
image:"minio/minio:latest"
restart: "always"
ports:
- "9006:9000"
- "9007:9001"
volumes:
- ./data:/data
environment:
- MINIO_ROOT_USER=<yourname>
- MINIO_ROOT_PASSWORD=<yourpassword>
command: minio server /data --console-address ":9007"
端口 9006 用于访问
端口 9007 用于控制台
ps: 这里留了个小坑,看看有没有同学发现,评论区见
创建启动服务
docker compose up -d
查看服务状态和日志
docker compose ps
docker compose logs -f
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
minio-minio-1 minio/minio:latest "/usr/bin/docker-ent…" minio 3 minutes ago Up 3 minutes 0.0.0.0:9006->9000/tcp, 0.0.0.0:9007->9001/tcp
[root@VM-4-3-centos minio]# docker compose logs -f
minio-minio-1 | Formatting 1st pool, 1 set(s), 1 drives per set.
minio-minio-1 | WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
minio-minio-1 | MinIO Object Storage Server
minio-minio-1 | Copyright: 2015-2024 MinIO, Inc.
minio-minio-1 | License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
minio-minio-1 | Version: RELEASE.2024-06-13T22-53-53Z (go1.22.4 linux/amd64)
minio-minio-1 |
minio-minio-1 | API: http://172.18.0.2:9000 http://127.0.0.1:9000
minio-minio-1 | WebUI: http://172.18.0.2:9007 http://127.0.0.1:9007
minio-minio-1 |
minio-minio-1 | Docs: https://min.io/docs/minio/linux/index.html
minio-minio-1 | Status: 1 Online, 0 Offline.
minio-minio-1 | STARTUP WARNINGS:
minio-minio-1 | - Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
minio-minio-1 | - The standard parity is set to 0. This can lead to data loss.
验证下服务
这里我们直接把 9006 和 9007 端口暴露到公网,然后自己本地测试下
ps:验证后从防火墙上把这两个接口禁用掉,再用 nginx 反向代理过去
创建下 bucket,这里就叫 blog-static,后续其他使用场景也可以用创建其他的
bucket
设置下访问规则并测试下
设置访问规则
测试图片
测试访问下
测试图片
***ps: 这里有个非常重要的点,就是我们一开始设置的 9007 端口是控制台,那么我们实际访问的端口其实是 9006.
域名配置和 nginx 反向代理
接下来就是讲 MinIO 的服务和控制台配置到自己域名上去
申请域名和 HTTPS 证书的步骤这里就忽略了,大家可以去查下资料
这里直接给出 nginx 的配置信息,如果需要对应安装部署步骤的话评论区或者私聊下我
server {
listen 443 http2 ssl;
server_name static.miaodaddy.xyz;
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]."; #配置禁用 gzip 条件,支持正则。此处表示 ie6 及以下不启用 gzip(因为 ie 低版本不支持)gzip_vary on;
access_log /var/log/nginx/minio.access.log;
ssl_certificate /etc/nginx/ssl/static.miaodaddy.xyz_bundle.pem;
ssl_certificate_key /etc/nginx/ssl/static.miaodaddy.xyz.key;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:9006;
}
}
【现在免费 SSL 证书有效期只有 90 天,nnd】
配置完后,就能愉快的配置 PicGo 和 Typora 了
测试域名和 SSL 配置后的效果
PicGo 配置
这里首先要在 Minio 上申请下 AK 和 SK,记得保存下
ak 和 sk
先在 PicGo 的插件里面安装 MinIO 的插件,然后我们先测试下 PicGo 的功能是否正常
【我承认你这个配置是一次性成功的😄】
Typroa 配置
最后一步就比较容易了
总结
还是一段比较顺利的探索之旅
【狗屁,报错,查资料,你不知道你重试了多少次啊?🤭】
其实这里还有个小问题,就是每次上传后,返回的图片地址包含了域名加 443 的情况,这个留给大家思考下,是哪里出的问题
但是对于 MinIO 的探索还远没有结束,下一期我们可以看下 MinIO 更高阶的功能,比如权限配置,如果部署达到高可用的目的
其实真要部署高可用的话,需要更多的机器资源,到时候算下 ROI 的话,还不是直接买 OSS 或者 COS 呢,对吧,到那一天再说
但是我们可以继续挖掘下 Minio 的功能,比如哪天要迁移到 OSS,我们如何进行,我们下期见
你的工作,由 AI 赋能!🔥
还在为文案、脚本卡壳、做视频、写代码、设计图片灵感枯竭而烦恼吗?🤯
板板 AI,你的工作好帮手!
一键生成 各种文案、脚本、图片、视频、代码、报告,轻松应对各种工作 / 营销需求!
现在注册体验,即可获得:
- 🎁 30 积分基础模型余额
- 🎁 3 积分高级模型余额
- 🎁 3 积分绘画余额
还不快来试试?
点击链接,开启你的 AI 创作之旅!>>>https://www.banbanai.cn
板板 AI,让你的工作效果发挥无限可能! 🚀