اگر در حال ساختن یک برنامه وب جنگو هستید، مدیریت کارآمد دارایی های ثابت و فایل های رسانه ای بارگذاری شده توسط کاربر ضروری است.
اگر در حال ساختن یک برنامه وب جنگو هستید، مدیریت کارآمد دارایی های ثابت و فایل های رسانه ای بارگذاری شده توسط کاربر ضروری است.
در یک محیط توسعه، جنگو این فایل ها را مدیریت می کند. در تولید، با این حال، شما می خواهید گزینه های بیشتری را بررسی کنید. پایگاه کاربر شما ممکن است به طور قابل توجهی رشد کند و ممکن است با فایلهای بسیار بزرگتری مانند صدا و تصویر سر و کار داشته باشید.
سطل سرویس ذخیره سازی ساده خدمات وب آمازون (AWS) (S3) یک جایگزین برای میزبانی فایل های استاتیک و رسانه ای است. با ادغام S3 با جنگو، میتوانید بار مدیریت فایل را از سرور خود تخلیه کنید، بار را کاهش دهید و از تحویل سریعتر و مطمئنتر داراییها اطمینان حاصل کنید.
مرحله 1: یک حساب AWS ایجاد کنید
اگر حساب AWS ندارید، به سایت AWS بروید و یک حساب جدید ایجاد کنید.
حساب های جدید AWS هر ماه به مدت یک سال به 5 گیگابایت حافظه استاندارد S3 دسترسی رایگان دارند.
مرحله 2: یک سطل S3 برای پروژه خود ایجاد کنید
- پس از ایجاد حساب کاربری AWS خود، وارد شوید و S3 را در نوار جستجوی بالا جستجو کنید، سپس گزینه اول را انتخاب کنید.
- پس از انتخاب گزینه اول، صفحه جدیدی را مشاهده خواهید کرد. روی دکمه Create Bucket کلیک کنید:
- در مرحله بعد، یک نام برای سطل S3 خود ارائه دهید. شما می توانید بیشتر تنظیمات را به عنوان پیش فرض بگذارید.
- به تنظیمات Block Public Access برای این بخش سطل بروید، تیک تنظیمات Block all public access را بردارید و هشداری را که نشان داده می شود تأیید کنید.
- پس از اتمام، روی دکمه ایجاد سطل کلیک کنید. شما را به صفحه ای هدایت می کند که لیستی از سطل های S3 که ایجاد کرده اید را نشان می دهد.
مرحله 3: یک کاربر IAM در AWS ایجاد کنید
AWS سرویسی به نام IAM (مدیریت هویت و دسترسی) ارائه می دهد. این به شما امکان می دهد یک حساب جداگانه برای شخص یا برنامه خاصی ایجاد کنید که نیاز به تعامل با خدمات AWS دارد.
میتوانید سطوح مختلفی از مجوزها را به کاربران IAM اختصاص دهید، که نشان دهنده افراد یا برنامههایی است که با سرویسهای AWS ایجاد شده در تعامل هستند. با کاربران IAM، میتوانید اطمینان حاصل کنید که هر کاربر فقط به منابع مورد نیاز خود دسترسی دارد و نه بیشتر.
برای اهداف امنیتی، باید یک کاربر IAM برای پروژه جنگو خود ایجاد کنید تا با سطل S3 شما تعامل داشته باشد. برای ایجاد یک کاربر IAM در AWS مراحل زیر را دنبال کنید:
- در نوار جستجو، IAM را تایپ کرده و اولین گزینه را انتخاب کنید. یک صفحه جدید ظاهر می شود.
- در سمت چپ صفحه IAM، Users را انتخاب کنید، سپس روی دکمه افزودن کاربران کلیک کنید. صفحه دیگری برای پر کردن برخی از اطلاعات باز می شود.
- با وارد کردن یک نام برای کاربر IAM و کلیک بر روی دکمه Next در پایین شروع کنید: در صفحه بعد، باید سطوح مجوز برای کاربر IAM را انتخاب کنید. مراحل زیر را دنبال کنید: ابتدا از قسمت Permissions options گزینه Attach Policyes direct را انتخاب کنید. در مرحله بعد، یک خط مشی مجوز برای کاربر IAM خود تعریف کنید. این مشخص می کند که کاربر IAM چه کاری را می تواند انجام دهد و چه کاری را نمی تواند انجام دهد. از آنجایی که میخواهید برنامه جنگو شما فایلها را دانلود و آپلود کند، باید به آن دسترسی کامل به سطل S3 بدهید. در قسمت Permissions Policy ها باید S3FullAccess را جستجو کرده و گزینه را انتخاب کنید. پس از اتمام، روی دکمه Next کلیک کنید.
- در مرحله بعد، سیاست های مربوط به کاربر IAM را مرور کنید و روی دکمه Create user کلیک کنید تا کاربر IAM خود را ایجاد کنید.
- ابتدا از قسمت Permissions options گزینه Attach Policyes direct را انتخاب کنید.
- در مرحله بعد، یک خط مشی مجوز برای کاربر IAM خود تعریف کنید. این مشخص می کند که کاربر IAM چه کاری را می تواند انجام دهد و چه کاری را نمی تواند انجام دهد. از آنجایی که میخواهید برنامه جنگو شما فایلها را دانلود و آپلود کند، باید به آن دسترسی کامل به سطل S3 بدهید.
- در قسمت Permissions Policy ها باید S3FullAccess را جستجو کرده و گزینه را انتخاب کنید. پس از اتمام، روی دکمه Next کلیک کنید.
مرحله 4: یک کلید دسترسی برای کاربر IAM خود ایجاد کنید
در AWS، یک کلید دسترسی به اعتبارنامه هایی اشاره دارد که می توانید از آنها برای احراز هویت و دسترسی ایمن به منابع AWS به صورت برنامه ای استفاده کنید. پروژه جنگو شما باید این اعتبارنامه ها را برای دسترسی به سطل S3 خود ارائه دهد.
مراحل زیر به شما کمک می کند یک کلید دسترسی برای پروژه خود ایجاد کنید.
- پس از ایجاد کاربر IAM خود، یک پیام هشدار دریافت خواهید کرد که از شما می خواهد کاربر را مشاهده کنید. همچنین می توانید با کلیک بر روی نام کاربری، کاربر را مشاهده کنید.
- در مرحله بعد، تب Security credentials را انتخاب کنید، به پایین بروید تا بخش کلیدهای دسترسی را پیدا کنید و Create access key را انتخاب کنید.
- شما باید یک مورد استفاده برای دسترسی خود انتخاب کنید، بنابراین AWS می تواند در صورت لزوم یک گزینه جایگزین را توصیه کند. این روی کلید دسترسی شما تأثیری ندارد. به راحتی می توانید گزینه ای مانند سرویس شخص ثالث یا کد محلی را انتخاب کنید و هشداری که ظاهر می شود را تایید کنید. پس از اتمام، روی دکمه Next کلیک کنید.
- در صفحه بعد، یک برچسب توضیحات برای کلید دسترسی خود وارد کنید و روی دکمه ایجاد کلید دسترسی کلیک کنید.
- پس از ایجاد کلید دسترسی، می توانید اعتبارنامه خود را کپی کنید یا آنها را به عنوان یک فایل CSV دانلود کنید. در هر صورت، مطمئن شوید که این داده ها را ایمن و ایمن نگه دارید.
مرحله 5: پروژه جنگو خود را برای S3 Bucket پیکربندی کنید
برای استفاده از سطل S3 خود با پروژه جنگو، این بسته ها را نصب کنید:
- django-storages: این بسته به شما کمک میکند تا یک Backend ذخیرهسازی برای فایلهای خود تعریف کنید.
- boto3: این بسته کیت توسعه نرم افزار AWS (SDK) است تا به پروژه پایتون شما در تعامل با AWS کمک کند.
شما می توانید با تایپ این دستور در ترمینال خود، این بسته ها را در محیط مجازی پایتون خود با مدیریت بسته پایتون پایتون نصب کنید:
pip install django-storages boto3
هنگامی که این بسته ها را با موفقیت نصب کردید، فایل settings.py خود را باز کنید و boto3 را به برنامه های نصب شده اضافه کنید.
آخرین کاری که باید انجام دهید این است که پروژه جنگو خود را برای استفاده از سطل AWS S3 پیکربندی کنید. در اینجا پیکربندی کلی برای استفاده آمده است:
AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID '
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'AWS_STORAGE_BUCKET_NAME'
AWS_S3_SIGNATURE_NAME = 's3v4',
AWS_S3_REGION_NAME = 'AWS_S3_REGION_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERITY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
پیکربندی بالا را در فایل settings.py خود قرار دهید و مقادیر را بر اساس آن جایگزین کنید. AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY خود را با کلید دسترسی و کلید دسترسی مخفی که قبلاً کپی یا دانلود کردهاید جایگزین کنید. همچنین باید AWS_STORAGE_BUCKET_NAME و AWS_S3_REGION_NAME را به نام سطل و منطقه S3 خود تغییر دهید.
میتوانید با رفتن به سطل S3 خود و کپی کردن آخرین مقادیر از ستون منطقه AWS، نام منطقه را دریافت کنید.
مرحله 6: پیکربندی AWS خود را آزمایش کنید
با تکمیل مراحل فوق، باید با آپلود فایل ها، برنامه خود را آزمایش کنید. نمونههای کد زیر فایلها را مستقیماً از پنل مدیریت آپلود میکنند، اما شما میتوانید فایلهای خود را از مکان دیگری آپلود کنید.
برای زمینه، می توانید مدلی به شکل زیر داشته باشید:
class Post(models.Model):
title = models.CharField(max_length=225, blank=False, null=False)
content = models.TextField('Post Body', blank=False, null=False)
author = models.CharField(max_length=225, blank=False, null=False)
date_published = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='posts')
def __str__(self):
return self.title
اطمینان حاصل کنید که عملیات لازم مانند مهاجرت، اضافه کردن آن به پنل مدیریت، ایجاد یک نمای و سایر موارد ضروری برای پروژه خود را انجام می دهید. مطمئن شوید که اصل MVT جنگو را تمرین کرده اید.
پس از اتمام کار، به پنل مدیریت خود یا هر فرمی که برای آپلود فایل ایجاد کرده اید بروید و یک فایل تصویری را آپلود کنید.
به سایت اصلی خود بروید و تأیید کنید که تصویر آنجاست. اگر هست روی تصویر کلیک راست کرده و گزینه Open image in new tab را انتخاب کنید. در برگه جدید حاوی تصویر، متوجه خواهید شد که نوار آدرس به سطل S3 که قبلا ایجاد کرده اید اشاره می کند:
یکی دیگر از راههای تأیید پیکربندی کارآمد این است که به سطل خود در کنسول AWS بروید. تصویر خود را در آنجا خواهید یافت:
مرحله 7: فایل های استاتیک را در سطل S3 خود جمع آوری کنید
تا کنون، شما قادر به آپلود فایل های رسانه ای در سطل S3 خود بوده اید. اکنون، شما باید فایل های استاتیک خود را آپلود کنید.
برای انجام این کار، این تنظیمات را به فایل settings.py خود اضافه کنید:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
پس از آن، Command Line Interface (CLI) خود را باز کنید و این دستور را اجرا کنید:
python manage.py collectstatic --noinput
برای تأیید اینکه همه چیز کار می کند، سطل S3 خود را در کنسول AWS باز کنید. پوشه ای به نام static را خواهید دید.
از سطل AWS S3 برای کارهای بیشتر استفاده کنید
امکانات سطل های AWS S3 بسیار زیاد است! شما باید با آن آشنا شوید و یاد بگیرید که چگونه از S3 برای مقاصد دیگر مانند میزبانی یک برنامه وب استاتیک استفاده کنید.
دانستن نحوه استفاده صحیح از سطل های S3 در زمان شما صرفه جویی می کند و به شما کمک می کند محصول یا راه حل بهتری بسازید. اما همچنین باید توجه داشته باشید که S3 ممکن است برای هر موردی مناسب نباشد، بنابراین قبل از استفاده از آن، نیازهای پروژه خود را در نظر بگیرید.