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
 

