Letar du efter ett kostnadseffektivt alternativ till Amazon S3? MinIO är ett bra alternativ. I den här guiden går vi igenom installationen och den grundläggande installationen av MinIO på din Ubuntu-server, tillsammans med bonussteg för att integrera den med Laravel/PHP.
Självklart är det på egen risk att sätta upp detta. Vi är inte ansvariga för någonting.
Steg 1: Konfigurera Ubuntu Server
Innan vi börjar, se till att du har en Ubuntu-server igång.
Steg 2: Installera MinIO
För att installera MinIO, följ instruktionerna i officiella MinIO-dokumentation.
Steg 3: Konfigurera MinIO systemd Service
Efter installationen lägger du till filen systemd minio.service. Om det inte läggs till automatiskt kan du lägga till det manuellt. Du kan hitta en exempelfil här.
Öppna filen minio.service och ta bort följande rader:
Användare=minio-användare Group=minio-användare
Utan dessa linjer kommer MinIO att fungera i roten som beskrivs i detta GitHub-problem.
Steg 4: Installera Let's Encrypt SSL-certifikat
MinIO stöder SSL-kryptering. För att ställa in SSL kan du använda Let's Encrypt, en gratis och allmänt betrodd SSL-certifikatleverantör.
Följ instruktionerna på https://certbot.eff.org för Ubuntu att installera Let's Encrypt och generera ditt SSL-certifikat.
Steg 5: Konfigurera MinIO med Let's Encrypt
När du har genererat SSL-certifikatet måste du konfigurera MinIO för att använda det. Så här gör du:
Kopiera SSL-certifikatfilerna till MinIO-katalogen:
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.key
Ställ in en crontab för att förnya SSL-certifikatet varje vecka:
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/keys/private
Steg 6: Ändra MinIO-inställningar
Ändra MinIO-konfigurationsfilen:
nano /etc/default/minio
Uppdatera följande inställningar:
MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--adress :9000 --console-address :9001" MINIO_ROOT_USER="ditt_användarnamn" MINIO_ROOT_PASSWORD="ditt_lösenord" MINIO_SERVER_URL="https://com:9000." MINIO_CONFIG_ENV_FILE=/etc/default/minio
Steg 7: Ändra standardanvändarnamn och lösenord
Ändra standardanvändarnamn och lösenord för att säkra din MinIO-installation.
Steg 8: Starta om MinIO Service
Starta om MinIO-tjänsten för att tillämpa ändringarna:
sudo systemctl starta om minio.service
Kontrollera statusen för att säkerställa att MinIO körs:
sudo systemctl status minio.service
Steg 9: Aktivera MinIO vid uppstart
För att aktivera MinIO att köras vid start, använd följande kommando:
systemctl aktivera minio
Steg 10: Skapa en hink
Skapa en hink i MinIO för att lagra dina filer. Du kan använda MinIOs webbgränssnitt eller MinIOs kommandoradsverktyg för att skapa en hink.
Steg 11: Skapa en policy för hinken
Skapa en policy för hinken för att definiera åtkomstbehörigheter. Här är ett exempel på policy:
{ "Version": "2012-10-17", "Statement": [ { "Effekt": "Tillåt", "Action": [ "s3:*" ], "Resurs": [ "arn:aws:s3:::din_hink/*" ] } ] }
Steg 12: Skapa en användare och tilldela den nya policyn
Skapa en användare i MinIO och tilldela användaren den tidigare skapade policyn.
Skapa en åtkomstnyckel och en hemlig nyckel för användaren. Du kommer att behöva dessa nycklar i nästa steg.
Steg 13: Konfigurera Laravel Support för MinIO
Om du använder Laravel eller PHP kan du integrera MinIO med din applikation med hjälp av league/flysystem-aws-s3-v3
paket.
Installera paketet via Composer:
kompositör kräver league/flysystem-aws-s3-v3 "^3.0"
Uppdatera sedan filsystem.php
inställningsfil:
'moln' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'drivrutin' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https://dindomän.com:9000'), 'use_path_style_endpoint' => true, 'key'MIN'IO ='tKEY', 'se', 'MIN'IO =' en => env('MINIO_SECRET', '...'), 'region' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), ],
Steg 14: Testa MinIO-integration i Laravel
Verifiera MinIO-integrationen genom att använda Laravels tinkerkonsol:
php artisan tinker \Storage::cloud()->put('hello.json', '{"hello": "world"}'); \Storage::cloud()->get('hello.json');
Detta bör returnera något som "sant" eller något framgångsrikt. Om inte, kan du lägga till detta filsystems felsökningsalternativ till MinIO: 'throw'=> env('APP_DEBUG'), så det blir något i stil med:
'moln' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'drivrutin' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https://dindomän.com:9000'), 'use_path_style_endpoint' => true, 'key'MIN'IO ='tKEY', 'se', 'MIN'IO =' en => env('MINIO_SECRET', '...'), 'region' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), 'throw' => env('APP_DEBUG', false) ],
Detta kommer bara att felsöka / skicka felmeddelanden när APP_DEBUG är på. Kör aldrig detta i produktion eller i känsliga miljöer.
Steg 15: Konfigurera omvänd DNS
Ställ in omvänd DNS om möjligt.
Steg 16: Starta om och verifiera
Starta om din server och kontrollera att MinIO och integrationen med Laravel fortfarande fungerar korrekt. Detta kommer (förhoppningsvis) att betyda att systemd fortfarande fungerar korrekt.
Steg 17: Konfigurera brandväggar
För att förbättra säkerheten kan du ställa in brandväggar för att begränsa åtkomsten till MinIO:
- För administratörsåtkomst, tillåt endast anslutningar från ditt hem/kontors IP-adresser.
- För webbåtkomst, tillåt endast anslutningar från IP:erna för de servrar som behöver åtkomst.
Var alltid försiktig med det faktum att om ditt hem, kontor eller server IP ändras måste du lägga till dem på vitlistan. Om IP-adresserna ändras till ofta, vidta andra lämpliga säkerhetsåtgärder för din server.
Genom att följa dessa steg kan du installera och konfigurera en grundläggande MinIO-server på din Ubuntu-server och undvika de höga kostnaderna förknippade med Amazon S3. Genom att integrera MinIO med Laravel/PHP kan du utnyttja kraften i objektlagring i dina applikationer samtidigt som du behåller kontrollen över dina data och kostnader.
Skapa också en diskutrymmeskontroller cronjob som skickar e-post om din disk nästan är full, speciellt om du använder MinIO i singelserverläge. MinIO har möjlighet att länka flera servrar och replikeringszoner till varandra.
Om detta är för komplicerat har vi också skapat en guide för att ställa in en enkel SFTP-server för Ubuntu / Laravel.