介紹
從基於雲的備份解決方案到高可用性內容傳送網絡(CDN),對象存儲已成為現代技術領域不可分割的一部分。 而且,由於其占地面積小,界面簡單,與多個雲存儲服務兼容, Minio對象存儲服務器具有很大的沖擊力。
Minio是一種開源對象存儲服務器,可將非結構化數據(如照片,視頻,虛擬機映像,容器和日志文件)存儲為對象。 在分布式模式下,Minio提供了一個單一的對象存儲服務器,它可以跨多個服務器分布多個驅動器
Minio寫在Go中,附帶命令行客戶端和瀏覽器界面,並支持高級消息隊列協議(AMQP) , 彈性搜索 , Redis , NATS和Postgres目標的簡單排隊服務。
在本教程中,您將:
-
在您的DigitalOcean服務器上安裝Minio服務器,並將其配置為systemd服務。
-
使用“加密”設置SSL / TLS證書,以確保服務器和客戶端之間的通信安全。
-
通過HTTPS訪問Minio的瀏覽器界面,以使用和管理服務器。
先決條件
要完成本教程,您將需要:
-
一個Ubuntu 16.04服務器通過遵循這個Ubuntu 16.04初始服務器設置教程設置 ,包括sudo非root用戶和防火牆。
-
為您的Minio服務器設置了以下DNS記錄。 有關如何添加它們的詳細信息,請參閱此主機名教程 。
- 您的服務器名稱(例如,
minio-server.example.com
)指向您的對象服務器的IPv4地址的記錄。 - 如果您希望您的服務器可以通過IPv6訪問,則您的服務器名稱指向對象服務器的IPv6地址的AAAA記錄。
- 您的服務器名稱(例如,
-
使用本指南安裝在服務器上,在Ubuntu 16.04上安裝Go 。
第1步 - 安裝和配置Minio服務器
您可以通過編譯源代碼或二進制文件來安裝Minio服務器。 在這一步中,我們將把服務器安裝成最簡單的方法 - 通過二進制文件,然后我們將配置所有的內容。
首先,登錄到您的服務器:
ssh sammy@your_server_ip
如果最近還沒有更新包數據庫,請立即更新:
sudo apt-get update
接下來,下載Minio服務器的二進制文件:
curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
一個名為minio
的文件將被下載到您的工作目錄中。 使其可執行:
sudo chmod +x minio
現在,將文件移動到Minio的系統啟動腳本期望找到的/usr/local/bin
目錄中:
sudo mv minio /usr/local/bin
出於安全考慮,我們不希望以root身份運行Minio服務器。 而且,由於我們將在第2步中使用的systemd腳本尋找一個名為minio-user的用戶帳戶和組,現在我們來創建它們。
sudo useradd -r minio-user -s /sbin/nologin
將二進制文件的所有權更改為minio-user :
sudo chown minio-user:minio-user /usr/local/bin/minio
接下來,我們需要創建一個Minio將存儲文件的目錄。 這將是您將在第5步中創建的存儲桶的存儲位置。
sudo mkdir /usr/local/share/minio
將該目錄的所有權授予minio-user :
sudo chown minio-user:minio-user /usr/local/share/minio
/etc
目錄是服務器配置文件的最常見位置,因此我們將為Minio創建一個地方。
sudo mkdir /etc/minio
也將該目錄的所有權歸還給minio-user :
sudo chown minio-user:minio-user /etc/minio
使用nano或您最喜愛的文本編輯器創建修改默認配置所需的環境文件:
sudo nano /etc/default/minio
並添加以下變量:
MINIO_VOLUMES="/usr/local/share/minio/" MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
-
MINIO_VOLUMES :指向您之前創建的存儲目錄。
-
MINIO_OPTS :修改服務器的行為。 -C標志將Minio指向應該使用的配置目錄,而--address標志告訴Minio要綁定的IP地址和端口。 如果未指定IP地址,Minio將綁定服務器上配置的每個地址,包括localhost和任何與Docker相關的IP地址,因此最好在該文件中明確指定IP地址。 默認端口為9000 ,但可以選擇其他端口。
最后,完成更改后,保存並關閉環境文件。
Minio現已安裝,所以接下來,我們將配置服務器作為系統服務運行。
第2步 - 安裝Minio Systemd啟動腳本
在此步驟中,我們將配置要作為systemd服務進行管理的Minio服務器。 首先,使用以下命令下載Minio服務描述符文件:
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
下載完成后,一個名為minio.service
的文件應該在你的工作目錄中。
要在應用之前對minio.service
的內容進行審核,請在文本編輯器中打開它以查看其內容:
nano minio.service
一旦你熟悉腳本的內容,關閉你的文本編輯器。
Systemd要求將單位文件存儲在systemd配置目錄中,因此在minio.service
移動minio.service
:
sudo mv minio.service /etc/systemd/system
然后,運行以下命令重新加載所有systemd設備:
sudo systemctl daemon-reload
最后,啟動Minio啟動:
sudo systemctl enable minio
現在安裝並配置了systemd腳本,讓我們啟動服務器。
第3步 - 啟動Minio服務器
在此步驟中,您將啟動服務器並修改防火牆以允許通過瀏覽器界面進行訪問。
首先,啟動Minio服務器:
sudo systemctl start minio
您可以使用命令驗證Minio的狀態,其綁定的IP地址,其內存使用情況等。
sudo systemctl status minio
你應該得到如下輸出:
minio.service - Minio Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago Docs: https://docs.minio.io Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit Main PID: 25073 (minio) Tasks: 6 Memory: 20.7M CPU: 544ms CGroup: /system.slice/minio.service └─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/ Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access: Apr 07 00:26:11 ashtonandgray minio[25073]: http://174.138.67.91:9000
接下來,您需要啟用通過防火牆訪問配置端口上的Minio服務器。 在本教程中,這是端口9000
。
所以,先添加規則:
sudo ufw allow 9000
然后重新啟動防火牆:
sudo systemctl restart ufw
Minio現在已經准備好接受流量,但在連接到服務器之前,通過安裝SSL / TLS證書來確保通信。
第4步 - 使用加密SSL / TLS證書保護對Minio服務器的訪問
在此步驟中,我們將使用基於控制台的證書生成客戶端Concert ,使用開放源代碼來加密證書頒發機構來創建SSL / TLS證書。 雖然還有其他方法可以生成Let's Encrypt證書,Concert由Minio的開發人員編寫,也是由官方安裝說明的一部分 。
首先,使用命令下載Concert:
go get -u github.com/minio/concert
一旦完成,一個名為concert
的文件應該在你的GOPATH的bin
目錄中。
接下來,我們將生成證書。
注意:要生成證書, concert
要求通過防火牆允許通過端口443的流量。
使用--dirs
標志運行以下命令來告訴Concert要使用的輸出目錄,電子郵件地址和域名:
sudo GOPATH/bin/concert gen --dir minio-certs sammy@example.com example.com
輸出將如下所示:
2017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.
而且,Concert將會生成一個private.key
和一個public.crt
文件,您可以通過在指定的目錄中運行ls
進行驗證。
接下來,我們將這兩個文件復制到Minio的服務器配置文件夾下的certs
目錄中,這是本教程的/etc/minio
。
sudo cp minio-certs/private.key /etc/minio/certs/ sudo cp minio-certs/public.crt /etc/minio/certs/
現在,將文件的所有權更改為minio-user :
sudo chown minio-user:minio-user /etc/minio/certs/private.key sudo chown minio-user:minio-user /etc/minio/certs/public.crt
重新啟動Minio服務器,以便它知道證書並開始使用HTTPS:
sudo systemctl restart minio
由於生成的Let's Encrypt證書有效期為90天,手動重復更新將無效率,請在服務器模式下啟動Concert以設置自動更新證書的系統:
sudo concert server --dir minio-certs sammy@example.com example.com
因此,Minio的連接現在是安全的,SSL / TLS證書將自動為您續訂。 在下一步中,您將通過瀏覽器連接到Minio來使用和管理服務器。
第5步 - 使用HTTPS安全連接Minio的Web界面
在此步驟中,您將通過HTTPS安全地連接到Minio Web界面,然后創建桶並將對象上傳到其中。
通過將瀏覽器指向https:// example.com : 9000
來訪問Web界面。
接下來,您需要找到您的登錄憑據。 當您在第3步中啟動服務器時, /etc/minio
將其配置文件寫入/etc/minio
目錄。該配置文件config.json
包含您現在需要訪問服務器的accessKey和secretKey值。 確保將兩個密鑰復制並保存在易於接近和安全的地方,以備將來。
{ "version": "19", "credential": { "accessKey": "8ngv6i97QZV959Y87Y007FP", "secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX" }, "region": "us-east-1", ... }
現在,通過輸入您的憑據登錄到主界面,並使用輸入字段下方的箭頭單擊圓形按鈕。
從那里點擊主界面右下角的淺紅色+按鈕,彈出兩個黃色按鈕。
單擊中間,黃色按鈕,並在提示符中輸入新的桶的名稱,按ENTER
鍵保存您的響應。 您的新的桶現在已准備好用於存儲!
當您要將對象添加到存儲桶中時,請單擊與之前相同的指示燈,然后單擊頂部的黃色按鈕以打開文件上傳提示。
注意: Minio對象存儲服務器上的一個對象的大小可以高達5 TB,遠遠超過單個DigitalOcean服務器可以容納的數據,但是通過DigitalOcean的塊存儲服務 ,您可以將可用存儲量大大擴展到獨立的Minio服務器。
在這一點上,您已經完成了整個基本的Web界面,但除了創建存儲桶和上傳對象之外,還可以生成新的登錄憑據,在對象的可共享鏈接上設置過期日期,並完全刪除對象。
結論
您現在擁有使用Minio的自己的對象存儲服務器,您可以使用我們加密SSL / TLS證書從Web界面安全地連接。 或者,您可能需要查看FreeBSD,Linux,Mac和Windows的Minio桌面客戶端 ,作為使用和管理對象存儲服務器的替代方法。
另外,如果您希望將Minio安裝的存儲容量增加到服務器的磁盤大小之外,可以使用DigitalOcean的塊存儲服務將卷附加到服務器,將存儲容量擴展多達80 TB,成本僅為成本的一小部分旋轉同樣大小的Droplet。
有關Minio的更多信息,請參見項目文檔網站 。