前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用NGINX + MINIO + IMAGEPROXY 搭建私有图床

使用NGINX + MINIO + IMAGEPROXY 搭建私有图床

作者头像
用户8099761
发布于 2023-05-11 05:19:48
发布于 2023-05-11 05:19:48
2.6K00
代码可运行
举报
文章被收录于专栏:私人订制私人订制
运行总次数:0
代码可运行

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

图床的基础是Minio, 但minio并不提供图片缩略和裁剪功能,所以还需要用到Imageproxy和Nginx。

基于Docker安装更方便,但是不是很想用Docker,所以采用了编译安装。

编译安装nginx

安装第三方依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel

创建nginx用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groupadd nginx
useradd nginx -g nginx -s /sbin/nologin -M

从官方下载nginx源码包并解压:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://nginx.org/download/nginx-1.17.0.tar.gz
tar -zxvf nginx-1.17.0.tar.gz
cd nginx-1.17.0

配置nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --modules-path=/usr/lib64/nginx/modules --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio --with-http_gzip_static_module

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make && make install

配置管理,这里是centos7:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/lib/systemd/system/nginx.service

输入以下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启用nginx服务并设置为开机启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload
systemctl start nginx.service
systemctl enable nginx.service

安装minio

直接下载minio的二进制包就可以直接使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /usr/local/bin
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

为minio创建本地存储位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /storage

编辑minio服务器配置,其中9159是服务端口,MINIO_ACCESS_KEY是访问秘钥,MINIO_SECRET_KEY是加密秘钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat <<EOT >> /etc/default/minio
\# miinio存储名
MINIO_REGION_NAME=xman
\# minio存储卷.
MINIO_VOLUMES=/storage
\# 自定义MinIo管理.
MINIO_OPTS="--address :9159"
\# 服务器Access Key.
MINIO_ACCESS_KEY=admin
\# 服务器Secret key.
MINIO_SECRET_KEY=123456789
EOT

创建minio管理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /etc/systemd/system/
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/distributed/minio.service

注意修改其中的用户及群组

启用minio服务并设置开机启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload
systemctl start minio.service
systemctl enable minio.service

安装imageproxy

安装go

imageproxy是go编写的一款图片缩放裁剪代理程序,所以要先安装golang环境:

下载go并解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz
tar -zxvf go1.15.6.linux-amd64.tar.gz

将go加入系统环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/profile

在文件尾部输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#golang env config
export GO111MODULE=on
export GOROOT=/usr/local/go 
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /etc/profile

立即启用go

安装Aws cli

imageproxy需要 aws s3的支持,所以需要安装 aws cli

使用pip安装最新版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install epel-release
yum -y install python-pip
pip install awscli

安装完成需要进行配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws configure

按照提示输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AWS Access Key ID [None]: Q3AM3UQ867SPQQA43P2F  # 输入刚才设置的MINIO_ACCESS_KEY
AWS Secret Access Key [None]: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG # 输入刚才设置的MINIO_SECRET_KEY
Default region name [None]: us-east-1  #输入这个就可以
Default output format [None]: 回车默认就介意
aws configure set default.s3.signature_version s3v4

配置成功后,使用aws创建存储桶以验证配置是否正确,也未下一步做准备: 创建存储桶:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
aws --endpoint-url http://127.0.0.1:9159 s3 mb s3:/imageproxy

安装imageproxy

直接通过go安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get willnorris.com/go/imageproxy/cmd/imageproxy

安装完成后配置管理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/systemd/system/imageproxy.service

输入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=ImageProxy
Documentation=https://github.com/willnorris/imageproxy
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=root
Group=root

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_ACCESS_KEY}\" ]; then echo \"Variable MINIO_ACCESS_KEY not set in /etc/default/minio\"; exit 1; fi"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_SECRET_KEY}\" ]; then echo \"Variable MINIO_SECRET_KEY not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/home/gopath/imageproxy  -cache "s3://us-east-1/imageproxy/thumbnail?endpoint=127.0.0.1:9159&disableSSL=1&s3ForcePathStyle=1" -addr 0.0.0.0:8001

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

启用imageproxy并设置开机启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload
systemctl start imageproxy.service
systemctl enable imageproxy.service

配置nginx反代

imageproxy和minio都提供对外的web服务,但要将二者结合就最好使用nginx反代。

