في هذا الدرس، سنقوم بإنشاء موقع ويب بسيط “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
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.