نشر مواقع جانغو على منصة Fly.io

في هذا الدرس، سنقوم بإنشاء موقع ويب بسيط “Hello, World” باستخدام Django ثم نشره على موقع Fly.io.

الإعدادات الأولية

افتح سطر الأوامر و يمكنك وضع الكود الخاص بك في أي مكان على جهاز الكمبيوتر. بالنسبة لهذا الدرس، سنضعه على سطح المكتب في مجلد يسمى  helloworld.

# Windows
$ cd desktop\code
$ mkdir helloworld
$ cd helloworld

قم بإنشاء بيئة افتراضية جديدة تسمى venv. و قم بتنشيطها و تثبيت Django باستخدام Pip.

# Windows
$ python -m venv .venv
$ .venv\Scripts\Activate.ps1
(.venv) $ python -m pip install django

استخدم الأمر startproject لإنشاء مشروع Django جديد يسمى django_project وتطبيق جديد يسمى pages.

(.venv) $ django-admin startproject django_project .
(.venv) $ python manage.py startapp pages 

أضف تطبيق  pages الجديد إلى إعدادات  INSTALLED_APPS.

# django_project/settings.py
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "pages",  # جديد
]

ثم قم بتشغيل  migrate لإعداد قاعدة البيانات الأولية و  runserver لبدء خادم الويب Django المحلي.

(.venv) $ python manage.py migrate
(.venv) $ python manage.py runserver 

افتح رابط http://127.0.0.1:8000/ في متصفح الويب الخاص بك لرؤية صفحة الترحيب بـ Django.

الصفحة الترحيبية لجانغو
الصفحة الترحيبية لجانغو

جانغو مرحبا بالعالم

لنقم الآن بإعداد عرض أساسي يرجع النص “Hello, World!”.

# pages/views.py
from django.http import HttpResponse


def homePageView(request):
    return HttpResponse("Hello, World!")

سنقوم بإنشاء ملف جديد يسمى pages/urls.py يحتوي على الكود التالي:

# pages/urls.py
from django.urls import path

from .views import homePageView

urlpatterns = [
    path("", homePageView, name="home"),
]

كما سنقوم بتحديث ملف django_project/urls.py على مستوى المشروع أيضًا.

# django_project/urls.py
from django.contrib import admin
from django.urls import path, include  # جديد

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("pages.urls")),  # جديد
]

و هكذا نكون قد انتهينا! قم بتشغيل الخادم المحلي مرة أخرى:

(.venv) $ python manage.py runserver

قم بتحديث المتصفح على http://127.0.0.1:8000 و ستجده يعرض نص “Hello, World!”

جانغو مرحبا بالعالم

قائمة مراجعة النشر

تم إعداد Django افتراضيًا للتطوير المحلي.

يتضمن الأمر عملية نشر مناسبة جاهزة للإنتاج — راجع كيفية نشر قائمة مراجعة نشر Django و Django — ولكن الخطوات التي سنقوم بها الأن غير الآمنة و لكنها ستسمح لنا بنشر موقعنا البسيط لأغراض تعليمية.

أولاً، قم بتحديث  ALLOWED_HOSTS لقبول جميع المضيفين: هذا غير آمن إلى حد كبير عند إطلاق موقع ويب حقيقي ولكنه جيد في هذه الحالة لأغراض تعليمية كما سبق لي و أن ذكرت.

# django_project/settings.py 
ALLOWED_HOSTS = ["*"]

ثانيًا، قم بتثبيت Gunicorn كخادم حقيقي.

(.venv) $ python -m pip install gunicorn==20.1.0

ثم قم بإنشاء ملف  requirements.txt لسرد الحزم الموجودة في بيئة Python الافتراضية الخاصة بنا.

(.venv) $ pip freeze > requirements.txt

النشر على Fly

حان الوقت للنشر على Fly.io، قم بالتسجيل للحصول على حساب على موقعهم الإلكتروني باستخدام عنوان بريدك الإلكتروني أو حساب GitHub. كما أنهم إشترطو إضافة طريقة الدفع.

لدى Fly واجهة سطر الأوامر (CLI) الخاصة بها للمساعدة في إدارة عمليات النشر، يمكنك اتباع التعليمات الرسمية لتثبيته.

ثم من سطر الأوامر، قم بتسجيل الدخول باستخدام الأمر  flyctl auth login، والذي من المحتمل أن يفتح نافذة متصفح ويب لتتمكن من تسجيل الدخول إلى Fly.

(.venv) $ flyctl auth login
Opening https://fly.io/app/auth/cli/606daf31a9c91b62e5528e27ee891e4e ...

Waiting for session... Done
successfully logged in as test@pyarabic.com

لإعداد موقعنا وتشغيله، قم بتشغيل أمر fly Launch واتبع المعالج.

  • اختر اسمًا للتطبيق: سيكون هذا هو النطاق الفرعي المخصص لـ fly.dev.
  • اختر المنطقة للنشر: حدد المنطقة الأقرب إليك أو منطقة أخرى إذا كنت تفضل ذلك.
  • رفض إعداد قاعدة بيانات Postgres أو Redis: سنعالج هذا الأمر في المشروع التالي.
(.venv) $ fly launch
Creating app in ~/django-helloworld
Scanning source code
Detected a Django app
? Choose an app name (leave blank to generate one): django-helloworld
automatically selected personal organization: Will Vincent
Some regions require a paid plan (fra, maa).
See https://fly.io/plans to set up a plan.

? Choose a region for deployment: Boston, Massachusetts (US) (bos)
App will use 'bos' region as primary
Created app 'django-helloworld' in organization 'personal'
Admin URL: https://fly.io/apps/django-helloworld
Hostname: django-helloworld.fly.dev
Set secrets on django-helloworld: SECRET_KEY
? Would you like to set up a Postgresql database now? No
? Would you like to set up an Upstash Redis database now? No
Wrote config file fly.toml
...
✓ Configuration is valid
Your app is ready! Deploy with `flyctl deploy`

في دليل مشروعك، أنشأ Fly ملفين جديدين:  fly.toml و Dockerfile.

fly.toml هو ملف إعدادات خاص بـ Fly بينما يحتوي ملف Dockerfile على تعليمات لإنشاء صورة Docker على خوادم Fly.

الآن بعد أن تم إعداد كل شيء، قم بتشغيل الأمر  flyctl deploy لنشر مشروعنا على خوادم Fly.

(.venv) $ flyctl deploy
...
 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing]
--> v0 deployed successfully

سيستغرق هذا النشر الأولي بضع ثوانٍ للتشغيل حيث يقوم بتحميل التطبيق الخاص بك، والتحقق من إعدادات التطبيق، وإنشاء الصورة، ثم مراقبته للتأكد من بدء تشغيله بنجاح.

و بمجرد الانتهاء، قم بزيارة تطبيقك باستخدام الأمر التالي لفتح عنوان URL المخصص الخاص بك في متصفح الويب:

(.venv) $ fly open

اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading