一、介绍
在云服务器以docker技术用minio搭建对象储存,以picgo作为图床管理,集成以上四者的优点。
二、步骤
1、准备一台云服务器,登录
于服务器安全组开启相应端口
2、安转docker
菜鸟教程或参考以下步骤
安转docker
1
2
|
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
|
启动 docker 并设置开机自启
安装完成后,启动 Docker 服务,并设置它在系统重启时自动启动:
1
2
|
sudo systemctl start docker
sudo systemctl enable docker
|
验证安装
通过运行简单的测试容器来验证 docker 是否正确安装并正常工作:
1
|
sudo docker run hello-world
|
3、docker部署minio
拉取minio镜像
1
|
docker pull minio/minio
|
创建挂载点目录
在服务器上创建两个目录:一个用于存储 MinIO 的配置文件,另一个用于存放实际的数据。
1
2
|
mkdir -p /usr/local/minio/config
mkdir -p /usr/local/minio/data
|
创建并启动 MinIO 容器
1
2
3
4
5
6
7
8
9
10
11
12
|
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
--privileged=true \
-e "MINIO_ROOT_USER=admin" \#minio的登录名
-e "MINIO_ROOT_PASSWORD=admin123" \#minio的密码
-v /usr/local/minio/data:/data \
-v /usr/local/minio/config:/root/.minio \
minio/minio server \
--console-address ":9000" \
--address ":9001" /data
|
其中9001端口为控制台端口,9000端口为api端口。
自己替换设置账密
4、minio控制台设置
5、安转配置picgo
以windows举例
-
安装node.js,插件需要其支持,官网下载。
-
安装picgo官网下载、安装对应系统版本
-
在picgo中搜索安装minio插件
-
配置图床
可参考官方配置说明或以下设置
endPoint 服务器的ip地址
port api端口 9000
accessKey 与secretKey填写之前创建的密钥
bucket 存储桶的名字
三、自定义图床域名
1、利用nignx反代
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
server {
listen 80;
server_name ksvi.com;
location / {
proxy_pass http://localhost:19001; # MinIO 控制台地址
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
|
server {
listen 80;
server_name api.com;
location / {
proxy_pass http://localhost:19000; # MinIO API 地址
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;
}
}
|
2、picgo设置自定义域名
为控制台域名
四、错误与解决
1、问题:因为反代缓存导致minio拒绝picgo的上传
原因:反代缓存会把head请求转换为get请求
解决:禁用反代缓存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# 确保不会将 HEAD 请求转换为 GET 请求
proxy_cache_convert_head off;
# 关闭缓冲以避免任何潜在的缓存行为
proxy_buffering off;
# 设置超时时间
proxy_connect_timeout 60s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# 禁用缓存规则
if ($request_method = POST) {
set $no_cache 1;
}
if ($query_string != "") {
set $no_cache 1;
}
proxy_no_cache $no_cache;
proxy_cache_bypass $no_cache;
|
2、问题:minio图片无法访问
原因:minio控制台直接设置桶为匿名只读时,桶的策略出错,仍为私密。
解决:先将桶的策略改为公共,再改为匿名只读,重复几次。