服务器配置如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;

    server_name youdomian.com;

    location ~ /thumb/ {
        rewrite ^/(?i)thumb(.*) $1 break;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001;
    }

    location ~ /ImageView/ {
        rewrite ^(.*)/(?i)ImageView/(.*) /$2/http://127.0.0.1:9159$1 break;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:9159;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-1-15,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Minio对象存储
多节点的Minio会根据不同的Access_key及Secret_Key来区分不同租户,每个租户可操作对应Server获取Object。Minio Server间可以通过不同的进程模型、容器或是虚拟机来互相隔离。
仙人技术
2020/04/29
9K0
Minio对象存储
Minio 集群搭建
https://docs.minio.io/docs/distributed-minio-quickstart-guide https://github.com/minio/minio-service
星哥玩云
2022/07/31
1.2K0
Minio 集群搭建
CentOS7部署minio对象存储
开始安装 ➜ ~ wget https://dl.minio.io/server/minio/release/linux-amd64/minio ➜ ~ chmod +x minio ➜ ~ sudo mv minio /usr/local/bin/ ➜ ~ minio --version 创建用于运行 minio 服务的用户和组 ➜ ~ sudo groupadd --system minio ➜ ~ sudo useradd -s /sbin/nologin --system -g mini
院长技术
2022/03/10
1.4K0
Linux上部署和安装MinIO
MinIO是一个高性能的分布式对象存储服务器,兼容Amazon S3 API,适用于大数据、机器学习和容器化应用等场景。本文将详细介绍如何在Linux系统上部署和安装MinIO。
知识浅谈
2025/05/16
7650
腾讯云轻量Docker部署单节点MinIO
因为腾讯云最近新推出了轻量应用服务器的云硬盘,相对于CVM的云硬盘性能几乎一模一样,而且因为上新做活动3年的1TB云硬盘只要59.7元,直接让轻量变身超级大盘鸡,我就寻思着能不能拿这硬盘整点花活,正巧听说了有个开源且成熟的对象储存系统MinIO,索性就拿来试试水……
SakuraRain
2022/03/10
2.9K0
分布式文件系统 Minio
Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容 AWS S3 云存储服务接口,非常适合存储大容量非结构化的数据,如图片、视频、日志文件、备份数据等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
陳斯托洛夫斯記
2024/08/07
1.6K0
腾讯云服务器上Linux系统安装MinIO的便捷性体验
随着云计算技术的迅猛发展,云存储已成为企业和开发者不可或缺的一部分。MinIO,作为一款高性能、高可靠性的分布式对象存储服务器,因其开源免费的特点,迅速在云存储领域崭露头角。本文将详细介绍在腾讯云服务器的Linux系统上安装和配置MinIO的过程,并分享一些实际应用案例,帮助读者快速搭建起一个高效、稳定的MinIO服务器。
Front_Yue
2024/11/27
5710
腾讯云服务器上Linux系统安装MinIO的便捷性体验
私有化部署 Outline
我在这两篇文章(https://soulteary.com/2021/09/05/opensource-documentation-wiki-software-outline-part-1.html、https://soulteary.com/2021/09/11/opensource-documentation-wiki-software-outline-part-2.html)看到了这个工具,打算试一试,结合那篇文章中罗列的信息,加上我自己的理解,基本上可以把这款软件的特点罗列如下:
凝神长老
2023/03/25
4.4K0
私有化部署 Outline
使用 Velero 备份还原 Kubernetes 集群
Velero(https://velero.io)(可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装 Velero,可以为你提供以下能力:
我是阳明
2021/10/08
1.2K1
分布式minio搭建指南
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
从大数据到人工智能
2022/01/19
2.2K0
开源分布式对象存储-MinIO 顶
Minio可能在国内知道和用的人不是很多,我第一次接触Minio是也是当时我们需要使用Spinnaker集群来管理和维护内部的Kubernetes集群,而Spinnaker的中的持久化存储就使用的是Minio Spinnaker集群搭建。
BGBiao
2020/02/18
4.5K3
开源分布式对象存储-MinIO
                                                                            顶
使用MinIO搭建图床与PicGo联动
默认用户名密码为之前的docker参数 建议在docker参数定义时就定义要使用的管理员用户名密码
慕阳MuYoung
2025/05/19
1030
使用MinIO搭建图床与PicGo联动
分布式文件系统实战,使用MinIO构建分布式文件系统!
随着文件数据的越来越多,传统的文件存储方式通过tomcat或nginx虚拟化的静态资源文件在单一的服务器节点内已经无法满足系统需求,也不利于文件的管理和维护,这就需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。
章为忠学架构
2023/03/23
5.2K0
分布式文件系统实战,使用MinIO构建分布式文件系统!
Centos 7 安装系列(9):Minio (rpm 方式)
server 后面跟着的使minio 的数据目录;console-address 后面跟着的是minio 的管理端访问端口,若不指定,将会随机赋予端口号。
用户10449202
2023/03/23
3.9K0
通过Minio搭建私有化对象存储服务_开源PaaS Rainbond最佳实践
Minio是建立在云原生的基础上;有分布式和共享存储等功能;旨在多租户环境中以可持续的方式进行扩展的对象存储服务。它最适合存储非结构化数据,如:照片、视频、日志文件、容器/虚拟机/映像等,单次存储对象的大小最大可达5TB。
Rainbond开源
2018/05/17
4.3K2
Linux 服务器环境搭建
官网下载地址:https://www.oracle.com/java/technologies/downloads
默存
2024/03/22
2980
Linux 服务器环境搭建
使用 [MinIO] 搭建 S3 兼容的云存储服务
MinIO 是一个高性能的、S3 协议兼容的对象存储服务器,适合自建文件云存储,支持多用户、多桶、分布式部署。
一粒花椒
2025/03/25
6590
Jumpserver2.2部署文档
需要配置这个数据库软链,不然后面会出现项目初始化找不到mysqlclient的问题
alexhuiwang
2021/04/09
8550
SpringBoot 2.x 开发案例之整合MinIo文件服务
在之前的图床开发中撸主曾使用了分布式文件服务FASTDFS和阿里云的OSS对象存储来存储妹子图。奈何OSS太贵,FASTDFS搭建配置又太繁琐,今天给大家推荐一款极易上手的高性能对象存储服务MinIO 。
小柒2012
2020/05/09
5.8K0
SpringBoot 2.x 开发案例之整合MinIo文件服务
minio节点扩展_多节点部署定时任务
gitee:https://gitee.com/pythonloser/springboot-minio/tree/master
全栈程序员站长
2022/11/08
2.9K0
相关推荐
Minio对象存储
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验