روش تنظیم storage دیجیتال اوشن روی django
یکی از محصولات محبوب digital ocean به دلیل قیمت بسیار مناسب آن و استفاده ی ساده از آن محصول storage دیجیتال اوشن می باشد. در این نوشته به روش تنظیم storage دیجیتال اوشن بر روی فریم ورک جنگو می پردازیم.
همراه ما باشید.
روش تنظیم storage دیجیتال اوشن روی django
برای اینکار ابتدا باید پکیج های django-storages و boto3 را بر روی پروژه ی خود نصب کنید. برای نصب پکیج های django-storages و boto3 روی پروژه از دو دستور زیر استفاده کنید:
pip install django-storages
pip install boto3
ممکن است نصب پکیج های بالا بر روی سیستم شما با توجه به سرعت اینترنت کمی به طول بینجامد ولی بعد از نصب آن ها این دو پکیج را در فایل requirements.txt پروژه خود قرار دهید.
پیشنهاد نویسنده: در نوشته های قبلی در مورد ساخت خودکار فایل requirements.txt صحبت کرده ایم.
البته پیش فرض این نوشته این است که شما یک پروژه ی انجام شده دارید و قصد نصب آن روی دیجیتال اوشن را دارید پس قطعا پکیج های Django و gunicorn را نیز نصب دارید.
بعد از نصب تمام موارد بالا به فایل settings.py بروید و در بخش INSTALLED_APPS مقدار storages را نیز قرار دهید.
سپس کدهای زیر را نیز در فایل settings.py قرار دهید:
AWS_ACCESS_KEY_ID = 'key_id' AWS_SECRET_ACCESS_KEY = 'access_key' AWS_STORAGE_BUCKET_NAME = 'bucket_name' AWS_DEFAULT_ACL = 'public-read' AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com' AWS_S3_OBJECT_PARAMETERS = { 'CacheControl': 'max-age=86400' } AWS_S3_REGION_NAME = "nyc3" AWS_STATIC_LOCATION = 'static/' STATIC_URL = '%s/%s' % (AWS_S3_ENDPOINT_URL, AWS_STATIC_LOCATION) STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
پیش فرض ما در این نوشته این است که شما دانش خوبی برای کار با جنگو داشته باشید پس احتمالا باید بدانید فایل settings.py در مسیر app اصلی شما قرار دارد.
خب حالا مقادیر بالا را باید از کجا پیدا کنید؟ برای اینکار به digital ocean بروید و در منوی بالایی آن روی دکمه ی create بزنید سپس گزینه ی spaces را بزنید.
با پر کردن موارد بالا می توانید یک spaces بسازید بعد از ساخت آن به لیست spacesها می روید و در آنجا مقدار AWS_SECRET_ACCESS_KEY قرار دارد. مقدار AWS_STORAGE_BUCKET_NAME را نیز در هنگام ساخت spaces انتخاب می کنید. مقدار AWS_S3_ENDPOINT_URL آدرس کلاستر space شما می باشد اگر cdn را فعال کرده باشید می توانید از مقداری که با cdn می باشد استفاده کنید. در متغیر AWS_S3_REGION_NAME نیز نام سرور خود را وارد کنید. مقدار AWS_ACCESS_KEY_ID را در بخش API اکانت خود و spaces key بدست آورید.
شاید در متن بالا گفته باشید ما در حال تنظیم کردن این قابلیت روی دیجیتال اوشن هستیم پس چرا موارد بالا پیشوند AWS دارد؟ با توجه به مستندات djngo storage که در این لینک موجود است از این آموزش می توانید برای apache libcloud و azure storage و digital ocean و backblaze B2 و DropBox و Google cloud storage و … استفاده کرد.
حالا در مسیری که فایل settings.py قرار گرفته است فایل جدیدی با نام storage_backends.py ایجاد کنید و کد زیر را درون آن قرار دهید:
from django.conf import settings from storages.backends.s3boto3 import S3Boto3Storage class StaticStorage(S3Boto3Storage): location = 'static' default_acl = 'public-read' class MediaStorage(S3Boto3Storage): bucket_name = 'media' location = ''
در فایل بالا در صورتی که می خواهید مسیر فولدر static و media را تغییر دهید آن را تغییر دهید.
سپس به فایل settings.py برگردید و مقادیر زیر را نیز وارد کنید:
AWS_MEDIA_LOCATION = 'media/' PUBLIC_MEDIA_LOCATION = 'media' MEDIA_URL = '%s%s' % (AWS_S3_ENDPOINT_URL, AWS_MEDIA_LOCATION) DEFAULT_FILE_STORAGE = 'django_project.storage_backends.MediaStorage'
در کد بالا مقدار django_project را برابر نام app اصلی خود قرار دهید.
بعد از موارد بالا در صورتی که کارهای بالا را درست انجام داده باشید با دستور python manage.py collectstatic باید داده های شما به storage شما منتقل شود.
پایان.!
اگر با هر بخش از نوشته ی بالا مشکلی داشتید در بخش نظرات همین نوشته برای ما بنویسید.
موفق باشید.
ارسال پاسخ