من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

روش تنظیم storage دیجیتال اوشن روی django

روش تنظیم storage دیجیتال اوشن روی django
روش تنظیم storage دیجیتال اوشن روی django

روش تنظیم 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 را بزنید.

digital ocean

با پر کردن موارد بالا می‌توانید یک 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 شما منتقل شود.

 

اگر با هر بخش از نوشته‌ی بالا مشکلی داشتید در بخش نظرات همین نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 3]