Cách thiết lập server lưu trữ đối tượng bằng Minio trên Ubuntu 16.04
Từ các giải pháp backup dựa trên cloud đến các mạng phân phối nội dung có tính khả dụng cao (CDN), lưu trữ đối tượng đã trở thành một phần không thể thiếu trong bối cảnh công nghệ hiện đại. Và, với diện tích nhỏ, giao diện đơn giản và khả năng tương thích với nhiều dịch vụ lưu trữ cloud , server lưu trữ đối tượng Minio có rất nhiều điểm mạnh.Minio là một server lưu trữ đối tượng open-souce lưu trữ dữ liệu phi cấu trúc như ảnh, video, hình ảnh máy ảo, containers và file log dưới dạng đối tượng. Ở chế độ phân tán, Minio cung cấp một server lưu trữ đối tượng duy nhất chứa nhiều ổ đĩa trải rộng trên nhiều server .
Minio được viết bằng Go, đi kèm với ứng dụng dòng lệnh cộng với giao diện trình duyệt và hỗ trợ dịch vụ xếp hàng đơn giản cho các mục tiêu Giao thức xếp hàng thư nâng cao (AMQP) , Elasticsearch , Redis , NATS và Postgres .
Trong hướng dẫn này, bạn sẽ:
Cài đặt server Minio trên server DigitalOcean của bạn và cấu hình nó như một dịch vụ systemd.
Cài đặt certificate SSL / TLS bằng Let's Encrypt để bảo mật giao tiếp giữa server và client .
Truy cập giao diện trình duyệt của Minio thông qua HTTPS để sử dụng và quản trị server .
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
Một server Ubuntu 16.04 được cài đặt theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 này , bao gồm user không phải root có quyền sudo và firewall .
Tên domain đã đăng ký đầy đủ. Bạn có thể mua một cái trên Namecheap hoặc nhận một cái miễn phí trên Freenom .
Các bản ghi DNS sau được cài đặt cho server Minio của bạn. Bạn có thể làm theo hướng dẫn tên server này để biết chi tiết về cách thêm chúng.
- Bản ghi A với tên server của bạn (ví dụ:
minio-server.example.com
) trỏ đến địa chỉ IPv4 của server đối tượng của bạn. - Bản ghi AAAA với tên server của bạn trỏ đến địa chỉ IPv6 của server đối tượng của bạn, nếu bạn muốn server của bạn có thể truy cập được qua IPv6.
- Bản ghi A với tên server của bạn (ví dụ:
Cài đặt Go trên server bằng cách sử dụng hướng dẫn này để cài đặt Go trên Ubuntu 16.04 .
Bước 1 - Cài đặt và cấu hình server Minio
Bạn có thể cài đặt server Minio bằng cách biên dịch mã nguồn hoặc thông qua file binary . Trong bước này, ta sẽ cài đặt server theo cách dễ dàng nhất — thông qua file binary — và sau đó ta sẽ cấu hình mọi thứ sau đó.
Đầu tiên, đăng nhập vào server của bạn:
- ssh sammy@your_server_ip
Nếu bạn chưa cập nhật database gói gần đây, hãy cập nhật nó ngay bây giờ:
- sudo apt-get update
Tiếp theo, download file binary của server Minio:
- curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
Một file có tên minio
sẽ được download folder làm việc của bạn. Làm cho nó có thể thực thi:
- sudo chmod +x minio
Bây giờ, hãy di chuyển file vào folder /usr/local/bin
nơi tập lệnh khởi động systemd của Minio dự kiến sẽ tìm thấy nó:
- sudo mv minio /usr/local/bin
Vì lý do bảo mật, ta không muốn chạy server Minio dưới dạng root . Và, vì tập lệnh systemd mà ta sẽ sử dụng trong Bước 2 tìm kiếm account user và group được gọi là minio-user , hãy tạo chúng ngay bây giờ.
- sudo useradd -r minio-user -s /sbin/nologin
Thay đổi quyền sở hữu binary thành minio-user :
- sudo chown minio-user:minio-user /usr/local/bin/minio
Tiếp theo, ta cần tạo một folder mà Minio sẽ lưu trữ các file . Đây sẽ là vị trí lưu trữ cho các group mà bạn sẽ tạo ở Bước 5.
- sudo mkdir /usr/local/share/minio
Cấp quyền sở hữu folder đó cho minio-user :
- sudo chown minio-user:minio-user /usr/local/share/minio
Thư mục /etc
là vị trí phổ biến nhất cho các file cấu hình server , vì vậy ta sẽ tạo một vị trí cho Minio ở đó.
- sudo mkdir /etc/minio
Cũng cấp quyền sở hữu folder đó cho user nhỏ :
- sudo chown minio-user:minio-user /etc/minio
Sử dụng nano hoặc editor yêu thích của bạn để tạo file môi trường cần thiết để sửa đổi cấu hình mặc định:
- sudo nano /etc/default/minio
Và, thêm các biến sau:
MINIO_VOLUMES="/usr/local/share/minio/" MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
MINIO_VOLUMES : Trỏ đến folder lưu trữ mà bạn đã tạo trước đó.
MINIO_OPTS : Sửa đổi hoạt động của server . Lá cờ C chỉ Minio vào folder cấu hình nó nên sử dụng, trong khi cờ -Địa chỉ nói Minio địa chỉ IP và cổng để bám vào. Nếu địa chỉ IP không được chỉ định, Minio sẽ liên kết với mọi địa chỉ được cấu hình trên server , bao gồm localhost và bất kỳ địa chỉ IP nào liên quan đến Docker, vì vậy tốt nhất bạn nên chỉ định địa chỉ IP trong file này một cách rõ ràng. Cổng mặc định là 9000 , nhưng bạn có thể chọn cổng khác.
Cuối cùng, lưu file môi trường khi bạn thực hiện xong các thay đổi.
Minio hiện đã được cài đặt, vì vậy, tiếp theo, ta sẽ cấu hình server để chạy như một dịch vụ hệ thống.
Bước 2 - Cài đặt Tập lệnh khởi động Minio Systemd
Trong bước này, ta sẽ cấu hình server Minio được quản lý như một dịch vụ systemd. Trước tiên, download file mô tả dịch vụ Minio bằng lệnh sau:
- curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Sau khi quá trình download hoàn tất, một file có tên minio.service
sẽ nằm trong folder làm việc của bạn.
Để kiểm tra nội dung của minio.service
trước khi áp dụng, hãy mở nó trong editor để xem nội dung của nó:
- nano minio.service
Khi bạn đã hài lòng với nội dung của tập lệnh, hãy đóng editor văn bản của bạn.
Systemd yêu cầu các file đơn vị phải được lưu trữ trong folder cấu hình systemd, vì vậy hãy di chuyển minio.service
đó:
- sudo mv minio.service /etc/systemd/system
Sau đó, chạy lệnh sau để reload tất cả các đơn vị systemd:
- sudo systemctl daemon-reload
Cuối cùng, kích hoạt Minio để bắt đầu khi server khởi động :
- sudo systemctl enable minio
Bây giờ tập lệnh systemd đã được cài đặt và cấu hình, hãy khởi động server .
Bước 3 - Khởi động Server Minio
Trong bước này, bạn sẽ khởi động server và sửa đổi firewall để cho phép truy cập thông qua giao diện trình duyệt.
Đầu tiên, khởi động server Minio:
- sudo systemctl start minio
Bạn có thể xác minh trạng thái của Minio, địa chỉ IP mà nó được liên kết, mức sử dụng bộ nhớ của nó và hơn thế nữa bằng lệnh:
- sudo systemctl status minio
Bạn sẽ nhận được kết quả như sau:
Outputminio.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
Tiếp theo, bạn cần kích hoạt quyền truy cập thông qua firewall vào server Minio trên cổng đã cấu hình . Trong hướng dẫn này, đó là cổng 9000
.
Vì vậy, trước tiên hãy thêm luật :
- sudo ufw allow 9000
Sau đó, khởi động lại firewall :
- sudo systemctl restart ufw
Minio hiện đã sẵn sàng chấp nhận lưu lượng truy cập, nhưng trước khi kết nối với server , hãy bảo mật thông tin liên lạc bằng cách cài đặt certificate SSL / TLS.
Bước 4 - Bảo mật quyền truy cập vào server Minio với certificate Let's Encrypt SSL / TLS
Trong bước này, ta sẽ sử dụng ứng dụng tạo certificate dựa trên console , Concert , để tạo certificate SSL / TLS bằng cách sử dụng tổ chức phát hành certificate Let's Encrypt nguồn mở. Mặc dù có nhiều cách khác để tạo certificate Let's Encrypt, Concert đều do các nhà phát triển của Minio viết và là một phần của hướng dẫn cài đặt chính thức.
Đầu tiên, download Concert bằng lệnh:
- go get -u github.com/minio/concert
Sau khi hoàn tất, file có tên concert
sẽ nằm trong folder bin
của GOPATH của bạn.
Tiếp theo, ta sẽ tạo certificate .
Lưu ý: Để tạo certificate , concert
yêu cầu lưu lượng truy cập qua cổng 443 được phép thông qua firewall .
Chạy lệnh sau bằng cách sử dụng cờ --dirs
để cho Concert biết folder kết quả , địa chỉ email và domain bạn muốn sử dụng:
- sudo GOPATH/bin/concert gen --dir minio-certs sammy@example.com example.com
Đầu ra sẽ giống như sau:
Output2017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.
Và, Concert sẽ tạo file private.key
và public.crt
, bạn có thể xác minh bằng cách chạy ls
trên folder bạn đã chỉ định.
Tiếp theo, ta sẽ sao chép hai file này vào folder certs
trong folder cấu hình server của Minio, là /etc/minio
cho hướng dẫn này.
- sudo cp minio-certs/private.key /etc/minio/certs/
- sudo cp minio-certs/public.crt /etc/minio/certs/
Bây giờ, hãy thay đổi quyền sở hữu file thành user nhỏ :
- sudo chown minio-user:minio-user /etc/minio/certs/private.key
- sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Khởi động lại server Minio để nó nhận biết được certificate và bắt đầu sử dụng HTTPS:
- sudo systemctl restart minio
Vì certificate Let's Encrypt được tạo chỉ có giá trị trong 90 ngày và việc gia hạn liên tục theo cách thủ công sẽ không hiệu quả, hãy bắt đầu Hòa nhạc ở chế độ server để cài đặt hệ thống tự động gia hạn certificate :
- sudo concert server --dir minio-certs sammy@example.com example.com
Như vậy, kết nối của Minio hiện đã được bảo mật và certificate SSL / TLS sẽ tự động gia hạn cho bạn. Trong bước tiếp theo, bạn sẽ kết nối với Minio thông qua trình duyệt để sử dụng và quản trị server .
Bước 5 - Kết nối an toàn với giao diện web của Minio bằng HTTPS
Trong bước này, bạn sẽ kết nối an toàn với giao diện web Minio qua HTTPS, sau đó bạn sẽ tạo các group và tải các đối tượng vào chúng.
Truy cập giao diện web bằng cách trỏ trình duyệt của bạn tới https:// example.com : 9000
.
Tiếp theo, bạn cần tìm thông tin đăng nhập của bạn . Minio viết file cấu hình của nó đến /etc/minio
folder khi bạn bắt đầu server trong Bước 3. Đó là file cấu hình, config.json
, chứa accesskey và secretKey giá trị mà bạn cần phải truy cập vào server bây giờ. Đảm bảo sao chép và giữ cả hai khóa ở nơi dễ lấy và an toàn cho tương lai.
{ "version": "19", "credential": { "accessKey": "8ngv6i97QZV959Y87Y007FP", "secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX" }, "region": "us-east-1", ... }
Bây giờ, đăng nhập vào giao diện chính bằng lệnh thông tin đăng nhập của bạn và nhấp vào nút tròn có mũi tên ngay bên dưới các trường nhập.
Từ đó, nhấp vào nút + màu đỏ nhạt ở dưới cùng bên phải của giao diện chính để hiển thị thêm hai nút màu vàng.
Nhấp vào nút ở giữa, màu vàng và nhập tên cho group mới của bạn trong dấu nhắc , nhấn phím ENTER
để lưu câu trả lời của bạn. Thùng mới của bạn hiện đã sẵn sàng được sử dụng để lưu trữ!
Khi bạn muốn thêm các đối tượng vào group của bạn , hãy nhấp vào nút màu đỏ nhạt giống như trước đó, sau đó nhấp vào nút màu vàng trên cùng để mở dấu nhắc tải file lên.
Lưu ý: Một đối tượng trên server lưu trữ đối tượng Minio có thể có kích thước lên đến 5 TB — nhiều hơn nhiều so với một server DigitalOcean duy nhất có thể chứa — nhưng vớidịch vụ lưu trữ khối của DigitalOcean , bạn có thể mở rộng đáng kể dung lượng lưu trữ có sẵn cho server Minio độc lập của bạn .
Đến đây, bạn đã làm việc qua toàn bộ giao diện web cơ bản, nhưng ngoài việc chỉ tạo group và tải lên đối tượng, bạn còn có thể tạo thông tin đăng nhập mới, đặt ngày hết hạn trên các liên kết có thể chia sẻ của đối tượng và xóa hoàn toàn đối tượng.
Kết luận
Như vậy, bạn có server lưu trữ đối tượng của riêng mình bằng Minio mà bạn có thể kết nối an toàn từ giao diện web bằng certificate Let's Encrypt SSL / TLS. Theo tùy chọn, bạn có thể cần xem các máy khách Minio trên máy tính để bàn cho FreeBSD, Linux, Mac và Windows như một cách thay thế để sử dụng và quản trị server lưu trữ đối tượng của bạn.
Ngoài ra, nếu bạn muốn tăng dung lượng lưu trữ của cài đặt Minio vượt quá kích thước đĩa của server , bạn có thể sử dụngdịch vụ lưu trữ khối của DigitalOcean để đính kèm một dung lượng vào server của bạn, mở rộng dung lượng lưu trữ lên tới 80 TB với một phần chi phí quay tròn một server có kích thước bằng nhau.
Thông tin thêm về Minio có tại trang web tài liệu của dự án .
Các tin liên quan
Cách chạy server MongoDB an toàn với OpenVPN và Docker trên Ubuntu 16.042017-03-24
Kết xuất phía server cơ bản với Vue.js và Express
2017-03-14
Cách thiết lập server VPN IKEv2 với StrongSwan trên Ubuntu 16.04
2017-02-17
Cách cấu hình firewall Linux cho Docker Swarm trên CentOS 7
2017-01-11
Cách cấu hình firewall Linux cho Docker Swarm trên Ubuntu 16.04
2017-01-09
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP Stack) trên Debian 8
2016-12-20
Cách thiết lập xác thực Linux tập trung với FreeIPA trên CentOS 7
2016-12-15
Cách bảo vệ server của bạn chống lại lỗ hổng Linux COW bẩn
2016-10-31
Cách cấu hình TRIM định kỳ cho bộ lưu trữ SSD trên server Linux
2016-08-25
Cách bảo vệ server của bạn chống lại lỗ hổng HTTPoxy
2016-07-18