Neste tutorial iremos instalar e demonstrar o uso do Minio no Ubuntu 18.04 servidor LTS. Este VPS tem um IP estático e irei configurar registros DNS e conexões TLS para tornar este armazenamento de objeto o mais seguro e pronto para produção possível.
Pré-requisitos
Aqui estão os pré-requisitos de que você precisa se quiser continuar:
- Um VPS executando Ubuntu ou qualquer outra distro Linux com um IP estático (IP_ADDRESS será nosso espaço reservado, substitua-o pelo endereço IP real do seu VPS)
- Um nome de domínio totalmente qualificado [FQDN]. exemplo.com será nosso substituto.
Instalação e configuração diversa
Vamos fazer o login em nosso VPS e deixar tudo pronto para o Minio funcionar corretamente.
1. Configuração DNS
Vá para o servidor de nomes onde os registros DNS do seu domínio são mantidos, provavelmente no site do seu registrador de domínio. Adicione um registro A, apontando seu FQDN escolhido (por exemplo, minio.exemplo.com) para o IP_ADDRESS do seu VPS.
2. Usuário Minio
Antes de instalar o Minio, vamos criar uma nova conta de usuário UNIX sob a qual o minio será executado. Não queremos executá-lo como root ou como usuário regular que pode ter acesso sudo ou outros aplicativos executados nele. Criamos uma conta minio system, chamada minio-user:
$ sudo useradd --system minio-user --shell / sbin / nologin3. Baixar Minio
Em seguida, baixamos o binário minio (escrito em Go, que é compilado em um binário pequeno e leve).
Obtenha o binário
$ curl -O https: // dl.minio.io / server / minio / release / linux-amd64 / minioMova o binário para um local onde normalmente se espera que os binários residam:
$ sudo mv minio / usr / local / binTorne o arquivo binário executável e conceda ao usuário e grupo miniousuário sua propriedade:
$ sudo chmod + x / usr / local / bin / minio$ sudo chown minio-user: minio-user / usr / local / bin / minio
4. / etc arquivos de configuração, scripts de inicialização e dispositivo de armazenamento
Precisamos do Minio para inicializar com a reinicialização do sistema e ser reconhecido como um serviço em execução pelo sistema operacional. Não fazer isso resultaria em catástrofes, como quando o eliminador de OOM vê esse processo e decide que ele não é útil o suficiente. Também precisaríamos de um diretório onde os dados reais de nosso armazenamento de objetos serão salvos:
$ sudo mkdir / usr / local / share / minio$ sudo mkdir / etc / minio
Certifique-se de que o minio tenha controle total sobre estes diretórios:
$ sudo chown minio-user: minio-user / usr / local / share / minio$ sudo chown minio-user: minio-user / etc / minio
Dentro do diretório / etc / default, precisamos criar um arquivo minio para especificar variáveis de ambiente como o número da porta que estaremos escutando e o diretório onde os dados devem ser salvos (o volume). Criamos o volume anteriormente que era o diretório / usr / local / share / minio. Portanto, use seu editor de texto favorito para criar um arquivo / etc / default / minio e adicione o seguinte conteúdo dentro dele:
MINIO_VOLUMES = "/ usr / local / share / minio /"MINIO_OPTS = "- C / etc / minio --address minio.exemplo.com: 443 "
Certifique-se de escrever o FDQN real designado do seu VPS em vez da string literal minio.exemplo.com acima. A porta número 9000 é o que eles geralmente usam na documentação, mas vamos usar a instalação TLS adequada ouvindo na porta 443. Como é um número de porta menor que 1024, precisamos informar expressamente ao sistema operacional que o minio pode escutar nessas portas:
$ sudo setcap 'cap_net_bind_service = + ep' / usr / local / bin / minioPor último, precisamos configurar o minio serviço. Felizmente, o script que faz isso está disponível em seu repositório GitHub e vamos colocá-lo em seu local apropriado:
$ curl -O https: // raw.githubusercontent.com / minio / minio-service / master / linux-systemd /minio.serviço
$ sudo mv minio.serviço / etc / systemd / system
Recarregue todas as unidades do systemd e habilite o minio para iniciar na inicialização
$ sudo systemctl daemon-reload$ sudo systemctl enable minio
Por último, certifique-se de que seu firewall permite a comunicação na porta 443.
Vamos criptografar certificados TLS usando Certbot
Precisamos de certificados TLS negociados entre nosso servidor Minio e LetsEncrypt. Certbot é o cliente que faz isso por nós e também automatiza as renovações de certificados. Vamos primeiro instalar o Certbot:
$ sudo apt update$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get update
$ sudo apt-get install certbot
Em seguida, instale os certificados, conforme documentado por Minio Docs:
$ sudo certbot certonly --standalone -d minio.exemplo.com --staple-ocsp -mnomedeusuario @ email.com - concordo-tos
Aqui você insere seu FQDN para o servidor Minio após o sinalizador -d e seu endereço de e-mail após o sinalizador -m. O endereço de e-mail é importante porque permite que o LetsEncrypt o notifique sobre renovações pendentes.
Seus e-mails agora estarão presentes em / etc / letsencrypt / live / minio.exemplo.com. Claro, o último nome do diretório dependeria do FQDN escolhido. Agora copie os certificados para o diretório / etc / minio do Minio e dê permissão para acessá-los.
$ cp / etc / letsencrypt / live / minio.ranvirslog.com / fullchain.pem / etc / minio / certs / public.crt$ cp / etc / letsencrypt / live / minio.ranvirslog.com / privkey.pem / etc / minio / certs / private.chave
$ chown minio-user: minio-user / etc / minio / certs / public.crt
$ chown minio-user: minio-user / etc / minio / certs / private.chave
Agora você está pronto para usar o serviço:
$ sudo service minio start$ sudo service minio status
Resultado:
- minio.serviço - Minio
Ativo: ativo (em execução) desde terça-feira 09/10/2018 11:54:41 PDT; 5s atrás
Docs: https: // docs.minio.io
Processo: 15874 ExecStartPre = / bin / bash -c [-n "$ MINIO_VOLUMES"] && echo "Variável
MINIO_VOLUMES não definido em / etc / default / minio "(código = saiu, status = 0 / SUCCESS)
PID principal: 15877 (minio)
Tarefas: 13 (limite: 4.915)
CGroup: / system.fatia / minio.serviço
└─15877 / usr / local / bin / servidor minio -C / etc / minio --address minio.exemplo.com: 443 / usr /
local / compartilhar / minio /
09 de outubro 11:54:41 nome do host minio [15877]: Acesso do navegador:
09 de outubro 11:54:41 nome do host minio [15877]: https: // minio.exemplo.com
09 de outubro 11:54:41 hostname minio [15877]: Acesso de linha de comando: https: // docs.minio.io / docs /
minio-client-quickstart-guide
09 de outubro 11:54:41 hostname minio [15877]: $ mc config host add myminio
https: // minio.exemplo.com
PAMH22LU3YJIFLU82H2E IKJ + qtc0Oqdn46R3dLfsjv5bCnm8UEeIBYpdG8qg
…
A saída deste comando conterá a chave de acesso (PAMH22LU3YJIFLU82H2E) e chave secreta (IKJ + qtc0Oqdn46R3dLfsjv5bCnm8UEeIBYpdG8qg) para minio conforme mostrado em letras em negrito acima. Suas chaves seriam diferentes, então não copie as mencionadas aqui.
Usando Minio
Abra seu navegador e visite https: // minio.exemplo.com (certifique-se de usar o FQDN que você atribuiu) e use o acesso e a chave secreta listados no comando service minio status para fazer o login pela primeira vez.
E você será saudado pela IU do Minio.
Aqui você pode usar o sinal de mais no canto inferior esquerdo para fazer upload de arquivos ou criar um novo intervalo. Eu criei um novo balde chamado mybucket.
Você pode editar sua política para ler e escrever e, em seguida, fazer upload de alguns arquivos (por exemplo, imagens) neste intervalo. Minio criará um URL exclusivo para cada objeto em um intervalo. Você pode definir políticas para leitura e gravação por intervalo, bem como a data de expiração no URL do objeto individual.
Conclusão
Esse é o básico de como você começa com um armazenamento de objetos. Idealmente, os próprios objetos não devem ser modificados, apenas lidos ou adicionados aos baldes. Você pode integrar isso em seu aplicativo, seguindo a documentação oficial. Ele suporta uma ampla gama de linguagens de programação, desde Go, Python, JavaScript até .INTERNET.