Si vous voulez construire un élégant, simple, les services de ressources statique complet, puis utilisez MINIO il.
1 introduction
processus de développement de projets Web, ont souvent besoin de traiter les ressources statiques (images, vidéo, audio, bibliothèques js, bibliothèque css, etc.), en général, si le besoin du projet d'utiliser ces fichiers de ressources, nous avons utilisé les méthodes suivantes:
- Le stockage local: répertoire qui est statique dans le cadre du projet de création js / css / icône / police / image / lib / audio / vidéo, etc., sont stockés au format de fichier de ressources correspondant. Lors de l'utilisation, la position relative dans le fichier html pour référence.
- Utiliser un proxy pour construire un service de ressources statiques: ressources qui sont stockées dans un répertoire de fichiers, en utilisant un serveur proxy (comme nginx, apache, etc.) à la mise en correspondance de répertoire pour construire des services de ressources. Lorsqu'il est utilisé, l'utilisation des services proxy dans la référence d'adresse URL de fichier html.
- L'utilisation d'outils tiers pour créer un service de ressources statiques: l'utilisation de tiers open source ou un outil de stockage de fichiers de stockage d'objets ou d'écrire un programme qui implémente l'interface peut obtenir le fichier. En utilisation, avec une adresse d'interface correspondante ou adresses URL.
- Utilisez les services de ressources statiques en ligne tels que: Ali nuage, CDN et d'autres services.
Pour le stockage local, il est évident lacunes, les ressources et les fichiers de code sont mélangés ensemble, il ne faut pas, et l'extension pratique. Pour les applications locales sur site, des ressources apparemment statiques pour construire leurs propres services plus sûrs. Pour utiliser les services de proxy et des outils tiers, comparaison, seulement les services d'agence de cartographie, bien que disponible, mais dispose d'un seul, pour faire la mise en correspondance, aucune autre fonction de gestion, ne sont pas faciles à développer. Utilisez un outil de stockage de fichiers tiers ou de l'objet, vous pouvez gestion de fichiers, peuvent être considérés comme hautement des performances évolutives, haute, haute disponibilité et d'autres facteurs, et est donc un bon choix, qui, MINIO est un outil utile pour le stockage d'objets, simple, rapide et complet.
Cet article est à travers l'installation de MINIO, la configuration et l'utilisation, la construction d'un service de ressources statiques à l'image des ressources, vidéo, audio, et d'autres la bibliothèque de tiers indépendant est déployée, accessible, l'API Java sera fourni par l'utilisation du bref MINIO, afin de faciliter le développement.
2 MINIO Profil
Presse MINIO introduction officielle, MINIO est un stockage d'objets à haute performance (stockage de bloc de différence, le stockage de fichiers et de stockage d'objets, référence peut les architectes sont conscients des solutions de stockage d'objets distribués ), interface compatible Amazon S3 pour tenir pleinement compte des besoins des développeurs et l' expérience, le soutien stockage distribué, hautement évolutive, de haute disponibilité, le déploiement d' un simple, mais puissant. Le document officiel très détaillé. Il dispose de plusieurs modèles de déploiement différents (déploiement autonome, déploiement distribué). Pourquoi MINIO facile à utiliser, la raison est qu'il est et en cours d' exécution, et la configuration est très simple. Peut être installé par l' exécution docker, vous pouvez télécharger un fichier binaire, puis utilisez le script à exécuter.
Dans cet article, la meilleure façon d'expliquer, dans les machines Linux, le déploiement autonome, les binaires gérés.
3 ressources statiques MINIO et en utilisant
3.1 MINIO get
documents de développement MINIO , l'adresse de téléchargement est la suivante:
- linux:
https://dl.min.io/server/minio/release/linux-amd64/minio
- les fenêtres:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
Cet article fonctionne sous Linux.
3.2 MINIO et en cours d'exécution
3.2.1 départ simple, avant
Stockage du fichier téléchargé dans un répertoire que le répertoire d'exécution minio (par exemple, / opt / minio), créez un nouveau répertoire (par exemple, / opt / minio-données) que l'emplacement de stockage de données minio, pour commencer, le script suivant:
cd /opt/minio
chmod +x minio
./minio server /opt/minio-data
Après la sortie démarre et l'adresse d'accès des terminaux correspondant ACCESS_KEY et secret_key, utilisez un navigateur pour accéder à l'adresse de point final, si vous pouvez accéder, puis minio a été installé avec succès. Mais ce départ aura plusieurs inconvénients:
- N'est pas en cours d' exécution en arrière - plan,
ctrl+c
sera la fin du processus, le service est arrêté - Aucun nom d'utilisateur personnalisé et mot de passe d'accès
- Vous n'avez pas spécifié IP et le port
- Aucune réserve au fichier journal
Pour résoudre ces problèmes, il est recommandé d'utiliser de la manière suivante pour commencer à courir.
3.2.2 spécifier des paramètres pour arrière-plan en cours d'exécution
En utilisant nohup
le programme d'arrière - plan, les paramètres déterminent également un mot de passe et l' accès paramètre d'adresse de sortie du journal, comme indiqué ci - dessous.
MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123 nohup /opt/minio/minio server --address "${MINIO_HOST}:${MINIO_PORT}" /opt/minio-data > /opt/minio/minio.log 2>&1 &
MINIO_ACCESS_KEY
EtMINIO_SECRET_KEY
est le mot de passe d'accès
${MINIO_HOST}:${MINIO_PORT}
Sont l'accès hôte et le port, modifier en fonction de la situation réelle.
De cette façon, par le navigateur pour accéder à l'adresse ${MINIO_HOST}:${MINIO_PORT}
, spécifiée MINIO_ACCESS_KEY
et MINIO_SECRET_KEY
connecter.
3.2.3 Création d'un seau et préciser la politique d'accès
Connectez-vous sur votre navigateur pour système de stockage MINIO, cliquez sur le coin en bas à droite pour créer un seau pour stocker les objets ont été créés pour stocker seau correspondant ressource statique: image, vidéo, audio. Ainsi, il peut être effectué dans un type de ressource correspondant au transfert de fichiers du seau, après avoir téléchargé le fichier peut être partagé, les ressources peuvent être obtenues ailleurs partager URL, comme indiqué ci-dessous.
la politique par défaut MINIO est de partager la plus adresse efficace du temps est de 7 jours, pour briser cette limitation, vous pouvez définir la politique dans le seau. Cliquez sur le seau approprié, edit policy
ajouter une politique *.*
, Read Only
comme suit:
Alors lâchez la visite, sans limite de temps, mais simplement d' appuyer http://${MINIO_HOST}:${MINIO_PORT}/${bucketName}/${fileName}
peut directement accéder à des ressources (pas besoin pour le fonctionnement en commun).
Les erreurs sur le répertoire MINIO
- En fait, pour le stockage d'objets, en fait, ne font pas la distinction entre un fichier ou un répertoire, tous les fichiers et répertoires sont des objets, qui est, image / temp / xxx.jpg et image / temp / est un objet. Il a une structure d'arbre avec la différence essentielle entre le système de fichiers du système d'exploitation.
- Lorsque vous téléchargez un fichier, objectName peut
/temp/xxx.jpg
être considéré comme le système crée automatiquement un répertoire temporaire.- MINIO pas fourni en tant que répertoire supprimé et supprimer tous les fichiers dans ce répertoire (qui est
rm -rf image/temp
), de sorte que pour l' image du catalogue / temp supprimer, vous avez besoin de mettre tous les fichiers préfixe image / temp supprimée.- Lorsque vous interrogez plusieurs fichiers, vous pouvez utiliser la méthode correspondante préfixe acquisition, consultez la documentation de l'API
listObjects(bucketName, prefix, recursive)
3.3 référence une ressource statique dans le fichier html
A travers les paramètres ci-dessus et d'exécution, MINIO en tant que serveur de ressources statique est terminée, vous pouvez écrire en HTML pour désigner les ressources statiques MINIO. Ce qui suit est un test dans les images de HTML, vidéo, audio, tout en utilisant les ressources de l'adresse MINIO.
<div class="img-list">
<img src="http://${MINIO_HOST}:${MINIO_PORT}/image/test.jpg" alt="图片">
</div>
<div class="audio-list">
<audio src="http://${MINIO_HOST}:${MINIO_PORT}/audio/test.mp3"
controls="controls"></audio>
</div>
<div class="video-list">
<video src="http://${MINIO_HOST}:${MINIO_PORT}/video/test.mp4" controls="controls"></video>
</div>
Vous trouverez dans la ressource peut être chargée normalement accessible.
4 Java opérations API client
développeur MINIO est très sympathique, l' API de l' interface utilisateur offre une variété de langues, peut se référer à spécifique documentation de développement MINIO . L'exemple suivant pour faire quelques tests pour Java.
dépendance 4.1 Ajouter
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>6.0.13</version>
</dependency>
4.2 utilise les API Java pour les opérations de fichiers
L' établissement opération client MINIO minioClient = new MinioClient(endpoint, accessKey, secretKey);
, le paramètre endpoint
est l'adresse d' accès MINIO, lorsque le mot de passe correspondant aux deux départs.
4.2.1 fichiers de téléchargement
/**
* 上传文件
* @param minioClient 操作客户端
* @param bucketName 上传的bucket名称
* @param objectName 上传后存储在bucket中的文件名
* @param filePath 上传的本地文件路径
*/
public void uploadFile(MinioClient minioClient, String bucketName, String objectName, String filePath) throws XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, IOException {
try {
// 若不存在bucket,则新建
boolean isExist = minioClient.bucketExists(bucketName);
if (!isExist) {
minioClient.makeBucket(bucketName);
}
// 使用 putObject 上传文件
minioClient.putObject(bucketName, objectName, filePath, null, null, null, null);
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
4.2.2 Télécharger le fichier
/**
* 下载文件
*
* @param minioClient 操作客户端
* @param bucketName 上传的bucket名称
* @param objectName 上传后存储在bucket中的文件名
* @param downloadPath 下载文件保存路径
*/
public void downloadFile(MinioClient minioClient, String bucketName, String objectName, String downloadPath) throws XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, IOException {
File file = new File(downloadPath);
try (OutputStream out = new FileOutputStream(file)) {
InputStream inputStream = minioClient.getObject(bucketName, objectName);
byte[] tempbytes = new byte[1024];
int byteread = 0;
while ((byteread = inputStream.read(tempbytes)) != -1) {
out.write(tempbytes, 0, byteread);
}
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
4.2.3 fichiers sUPPression
supprimer simplement le fichier, l' utilisation removeObject
peut être.
minioClient.removeObject(bucketName, objectName);
Liste des fichiers 4.2.4
/**
* 罗列文件
* @param minioClient
* @param bucketName
*/
public void listFile(MinioClient minioClient, String bucketName) throws XmlPullParserException, NoSuchAlgorithmException, InvalidKeyException, IOException {
try {
Iterable<Result<Item>> results = minioClient.listObjects(bucketName);
Iterator<Result<Item>> iterator = results.iterator();
while (iterator.hasNext()) {
Item item = iterator.next().get();
System.out.println(item.objectName() + ", " + item.objectSize() + "B");
}
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
5 résumé
En raison de ressources statique a besoin d'un accès indépendant, une séparation statique et dynamique, en utilisant MINIO, vous pouvez mettre en œuvre rapidement et facilement des ressources serveur statique pour l'accès. Par MINIO télécharger, le déploiement, le démarrage, le fonctionnement, la configuration, etc. sont décrits, et les références dans les fichiers de ressources statiques html, par exemple, pour expliquer l'utilisation MINIO et fournit un logiciel simple à utiliser l'API Java. Je veux aider.
télécharger
Tel qu'il est utilisé ici, le nohup de MINIO début, mais la commande est trop long, nous scripts habituellement écrire pour obtenir le démarrage, l'arrêt et demande d'état, donc je l'ai écrit un script complet du fichier sh pour tout usage. En outre, MINIO Java test API, l'exemple utilise actuellement des projets de démarrage Spring, en mode de test unitaire.
script sh et mis en place Spring Boot projettent mon minio exemple github dans (le script minio-serviced.sh
dans le répertoire des scripts), il est nécessaire de télécharger référence.
Script à utiliser:
- Sh de script pour modifier les paramètres en fonction de la situation réelle
- Modifier les droits d'exécution: chmod + x minio-serviced.sh
- Appuyez sur Start up / arrêt / redémarrage / état d'exécution: ./ minio-serviced.sh marche / arrêt / redémarrage / état
Documents de référence
- site officiel MINIO :
https://min.io/
- documents de développement MINIO :
https://docs.min.io/
- Allez dans la pratique pour tester les eaux de projets open source Mimio solutions de stockage d'objets :
https://mp.weixin.qq.com/s/MzA4ODg0NDkzOA==&mid=2247487119&idx=1&sn=6e09abb32392e015911be3a1d7f066e5&source=41
- Les architectes sont conscients des solutions de stockage d'objets distribués :
https://juejin.im/post/5cdc16e251882568651553f9
- Utiliser la construction MINIO objets de stockage haute performance :
https://tonybai.com/2020/03/16/build-high-performance-object-storage-with-minio-part1-prototype
articles antérieurs
- SpringBoot obtenir de multiples sources de données (3): source de modification paramétrique
- SpringBoot obtenir de multiples sources de données (2): sources de données dynamiques
- Obtenir plusieurs sources de données SpringBoot (1): plusieurs jeux de la politique source
- le développement java aura appris: Dynamic Proxy
- 2019 livres lus recommandés
- springboot + Apache déploiement https séparés extrémités avant et arrière
- springboot + logback pratique commerciale de sortie du journal (sous)
- springboot + logback journal des pratiques commerciales de sortie (sur)
Mon numéro public (recherche Mason技术记录
) pour plus de dossiers techniques: