Laravel S3 Driver

لاراول مفهومی با عنوان دیسک دارد که به شما این اجازه را می‌دهد که بدون اعمال تغییرات خاصی در پروژه‌یتان، فایل‌هایتان را در جاهای مختلف ذخیره کنید. شما تا به حال از دیسکlocalاستفاده کرده‌اید. این دیسک فایل‌های شما را در پوشه‌یstorageذخیره می‌کند. اما احتمالا به این هم فکر کرده‌اید که اگر تعداد و حجم فایل‌هایتان زیاد شد، باید چه کنید؟ چگونه از فایل‌هایتان فایل پشتیبان تهیه کنید؟ فایل‌های پشتیبان را کجا نگهداری کنید؟

برای حل مشکلاتی که به آن اشاره کردیم، می‌توانید از دیسکliaraاستفاده کنید. لیارا یکAPIمشابه نمونه‌های خارجی مانندAmazon S3وRackspace Cloud Storageدارد که تمام دغدغه‌های شما برای ذخیره‌ی فایل‌هایتان را حل می‌کند.

نصب و راه‌اندازی

از آنجایی که سرویس فایل لیارا با S3 سازگار است، شما می‌توانید از همانS3 Driverلاراول، برای ذخیره‌ی فایل در لیارا با کمی تغییرات کوچک، استفاده کنید.

با توجه به مستندات لاراول لازم است کهS3 Driverنصب شود. برای نصب می‌توانید از دستور زیر استفاده کنید:

composer require league/flysystem-aws-s3-v3

سپس وارد فایلconfig/filesystems.phpشوید و یک دیسک جدید با نامliaraاضافه کنید:

همان‌طور که مشاهده می‌کنید، در این تکه‌کد، نام دیسک را برابرliaraقرار داده‌ایم و از درایورs3استفاده خواهیم کرد. مقدارregionدر حال حاظر، باید حتما برابرus-east-1باشد،

و حالا باید مابقی تنظیمات را که نباید در سورس‌کد نوشته شوند را در فایل.envباید وارد کنیم:

LIARA_ENDPOINT="https://asdf.storage.liara.ir"
LIARA_ACCESS_KEY=KBSIYRR36U3A1IO1QARI
LIARA_SECRET_KEY=Z9BV6YsP7jtRQR1qCJk3PWecs22smNTOl7HC1Yj3
LIARA_BUCKET=test

به مقادیر فیلدهایLIARA_ACCESS_KEYوLIARA_SECRET_KEYو همین‌طورLIARA_ENDPOINTاز داخل داشبورد، بخش سرویس فایل می‌توانید دسترسی داشته باشید. اما برای فیلدLIARA_BUCKETلازم است که وارد «داشبورد سرویس فایل» شوید و یک باکت با نام دلخواه‌تان بسازید و سپس نام آن را در اینجا وارد نمایید.

Create a new bucket

Bucket چیست؟

باکت را اگر معادل مخزن در نظر بگیریم، مخزن و محفظه‌ای برای نگه‌داری پوشه‌ها و فایل‌های شماست. ممکن است شما باکت‌های‌تان را به این شکل ایجاد کنید:

  • images
  • videos
  • docs

و یا ممکن است به ازای هر پروژه، یک باکت ایجاد کنید:

  • chat-app-files
  • my-second-project-files

و یا حتی ترکیبی از این حالت‌ها. باکت‌ها علاوه‌بر این که برای نظم‌دادن به فایل‌ها کاربردی هستند، قابلیت‌هایی مثل سطوح دسترسی به فایل‌ها و پوشه‌های درون آن باکت را می‌توانند فراهم کنند.

سطح دسترسی باکت

همان‌طور که گفته شد، باکت‌ها می‌توانند سطح دسترسی فایل‌های درون خود را مشخص کنند. برای این کار، کافیست که روی تنظیمات باکت که در مقابل نام هر باکت وجود دارد، کلیک کرده و بعدEdit policyرا انتخاب کنید:

Edit bucket policy

در صفحه‌ای که باز می‌شود، می‌توانیدPrefixو یا همان پیشوند مورد نظرتان را وارد کنید و سپس برای آن Prefix باید دسترسی مربوطه که می‌تواند یک از موارد زیر باشد را انتخاب کنید:

  • Read Only: هر کسی می‌تواند این فایل‌ها را مشاهده کند.
  • Write Only: هر کسی می‌تواند این فایل‌ها را تغییر دهد و فایل‌های دیگری را به جای آن‌ها آپلود کند.
  • Read and Write: همه می‌توانند این فایل‌ها را مشاهده و فایل‌های دیگری را به جای آن آپلود کنند.

برای مثال، اگر Prefix را برابر photo و دسترسی را برابر Read Only قرار دهید، همه‌ی فایل‌های این باکت که با نام photo آغاز شوند، از طریق URL مخصوص خودشان در دسترس خواهند بود.

اگر می‌خواهید دسترسی‌ای را روی همه‌ی فایل‌های باکت اعمال کنید، فقط کافیست که که در فیلد Prefix کاراکتر*را قرار دهید تا به عنوان Wild card عمل کرده و شامل همه‌ی فایل‌های داخل باکت شود.

Bucket policies

آپلود فایل

با استفاده ازStorage Facadeدر لاراول، می‌توانید فایل‌های‌تان در سرویس فایل لیارا مدیریت کنید.

به صورت پیش‌فرض، فایل‌ها داخل پوشه‌یstorageخود لاراول ذخیره می‌شوند، اما می‌توانید داخل فایل.envتنظیمات زیر را وارد کنید تا درایور فایل‌سیستم پیش‌فرض تغییر کرده و برابر لیارا شود:

FILESYSTEM_DRIVER=liara

از این پس،Storage Facadeفایل‌ها را در سرویس فایل لیارا آپلود کرده و از آنجا می‌خواند.

برای اطلاعات بیشتر به مستندات لاراول مراجعه کنید.