دیپلوی جنگو در لیارا

  • حسین طاهری
  • 1401/08/14
دیپلوی جنگو در لیارا
جنگو, لیارا, دیپلوی

مقدمه

هدف ما استقرار یک پروژه ی جنگو روی سرویس ابری لیارا می باشد. مزیت لیارا راحتی دیپلوی است که ما را از سر و کله زدن با کلی از تنظیمات و پیکربندی های طاقت فرسا مثل (تنظیمات وب سرور و دستورات لینوکسی و ...) راحت می کند.

علاوه بر این لیارا به شما یک زیر دامنه رایگان بصورت پیشفرض می دهد و شما برای شروع کار نیاز به تهیه ی دامنه ندارید.

مراحل کار

ابتدا لازم است در وبسایت liara.ir یک حساب کاربری بسازید و به حساب کاربری خود وارد شوید. سپس روی تب پلتفرم کلیک کنید و بعد روی ایجاد برنامه کلیک کنید.

ایجاد برنامه جدید

صفحه ای برای شما باز می شود که باید در آن نوع برنامه که Django مد نظر ماست و شناسه برنامه و پلن خود را انتخاب کنید. شناسه برنامه ی شما قسمتی از زیر دامنه ای که لیارا به شما می دهد خواهد بود. طبیعی است که شناسه شما نباید قبلا توسط شخص دیگری در لیارا استفاده شده باشد.

ایجاد شناسه برنامه

پلن خود را بسته به نیاز خود انتخاب کنید  (برای تهیه ی این بلاگ از پلن رایگان استفاده شده است).

در مرحله ی بعد با صفحه ی زیر مواجه خواهید شد.

استقرار سورس کد

در این مرحله باید سورس کد پروژه ی خود را برای استقرار در لیارا آپلود کنیم. برای این کار لیارا برای ما دو روش تدارک دیده است.

  • liara desktop : برنامه گرافیکی قابل نصب که به شما اجازه می دهد با drag کردن پوشه اصلی پروژه داخل برنامه آنرا در لیارا مستقر کنید.
  • liara cli : برنامه ای غیر گرافیکی که با استفاده از npm (node package manager ) بر روی سیستم شما نصب می شود و با استفاده از اجرا دستورات در ترمینال یا cmd پروژه را بر روی لیارا مستقر می کنیم.

در این آموزش از روش دوم استفاده می کنیم. اگر تمایل به استفاده از روش اول را دارید می توانید ویدیوی آموزشی مربوطه را در مستندات سایت لیارا مشاهده کنید.

برای نصب liara cli نیاز هست که npm را روی سیستم خود نصب کنید که npm همراه با node js نصب خواهد شد. پس ابتدا نیاز هست که node js را دانلود و نصب کنیم. برای دانلود node js می توانید از لینک زیر استفاده کنید.

https://nodejs.org/en/download

بعد از نصب node js , npm نیز بطور خودکار روی سیستم شما نصب خواهد شد. (پیشنهاد می شود بعد از نصب node js یکبار سیستم خود را restart کنید. اگر در حین نصب گزینه ای با عنوان add to path را مشاهده کردید حتما تیک آنرا بزنید.)

حال یک ترمینال یا cmd باز کنید و با استفاده از دستور زیر liara cli را نصب کنید.

npm install -g @liara/cli

اکنون liara cli بر روی سیستم شما نصب شده است. در مسیر اصلی پروژه جنگو خود یک ترمینال یا cmd باز کنید. (اگر از ابزار هایی نظیر vscode یا pycharm استفاده می کنید خود نرم افزار یک ترمینال در مسیر اصلی پروژه در دسترس شما قرار میدهد.) سپس دستور liara login را تایپ کنید و enter را بزنید. ابتدا از شما می خواهد که کشور خود را انتخاب کنید که Iran را انتخاب می کنیم و سپس ایمیل و رمز عبور خود را وارد کنید.

ورود به cli لیارا

نکات قبل دیپلوی

قبل از اجرا دستور دیپلوی به نکات زیر دقت کنید.

1. فایل requirements.txt باید حتما در مسیر اصلی پروژه باشد و پکیج جنگو حتما در آن قید شده باشد.

2. اگر از فایل .gitignore استفاده می کنید، هر فایل یا پوشه ای را که در آن قید کرده باشید بر روی لیارا آپلود نخواهد شد.

3. متغیر های SECRET_KEY و DEBUG باید بطور مستقیم در فایل settings.py ذکر شده باشند. خود لیارا این متغیر ها را بصورت environment variable تبدیل خواهد کرد و شما می توانید از طریق پنل لیارا متغیر های محیطی را کنترل کنید.

4. نیاز به ذکر کردن متغیر STATIC_ROOT نیست و خود لیارا بصورت خودکار آنرا ایجاد و به سورس شما اضافه می کند.

 حال با وارد کردن دستور liara deploy و مشخص کردن شناسه برنامه مورد نظر فایل های پروژه بر روی لیارا آپلود و مستقر می شوند. (در این مرحله باید کمی صبر کنید تا لیارا برنامه را بسازد و پکیج های مورد نیاز را نصب کند.)

دستور deploy

حال مشاهده می کنید که آدرس وبسایت شما نمایش داده شده و پروژه ی شما مستقر شده است اما کار به اینجا ختم نمی شود. زیرا می بایست یک سرویس دیتابیس نیز ایجاد کنیم و برنامه ی جنگو ی خود را به آن متصل کنیم. در این آموزش از postgresql استفاده خواهیم کرد.

ساخت دیتابیس

