編譯自己的minio運行程序

1.下載源碼包

源碼託管在github,如果嫌下載慢就去碼雲急速下載裏面下載:

github倉庫地址:https://github.com/minio/minio/releases
gitee鏡像倉庫:https://gitee.com/mirrors/minio/tags

假設我這裏下載了的文件是這個 RELEASE.2023-12-14T18-51-57Z.tar.gz ,我們把壓縮包解壓後改名爲minio

2.修改項目源碼

  • 添加功能:配置crossdomain.xml

minio訪問crossdomain.xml可以看到返回xml內容:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy>
    <allow-access-from domain="*" secure="false" />
</cross-domain-policy>

該配置安全掃描爲不安全項,需要設置allow-access-from爲具體的域名。

現在把它修改爲,讀取配置的環境變量,然後設置爲具體的域名,讓其返回類似下面的xml,不能使用*號

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <allow-access-from domain="www.baidu.com" secure="false" />
    <allow-access-from domain="112.112.112.112" secure="false" />
</cross-domain-policy>

修改步驟:

(1)修改項目中的internal/config/constants.go文件,加入需要讀取環境的名稱,具體看修改後源碼constants.go第86~91行。
(2)然後修改crossdomain.xml對應的處理類cmd/crossdomain-xml-handler.go,修改讀取環境變量配置的值,具體查看修改後的文件crossdomain-xml-handler.go
(3)然後訪問對應的地址,即可使用配置的xml。

  • 添加功能:自定義響應頭Server的信息

請求minio接口時,返回的請求頭會返回Server: MinIO,這樣掃描會被針對掃描,需要修改爲自定義的信息,例如這樣:

Server: MyFs

這樣就可以不會暴露出文件服務器的信息了。

修改步驟:直接修改cmd/api-headers.go文件,讀取配置環境變量,修改後源碼api-headers.go第55~59行;

  • 添加功能:追加安全掃描提示的響應頭

安全掃描提示需要響應頭

Referrer-Policy: strict-origin-when-cross-origin
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: master-only
X-Xss-Protection: 1; mode=block

修改步驟:修改cmd/generic-handlers.go文件,把缺少的響應頭追加上即可,具體查看修改後的源碼generic-handlers.go第522~532行。

3.編譯項目

先確認go的版本 >1.19,然後把 GOPROXY 設置爲國內鏡像地址:

go version
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

配置環境變量GOROOTGOPATH,並把go.exe所在的文件夾添加到PATH中,下面是例子:

# window
setx GOROOT "C:\Program Files\Go"
setx GOPATH "C:\Users\lixin\go"

# linux
export GOROOT=/usr/local/go
export GOPATH=~/go
export PATH=$PATH:$GOROOT/bin

然後進入項目文件夾,把項目需要的依賴庫下載下來:

go mod download

下載完成後執行編譯:

# window
go build -ldflags "-s -w" -o E:\develop\minio\build\minio.exe github.com/minio/minio

# linux
go build -ldflags "-s -w" -o /usr/local/minio/build/minio github.com/minio/minio

linux編譯時會使用tmp目錄,如果tmp磁盤不足會報錯,可以臨時擴容一下:

mount -o remount,size=2G /tmp

4.運行文件服務

使用環境變量配置啓動參數:

export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=Minio@1234
export MINIO_BROWSER=off
export MINIO_API_CORS_ALLOW_ORIGIN="https://10.202.1.1,https://61.166.240.1:8080"

# 新加的配置參數
export MINIO_ALLOW_ACCESS_FROM_DOMAIN=10.202.1.1,61.166.240.1:8080
export MINIO_HTTP_SERVER_INFO=MyFs

變量說明:

變量名稱 說明
MINIO_ROOT_USER 管理控制檯賬號
MINIO_ROOT_PASSWORD 管理控制檯密碼
MINIO_BROWSER off關閉web控制檯
MINIO_API_CORS_ALLOW_ORIGIN api可使用域名
MINIO_ALLOW_ACCESS_FROM_DOMAIN [new] crossdomain.xml文件的域名配置
MINIO_HTTP_SERVER_INFO [new] 響應頭Server的信息

使用9000端口啓動文件服務:

./minio server --address :9000 ./data
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章