استقرار پروژه‌های Django

پروژه‌ی شما باید دارای فایلrequirements.txtباشد و حتما مطمئن شوید که Django در این فایل وجود داشته باشد تا بتواند در لیارا مستقر شود. در حال حاظر، لیارا از Django 2 پشتیبانی می‌کند.

شروع عملیات استقرار

در ابتدا مطمئن شوید که@liara/cliرا روی کامپیوترتان نصب کرده‌اید. اطلاعات بیشتر
سپس دستور زیر را داخل پروژه‌ی‌تان اجرا کنید:

liara deploy

لیارا به صورت خودکار، تشخیص خواهد داد که پروژه‌ی شما را باید به عنوان یک پروژه‌ی Django اجرا کند و عملیات استقرار را آغاز خواهد کرد. اما اگر مشکلی در تشخیص وجود داشت، می‌توانید از دستور زیر استفاده کنید:

liara deploy --platform=django

پکیج‌ها به صورت خودکار نصب می‌شوند

لیارا به صورت خودکار پکیج‌هایی که در فایل‌هایrequirements.jsonلیست شده‌اند را برای شما نصب می‌کند. پس نیازی ندارید که به دنبال اجرای دستوراتpip installباشید. از آن‌جایی که اجرای این دستورات زمان‌بر است، برای سرعت بیشتر، این دستورات را روی سرورهای قدرتمندمان اجرا می‌کنیم تا زمان زیادی را منتظر نمانید.

امنیت

جنگو داده‌های حساس شما را رمزنگاری می‌کند. برای رمزنگاری نیاز به یک کلید غیر قابل حدس و پیچیده دارد که شما باید آن را ایجاد کرده و از طریق پنل تنظیمات آن را در اختیار پروژه‌یتان قرار دهید.

کلیدی که تولید کردید را کپی کرده و در پنل تنظیمات پروژه‌یتان با عنوانSECRET_KEYوارد کنید:

SECRET_KEY=tZdGodxUjN0WJwI8
تنظیمات امنیتی جنگو

هر پروژه‌ای یک بخش تنظیمات دارد که از طریق آن می‌توانید متغیرهای لازم را برای پروژه تعریف کنید. (اطلاعات بیشتر)

فعال یا غیرفعال‌سازی حالت Debug

بعد از دیپلوی کامل پروژه، توصیه می‌شود که حالت Debug پروژه‌های جنگو را غیر فعال کنید. برای غیر فعال‌سازی، کافیست که در تنظیمات پروژه متغیری با نامDEBUGایجاد کنید و مقدار آن را برابر باfalseقرار دهید.

تنظیمات دیباگ جنگو

اتصال به دیتابیس

شما می‌توانید از بخش «دیتابیس‌ها»، یک دیتابیس MySQL یا MongoDB ایجاد کنید. بعد از ایجاد دیتابیس، در لیست دیتابیس‌ها، روی دیتابیس موردنظرتان کلیک کنید تا اطلاعات اتصال به آن برای‌تان نمایش داده شود.
هر پروژه‌ای یک بخش تنظیمات دارد که از طریق آن می‌توانید متغیرهای لازم را برای پروژه تعریف کنید. (اطلاعات بیشتر)
برای این‌که پروژه‌ی‌ شما بتواند به دیتابیسی که ساختید متصل شود، باید متغیر زیر را ایجاد کرده و مقداردهی کنید:

DATABASE_URL=mysql://root:PASSWORD@HOST:PORT/my_database

توجه کنید که متغیر بالا، صرفا جهت نمونه آورده شده و شما باید مقدار آن را با اطلاعات دیتابیسی که ساختید پر کنید. نکته‌ی دیگری که باید به آن توجه کنید این است که در مثال بالا، فرض بر این بوده است که شما به سرور دیتابیس‌تان متصل شده و یک دیتابیس با نامmy_databaseساخته‌اید.

اجرای Migration ها

از آن‌جایی که کنترل تغییرات دیتابیس باید در اختیار خود شما باشد، ما migration ها را اجرا نمی‌کنیم و شما باید هر زمان که نیاز داشتید آن‌ها را اجرا کنید.
برای اجرا migration ها، کافیست به کنسول پروژه‌ی‌تان متصل شوید (اطلاعات بیشتر درمورد کنسول) و دستور مربوطه را اجرا کنید:

python manage.py migrate

تنظیمات Nginx

استقرار پروژه‌های Django، توسط وب‌سرورNginxانجام می‌گیرد. در شرایط مختلف، ممکن است که نیاز داشته باشید این وب‌سرور را مطابق با نیازهای‌تان تنظیم کنید. برای این کار، کافیست که در ریشه‌ی پروژه‌ی‌تان، فایلی با نامliara_nginx.confایجاد کنید. به‌صورت پیش‌فرض، برای پروژه‌های Django، این فایل به شکل زیر تعریف شده‌است:

location /static {
  alias /usr/src/app/staticfiles;
}

location / {
  try_files $uri @django_app;
}

که شما می‌توانید آن را به شیوه‌ی خودتان گسترش دهید. برای مثال، برای فعال‌کردن فشرده‌سازیgzipمی‌توانید به این صورت عمل کنید:

gzip             on;
gzip_disable     "msie6";
gzip_vary        on;
gzip_proxied     any;
gzip_comp_level  6;
gzip_types       text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;

location /static {
  alias /usr/src/app/staticfiles;
}

location / {
  try_files $uri @django_app;
}

ذخیره‌ی فایل‌ها

شما می‌توانید فایل‌های Media پروژه‌ی‌تان را به ۲ شیوه ذخیره کنید. اول این که می‌توانید از پوشه‌ی media در ریشه‌ی پروژه‌ی‌تان استفاده کنید. ما این روش را برای پروژه‌های بزرگ توصیه نمی‌کنیم، چون مقیاس‌پذیر نیست. اما برای پروژه‌های کوچک و متوسط قابل استفاده است.
از آن‌جایی که فایل‌سیستم در لیارا موقتی است، لازم است که این پوشه را به عنوان Volume در فایلliara.jsonپروژه‌ی‌تان به لیارا معرفی کنید:

{
  "volume": "/usr/src/app/media"
}
ریشه‌ی پروژه‌های جنگو در لیارا/usr/src/appاست. برای همین در زمان تعریف volume باید از این مسیر شروع کنید.

روش دوم استفاده از سرویس فایل لیارا است. این سرویس در واقع یک سرویس Object Storage است که دارای API ای سازگار با سرویس معروف AWS S3 است. بنابراین شما می‌توانید از کتاب‌خانه‌های AWS S3 برای کار با سرویس فایل لیارا استفاده کنید.
ما استفاده از کتاب‌خانه‌ی MinIO را برای کار با سرویس فایل لیارا توصیه می‌کنیم.