برای راه اندازی دیتابیس به تب دیتابیس در پنل کاربری لیارا بروید و روی راه اندازی دیتابیس کلیک کنید.

راه اندازی دیتابیس

در صفحه ی باز شده باید دیتابیس مورد نظر خود (postgres)، ورژن آن (در اینجا از آخرین نسخه یعنی 14.5 استفاده می شود.) همراه با یک نام برای سرویس دیتابیس و یک پلن بسته به نیاز خود انتخاب کنید.

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

بعد از ثبت سرویس کمی صبر کنید تا دیتابیس مستقر شود. بعد از استقرار دیتابیس روی سرویس ایجاد شده کلیک کنید. به تب نحوه ی اتصال بروید و URL دسترسی خصوص به دیتابیس را کپی کنید.

آدرس سرویس دیتابیس

حال به تب پلتفرم بر گردید و روی برنامه ی جنگوی خود کلیک کنید و به تب تنظیمات بروید. در انتهای صفحه به بخش مدیریت متغیر های محیطی می رسید. بر روی افزودن متغیر کلیک کنید و یک متغیر جدید با کلید DATABASE_URL و مقدار آدرس دیتابیسی که کپی کردید ایجاد کنید و بر روی ثبت تغییرات کلیک کنید و منتظر بمانید تا برنامه مجددا پیکربندی شود. (برای اضافه کردن متغیر های محیطی دلخواه خود می توانید از همین بخش اقدام کنید.)

پیکربندی مجدد متغیر های محیطی

 نکته بسیار مهم: وقتی پروژه را بر روی لیارا آپلود می شود، صرفا به اندازه ی حجم پروژه به ما فضای ذخیره سازی اختصاص داده می شود و پس از آن دیگر نمی توانید فایلی را در سرور ایجاد کنید مگر اینکه فایل را در سیستم خود در کنار پروژه قرار دهید و مجددا عملیات استقرار (liara deploy) را تکرار کنید. از این رو باید قبل از استقرار حتما دستور makemigrations را روی سیستم خود اجرا کرده باشید که فایل های migrations در سیستم خودتان ایجاد شود و همراه پروژه به لیارا ارسال شود. زیرا وقتی پروژه در سرور لیارا هست، اجازه ایجاد فایل جدید را نداریم و موقع اجرای دستور makemigrations به ارور می خوریم. از این رو هنگام آپلود کردن فایل های مدیا مثل تصویر محصول به سرور نیز به مشکل بر خواهیم خورد. لیارا برای فایل های مدیا یک چهارچوب خاصی را معین کرده که استفاده از دیسک هست که به آن خواهیم پرداخت.

 حال باید دستور migrate را برای تشکیل جداول در دیتابیس اجرا کنیم برای این کار نیاز به دسترسی به ترمینال داریم برای دسترسی به ترمینال روی تب خط فرمان کلیک کنید و سپس روی اتصال با مرورگر کلیک کنید با صفحه ای مانند زیر مواجه خواهید شد.

اجرای دستور migrate

دستور migrate را اجرا کنید تا جداول دیتابیس شما ایجاد شوند. ( پلن رایگان سرور بسیار ضعیف بود و نتوانستم عملیات migrate را اجرا کنم، مجبور به ارتقای سرویس شدم :D )

شما در همین ترمینال می توانید دستور createsuperuser را اجرا کنید و کاربر ادمین خود را بسازید اما هنوز نمی شود فایلی آپلود کرد، زیرا باید یک سرویس دیسک نیز برای سایت خود نیز راه اندازی کنیم.

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

راه اندازی سرویس دیسک

حد اکثر حجمی که می توانید انتخاب کنید حجمی است که موقع خرید سرور به عنوان فضای ذخیره سازی به شما نمایش داده شد. شناسه هم مثل دیتابیس یک اسم با معنی و منحصر به فرد انتخاب کنید و روی ساخت دیسک کلیک کنید و منتظر بمانید که سرویس دیسک شما مستقر شود.

حال باید دیسک خود را به برنامه ی جنگو معرفی کنیم. برای این کار باید در پوشه پروژه در سیستم خود فایلی به اسم liara.json ایجاد کنیم و تنظیمات مربوط به دیسک را در آن وارد کنیم.

محتوای فایل بصورت زیر خواهد بود.

{
  "disks": [
    {
      "name": "media-root",
      "mountTo": "media"
    }
  ]
}

مقدار name باید شناسه ی دیسک ما باشد و مقدار mountTo می بایست media باشد.

حال باید عملیات استقرار را مجددا انجام دهیم. به دلیل اینکه فایلی به پروژه اضافه شده است و همچنین لیارا می بایست از تنظیمات جدید مطلع شود. اگر نخواهید این فایل را ایجاد کنید، می توانید تنظیمات دیسک را به دستور liara deploy بدهید. اگر از این روش استفاده کنید باید هر با هر بار deploy تنظیمات دیسک را نیز قید کنید.

liara deploy --disks media-root:media

دیپلوی پروژه ما به اتمام رسید. حالا شما می توانید فایل های مدیا را نیز آپلود کنید. هم اکنون می توانید در بخش متغیر های محیطی، متغیر DEBUG را برابر False قرار بدهید.

برای مشاهده آموزش های بیشتر در زمینه دیپلوی جنگو روی لیارا می توانید از مستندات لیارا استفاده کنید.

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

ارسال نظر :
این نام در کامنت ها و پروفایل عمومی شما نمایش داده خواهد شد.
پست های مرتبط :
حسین طاهری 1401/08/03