Suchen Sie nach einer kostengünstigen Alternative zu Amazon S3? MinIO ist eine großartige Option. In dieser Anleitung führen wir Sie durch die Installation und Grundeinrichtung von MinIO auf Ihrem Ubuntu-Server und geben Ihnen zusätzliche Schritte zur Integration mit Laravel/PHP.
Die Einrichtung erfolgt selbstverständlich auf Ihr eigenes Risiko. Wir übernehmen für nichts die Verantwortung.
Schritt 1: Ubuntu Server einrichten
Bevor wir beginnen, stellen Sie sicher, dass Sie einen Ubuntu-Server haben und dieser läuft.
Schritt 2: MinIO installieren
Um MinIO zu installieren, folgen Sie den Anweisungen im offizielle MinIO-Dokumentation.
Schritt 3: MinIO systemd Service konfigurieren
Fügen Sie nach der Installation die Datei systemd minio.service hinzu. Wenn sie nicht automatisch hinzugefügt wird, können Sie sie manuell hinzufügen. Sie finden eine Beispieldatei hier.
Öffnen Sie die Datei minio.service und entfernen Sie die folgenden Zeilen:
Benutzer=Minio-Benutzer Gruppe=Minio-Benutzer
Ohne diese Zeilen funktioniert MinIO im Stammverzeichnis wie in dieses GitHub-Problem.
Schritt 4: Installieren Sie das Let’s Encrypt SSL-Zertifikat
MinIO unterstützt SSL-Verschlüsselung. Zum Einrichten von SSL können Sie Let's Encrypt verwenden, einen kostenlosen und weithin vertrauenswürdigen SSL-Zertifikatsanbieter.
Folgen Sie den Anweisungen unter https://certbot.eff.org für Ubuntu, um Let’s Encrypt zu installieren und Ihr SSL-Zertifikat zu generieren.
Schritt 5: MinIO mit Let’s Encrypt konfigurieren
Sobald Sie das SSL-Zertifikat generiert haben, müssen Sie MinIO für die Verwendung konfigurieren. So geht's:
Kopieren Sie die SSL-Zertifikatsdateien in das MinIO-Verzeichnis:
cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /root/.minio/certs/private .Schlüssel
Richten Sie eine Crontab ein, um das SSL-Zertifikat wöchentlich zu erneuern:
0 5 * * 1 cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt 0 5 * * 5 cp /etc/letsencrypt/live/yourdomain.com/privkey. pem /root/.minio/certs/private.key
Schritt 6: MinIO-Einstellungen ändern
Ändern Sie die MinIO-Konfigurationsdatei:
nano /etc/default/minio
Aktualisieren Sie die folgenden Einstellungen:
MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--address :9000 --console-address :9001" MINIO_ROOT_USER="Ihr_Benutzername" MINIO_ROOT_PASSWORD="Ihr_Passwort" MINIO_SERVER_URL="https://yourdomain.com:9000" MINIO_CONFIG_ENV_FILE=/etc/default/minio
Schritt 7: Standardbenutzername und -kennwort ändern
Ändern Sie den Standardbenutzernamen und das Standardkennwort, um Ihre MinIO-Installation zu sichern.
Schritt 8: MinIO-Dienst neu starten
Starten Sie den MinIO-Dienst neu, um die Änderungen anzuwenden:
sudo systemctl starte minio.service neu
Überprüfen Sie den Status, um sicherzustellen, dass MinIO ausgeführt wird:
sudo systemctl status minio.service
Schritt 9: MinIO beim Start aktivieren
Um die Ausführung von MinIO beim Start zu aktivieren, verwenden Sie den folgenden Befehl:
systemctl aktiviere minio
Schritt 10: Einen Bucket erstellen
Erstellen Sie in MinIO einen Bucket, um Ihre Dateien zu speichern. Sie können die MinIO-Weboberfläche oder das MinIO-Befehlszeilentool verwenden, um einen Bucket zu erstellen.
Schritt 11: Erstellen einer Richtlinie für den Bucket
Erstellen Sie eine Richtlinie für den Bucket, um Zugriffsberechtigungen zu definieren. Hier ist eine Beispielrichtlinie:
{ "Version": "2012-10-17", "Anweisung": [ { "Effekt": "Zulassen", "Aktion": [ "s3:*" ], "Ressource": [ "arn:aws:s3:::your_bucket/*" ] } ] }
Schritt 12: Erstellen Sie einen Benutzer und weisen Sie die neue Richtlinie zu
Erstellen Sie einen Benutzer in MinIO und weisen Sie dem Benutzer die zuvor erstellte Richtlinie zu.
Generieren Sie einen Zugriffsschlüssel und einen geheimen Schlüssel für den Benutzer. Sie benötigen diese Schlüssel in den nächsten Schritten.
Schritt 13: Laravel-Support für MinIO einrichten
Wenn Sie Laravel oder PHP verwenden, können Sie MinIO in Ihre Anwendung integrieren, indem Sie Liga/Flysystem-AWS-S3-V3
Paket.
Installieren Sie das Paket über Composer:
Komponist erfordert Liga/Flysystem-aws-s3-v3 "^3.0"
Aktualisieren Sie als nächstes die dateisysteme.php
Konfigurationsdatei:
'Cloud' => Umgebung('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'Treiber' => 's3', 'Endpunkt' => Umgebung('MINIO_ENDPOINT', 'https://yourdomain.com:9000'), 'use_path_style_endpoint' => true, 'Schlüssel' => Umgebung('MINIO_KEY', '...'), 'Geheimnis' => Umgebung('MINIO_SECRET', '...'), 'Region' => Umgebung('MINIO_REGION', 'NUR ETWAS ZUFÄLLIGES'), 'Bucket' => Umgebung('MINIO_BUCKET', 'BUCKETNAME'), ],
Schritt 14: Testen Sie die MinIO-Integration in Laravel
Überprüfen Sie die MinIO-Integration mithilfe der Tinker-Konsole von Laravel:
php Artisan Tinker \Storage::cloud()->put('hello.json', '{"hello": "world"}'); \Storage::cloud()->get('hello.json');
Dies sollte etwas wie „true“ oder etwas Erfolgreiches zurückgeben. Wenn nicht, können Sie diese Dateisystem-Debugoption zu MinIO hinzufügen: 'throw'=> env('APP_DEBUG'), sodass es etwa so aussieht:
'Cloud' => Umgebung('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'Treiber' => 's3', 'Endpunkt' => Umgebung('MINIO_ENDPOINT', 'https://yourdomain.com:9000'), 'use_path_style_endpoint' => true, 'Schlüssel' => Umgebung('MINIO_KEY', '...'), 'Geheimnis' => Umgebung('MINIO_SECRET', '...'), 'Region' => Umgebung('MINIO_REGION', 'NUR ETWAS ZUFÄLLIGES'), 'Bucket' => Umgebung('MINIO_BUCKET', 'BUCKETNAME'), 'werfen' => Umgebung('APP_DEBUG', false) ],
Dies führt nur dann zum Debuggen/Ausgeben von Fehlermeldungen, wenn APP_DEBUG aktiviert ist. Führen Sie dies niemals in der Produktion oder in sensiblen Umgebungen aus.
Schritt 15: Reverse DNS einrichten
Richten Sie nach Möglichkeit Reverse-DNS ein.
Schritt 16: Neustart und Überprüfung
Starten Sie Ihren Server neu und überprüfen Sie, ob MinIO und die Integration mit Laravel noch ordnungsgemäß funktionieren. Dies bedeutet (hoffentlich), dass systemd noch ordnungsgemäß funktioniert.
Schritt 17: Firewalls konfigurieren
Um die Sicherheit zu verbessern, können Sie Firewalls einrichten, um den Zugriff auf MinIO einzuschränken:
- Erlauben Sie für den Administratorzugriff nur Verbindungen von Ihren privaten/bürobezogenen IP-Adressen.
- Erlauben Sie für den Webzugriff nur Verbindungen von den IPs der Server, die Zugriff benötigen.
Denken Sie immer daran, dass Sie Ihre IP-Adresse zu Hause, im Büro oder auf dem Server zur Whitelist hinzufügen müssen, wenn sie sich ändert. Wenn sich die IP-Adressen zu häufig ändern, ergreifen Sie geeignete andere Sicherheitsmaßnahmen für Ihren Server.
Wenn Sie diese Schritte befolgen, können Sie einen einfachen MinIO-Server auf Ihrem Ubuntu-Server installieren und einrichten und so die hohen Kosten vermeiden, die mit Amazon S3 verbunden sind. Durch die Integration von MinIO mit Laravel/PHP können Sie die Leistungsfähigkeit des Objektspeichers in Ihren Anwendungen nutzen und gleichzeitig die Kontrolle über Ihre Daten und Kosten behalten.
Erstellen Sie außerdem einen Cronjob zur Überprüfung des Speicherplatzes, der eine E-Mail sendet, wenn Ihre Festplatte fast voll ist, insbesondere wenn Sie MinIO im Einzelservermodus verwenden. MinIO kann mehrere Server und Replikationszonen miteinander verknüpfen.
Wenn Ihnen das zu kompliziert ist, haben wir auch einen Leitfaden für die Einrichtung eines einfacher SFTP-Server für Ubuntu / Laravel.