Dans ce tutoriel, nous allons installer et démontrer l'utilisation de Minio sur Ubuntu 18.04 Serveur LTS. Ce VPS a une IP statique et je vais configurer des enregistrements DNS et des connexions TLS pour rendre ce magasin d'objets aussi sécurisé et prêt pour la production que possible.
Conditions préalables
Voici les prérequis dont vous auriez besoin si vous souhaitez suivre :
- Un VPS exécutant Ubuntu ou toute autre distribution Linux avec une IP statique (IP_ADDRESS sera notre espace réservé, remplacez-le par l'adresse IP réelle de votre VPS)
- Un nom de domaine complet [FQDN]. Exemple.com sera notre espace réservé.
Installation et configuration diverses
Connectons-nous à notre VPS et préparons les choses pour que Minio fonctionne correctement.
1. Configuration DNS
Accédez au serveur de noms où les enregistrements DNS de votre domaine sont conservés, il se trouve très probablement sur le site Web de votre registraire de domaine. Ajoutez un enregistrement A en pointant le nom de domaine complet que vous avez choisi (par exemple minio.Exemple.com ) à l'adresse IP_ADDRESS de votre VPS.
2. Utilisateur Minio
Avant d'installer Minio, créons un nouveau compte utilisateur UNIX sous lequel minio s'exécutera. Nous ne voulons pas l'exécuter en tant que root ou en tant qu'utilisateur régulier qui peut avoir un accès sudo ou d'autres applications s'exécutant sous lui. Nous créons un compte système minio, nommé minio-user :
$ sudo useradd --system minio-user --shell /sbin/nologin3. Télécharger Minio
Ensuite, nous téléchargeons le binaire minio (il est écrit en Go qui se compile en un petit binaire léger).
Obtenez le binaire
$ curl -O https://dl.minio.io/server/minio/release/linux-amd64/minioDéplacez le binaire vers un emplacement où les binaires sont généralement censés résider :
$ sudo mv minio /usr/local/binRendez le fichier binaire exécutable et donnez à l'utilisateur et au groupe minio-user sa propriété :
$ sudo chmod +x /usr/local/bin/minio$ sudo chown minio-user:minio-user /usr/local/bin/minio
4. Fichiers de configuration /etc, scripts de démarrage et périphérique de stockage
Nous avons besoin de Minio pour démarrer avec le redémarrage du système et être reconnu comme un service en cours d'exécution par le système d'exploitation. Ne pas le faire entraînerait des catastrophes telles que lorsque le tueur OOM voit ce processus et décide qu'il n'est pas assez utile. Nous aurions également besoin d'un répertoire où les données réelles de notre magasin d'objets seront enregistrées :
$ sudo mkdir /usr/local/share/minio$ sudo mkdir /etc/minio
Assurez-vous que minio a un contrôle total sur ces répertoires :
$ sudo chown minio-user:minio-user /usr/local/share/minio$ sudo chown minio-user:minio-user /etc/minio
Dans le répertoire /etc/default, nous devons créer un fichier minio pour spécifier des variables d'environnement telles que le numéro de port sur lequel nous écouterons et le répertoire où les données doivent être enregistrées (le volume). Nous avons créé le volume plus tôt qui était le répertoire /usr/local/share/minio. Utilisez donc votre éditeur de texte préféré pour créer un fichier /etc/default/minio et ajoutez le contenu suivant à l'intérieur :
MINIO_VOLUMES="/usr/local/share/minio/"MINIO_OPTS="-C /etc/minio --address minio.Exemple.com:443"
Assurez-vous que vous écrivez le FDQN désigné réel de votre VPS au lieu de la chaîne littérale minio.Exemple.com ci-dessus. Le numéro de port 9000 est ce qu'ils utilisent habituellement dans la documentation, mais nous allons utiliser l'installation TLS appropriée en écoutant au port 443. Comme il s'agit d'un numéro de port inférieur à 1024, nous devons expressément indiquer au système d'exploitation qu'il est acceptable que minio écoute sur ces ports :
$ sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/minioEnfin, nous devons configurer le minio un service. Heureusement, le script qui le fait est disponible sur leur dépôt GitHub et nous le placerons à l'endroit approprié :
$ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.un service
$ sudo mv minio.service /etc/systemd/system
Recharger toutes les unités systemd et permettre à minio de démarrer au démarrage
$ sudo systemctl démon-recharger$ sudo systemctl activer minio
Enfin, assurez-vous que votre pare-feu autorise la communication sur le port 443.
LetsEncrypt TLS Certificates en utilisant Certbot
Nous devons négocier des certificats TLS entre notre serveur Minio et LetsEncrypt. Certbot est le client qui le fait pour nous et automatise également les renouvellements de certificats. Commençons par installer Certbot :
$ sudo apt mise à jour$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get mise à jour
$ sudo apt-get install certbot
Ensuite, installez les certificats, comme documenté par Minio Docs :
$ sudo certbot certonly --standalone -d minio.Exemple.com --staple-ocsp -mnom d'[email protected] --d'accord
Ici, vous entrez votre FQDN pour le serveur Minio après l'indicateur -d et votre adresse e-mail après l'indicateur -m. L'adresse e-mail est importante car elle permet à LetsEncrypt de vous informer des renouvellements en attente.
Vos emails seront désormais présents dans /etc/letsencrypt/live/minio.Exemple.com. Bien sûr, le dernier nom de répertoire dépendra de votre FQDN choisi. Copiez maintenant les certificats dans le répertoire /etc/minio de Minio et donnez-lui la permission d'y accéder.
$ cp /etc/letsencrypt/live/minio.ranvirslog.com/chaîne complète.pem /etc/minio/certs/public.crt$ cp /etc/letsencrypt/live/minio.ranvirslog.com/privkey.pem /etc/minio/certs/private.clé
$ chown minio-user:minio-user /etc/minio/certs/public.crt
$ chown minio-user:minio-user /etc/minio/certs/private.clé
Vous êtes maintenant prêt à utiliser le service :
$ sudo service minio start$ sudo service minio statut
Production:
- minio.service - Minio
Actif : actif (en cours d'exécution) depuis le mar. 2018-10-09 11:54:41 PDT ; il y a 5s
Documents : https://docs.minio.io
Processus : 15874 ExecStartPre=/bin/bash -c [ -n "$MINIO_VOLUMES" ] && echo "Variable
MINIO_VOLUMES non défini dans /etc/default/minio" (code=exited, status=0/SUCCESS)
PID principal : 15877 (mini)
Tâches : 13 (limite : 4915)
Groupe C : /système.tranche/minio.un service
└─15877 /usr/local/bin/minio server -C /etc/minio --address minio.Exemple.com:443 /usr/
local/partager/minio/
09 octobre 11:54:41 nom d'hôte minio[15877] : Accès au navigateur :
09 octobre 11:54:41 nom d'hôte minio[15877] : https://minio.Exemple.com
09 octobre 11:54:41 nom d'hôte minio[15877] : Accès en ligne de commande : https://docs.minio.io/docs/
minio-client-guide de démarrage rapide
09 octobre 11:54:41 nom d'hôte minio[15877] : $ mc config host add myminio
https://minio.Exemple.com
PAMH22LU3YJIFLU82H2E IKJ+qtc0Oqdn46R3dLfsjv5bCnm8UEeIBYpdG8qg
…
La sortie de cette commande contiendra la clé d'accès (PAMH22LU3YJIFLU82H2E) et la clé secrète (IKJ+qtc0Oqdn46R3dLfsjv5bCnm8UEeIBYpdG8qg) pour minio comme indiqué en gras ci-dessus. Vos clés seraient différentes alors ne copiez pas celles mentionnées ici.
Utiliser Minio
Ouvrez votre navigateur et visitez https://minio.Exemple.com (assurez-vous d'utiliser le nom de domaine complet que vous avez attribué) et utilisez l'accès et la clé secrète répertoriés dans votre commande service minio status pour vous connecter pour la première fois.
Et vous serez accueilli par l'interface utilisateur Minio.
Ici, vous pouvez utiliser le signe plus dans le coin inférieur gauche pour télécharger des fichiers ou créer un nouveau compartiment. J'ai créé un nouveau bucket appelé mybucket.
Vous pouvez modifier sa politique pour lire et écrire, puis télécharger quelques fichiers (disons des images) dans ce compartiment. Minio créera une URL unique pour chaque objet dans un bucket. Vous pouvez définir des politiques de lecture et d'écriture par compartiment ainsi que la date d'expiration sur l'URL de l'objet individuel.
Conclusion
C'est la base de la façon dont vous démarrez avec un magasin d'objets. Les objets eux-mêmes ne sont idéalement pas destinés à être modifiés, simplement lus ou ajoutés aux buckets. Vous pouvez l'intégrer dans votre application en suivant la documentation officielle. Il prend en charge un large éventail de langages de programmation allant de Go, Python, JavaScript à .RAPPORTER.