مقدمة
ديجانغو هو إطار عمل ويب مجاني ومفتوح المصدر مكتوب بلغة البرمجة Python. تتيح لك هذه الأداة القابلية للتوسعة وإعادة الاستخدام والتطوير السريع.
في هذا البرنامج التعليمي، ستتعلم كيفية إعداد الأساس الأولي لموقع ويب للمدونة مع اتصالات بقاعدة بيانات MySQL. سيتضمن ذلك إنشاء الهيكل الأساسي لتطبيق الويب للمدونة باستخدام django-admin
، إنشاء قاعدة البيانات MySQL، وتوصيل تطبيق الويب بقاعدة البيانات.
سوف يوفر لك Django بيئة تطوير للعمل على تطبيق الويب للمدونة الخاص بك، ولكن ستحتاج إلى اتخاذ خطوات إضافية قبل جعل مدونتك متاحة على الإنترنت.
المتطلبات الأساسية
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى:
- خادم Ubuntu 22.04 مع مستخدم sudo غير root ممكّن وجدار ناري. اتبع دليلنا إعداد الخادم الأولي Ubuntu 22.04 لإعداد هذا.
- تم تثبيت MySQL لخدمة قاعدة البيانات. يمكنك إعداد هذا باتباع البرنامج التعليمي الخاص بنا حول كيفية تثبيت MySQL على أوبونتو 22.04.
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
بمجرد أن يتم تثبيت كل شيء وإعداده، يمكنك المضي قدمًا إلى الخطوة الأولى.
الخطوة 1 — إنشاء قاعدة البيانات
يدعم Django عددًا من أنظمة إدارة قواعد البيانات الشهيرة، ولكن يركز هذا الدليل على ربط Django بقاعدة بيانات MySQL. من أجل القيام بذلك، تحتاج إلى إنشاء قاعدة بيانات على مثيل MySQL الخاص بك بالإضافة إلى ملف تعريف مستخدم MySQL يمكن لـ Django استخدامه للاتصال بقاعدة البيانات.
لإعداد هذا، قم بالاتصال بقاعدة بيانات MySQL كمستخدم root MySQL باستخدام الأمر التالي:
ستعرف أنك في خادم MySQL عندما يتغير البرومبت:
تفقد قواعد البيانات الحالية باستخدام الأمر التالي:
سيكون مخرجاتك مشابهة لما يلي، بشرط ألا تكون قد أنشأت أي قواعد بيانات بعد:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
بشكل افتراضي، سيكون لديك 4 قواعد بيانات مُنشأة بالفعل: information_schema
، MySQL
، performance_schema
و sys
. لن تحتاج إلى لمس هذه القواعد، حيث تحتوي على معلومات مهمة بالنسبة لخادم MySQL نفسه.
بدلاً من ذلك، قم بإنشاء قاعدة البيانات الأولية التي ستحتوي على البيانات الخاصة بمدونتك.
لإنشاء قاعدة بيانات في MySQL، قم بتشغيل الأمر التالي، باستخدام اسم مناسب لقاعدة البيانات:
عند إنشاء قاعدة البيانات بنجاح، سيكون الإخراج كالتالي:
OutputQuery OK, 1 row affected (0.00 sec)
تحقق من أن قاعدة البيانات الآن مدرجة كواحدة من قواعد البيانات المتاحة:
يجب أن تظهر قاعدة البيانات blog_data
الآن ضمن قواعد البيانات المدرجة في الإخراج:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
بعد ذلك، قم بإنشاء حساب مستخدم منفصل في MySQL سيستخدمه Django لتشغيل قاعدة البيانات الجديدة. إن إنشاء قواعد بيانات وحسابات محددة يمكن أن يدعمك من الناحية الإدارية والأمنية. سنستخدم الاسم djangouser في هذا الدليل. يمكنك استخدام أي اسم ترغب فيه، ولكن من المفيد اختيار اسم وصفي.
ستقوم بإنشاء هذا الحساب، وتعيين كلمة مرور، ومنح الوصول إلى قاعدة البيانات التي قمت بإنشائها. أولاً، قم بإنشاء المستخدم وتعيين كلمة مروره عن طريق كتابة الأمر التالي. تذكر أن تختار كلمة مرور قوية لقاعدة البيانات الخاصة بك عن طريق استبدال password
في هذا المثال:
اسمح لقاعدة البيانات بمعرفة أن djangouser يجب أن يكون لديه وصول كامل إلى قاعدة البيانات التي قمت بإعدادها:
الآن لديك قاعدة بيانات وحساب مستخدم، تم إنشاؤهما كل منهما بشكل خاص لـ Django. انقل الامتيازات بحيث تعلم النسخة الحالية من MySQL عن التغييرات الأخيرة التي قمت بها:
بعد الانتهاء من ذلك، يمكنك الخروج من خادم MySQL عن طريق كتابة EXIT;
أو الضغط على CTRL + D
.
الخطوة ٢ — إنشاء ملف خيارات MySQL
بدلاً من تحديد تفاصيل اتصال MySQL الخاصة بك في ملف تكوين Django، يمكنك تخزينها في ملف خيار. يمكن للعديد من برامج MySQL قراءة ملفات الخيارات — المعروفة أيضًا باسم ملفات التكوين — للحصول على معلومات مثل خيارات بدء التشغيل أو تفاصيل الاتصال. يمكن أن يكون هذا مريحًا، حيث تحتاج فقط إلى تخزين بيانات تسجيل الدخول إلى قاعدة البيانات الخاصة بك في مكان واحد فقط.
افتح ملف التكوين my.cnf
باستخدام محرر النص المفضل لديك لتحديث بيانات اعتماد MySQL الخاصة بك. هنا سنستخدم nano
:
أضف الأسطر التالية وقم بتضمين المعلومات ذات الصلة بك:
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
لاحظ أن utf8
مُعين كترميز افتراضي. هذه طريقة شائعة لترميز البيانات اليونيكود في MySQL. عندما تكون متأكدًا من صحة تفاصيلك، احفظ الملف وأغلقه. إذا استخدمت nano
لتحرير الملف، يمكنك القيام بذلك عن طريق الضغط على CTRL + O
لحفظ الملف ثم CTRL + X
لإغلاق المحرر.
بمجرد تعديل الملف، أعد تشغيل MySQL ليتم تطبيق التغييرات:
يرجى ملاحظة أن إعادة تشغيل MySQL يستغرق بضع ثوانٍ، لذا يرجى الانتظار بصبر.
الخطوة 3 — إنشاء هيكل المشروع الأولي لـ Django
في هذه الخطوة، ستضع الأساس لتطبيقك من خلال إنشاء هيكل المشروع باستخدام أمر django-admin
.
انتقل إلى الدليل الذي ترغب في بناء تطبيق مدونتك فيه. داخل هذا الدليل، قم بإنشاء دليل محدد لبناء التطبيق. اسمِ الدليل بشيء ذي معنى للتطبيق الذي تقوم ببنائه. كمثال، سنسمي الدليل الخاص بنا my_blog_app
:
ثم، انتقل إلى الدليل الجديد الذي تم إنشاؤه:
بعد ذلك، انتقل إلى البيئة البرمجية التي ترغب في استخدامها للعمل في Django. يمكنك استخدام بيئة موجودة بالفعل، أو إنشاء واحدة جديدة. ينشئ الأمر التالي بيئة جديدة تسمى env
، ولكن يجب عليك استخدام اسم ذي معنى بالنسبة لك:
بمجرد إنشائها، يمكنك تنشيطها:
ثم، قم بتثبيت Django في هذه البيئة إذا لم تكن قد فعلت ذلك بالفعل:
أثناء التواجد في الدليل my_blog_app
، قم بتوليد مشروع عن طريق تشغيل الأمر التالي:
تحقق من أنه عمل من خلال الانتقال إلى الدليل blog/
:
ثم قم بتشغيل ls
للتحقق من أن الملفات والدلائل الضرورية قد تم إنشاؤها داخل مجلد المشروع:
ستقوم النتيجة بعرض الدليل blog
وملف manage.py
:
Outputblog manage.py
الآن بعد أن قمت بإنشاء دليل مشروع يحتوي على بداية المشروع الأولية لتطبيق مدونتك، يمكنك المتابعة إلى الخطوة التالية.
الخطوة ٤ — تثبيت موصل قاعدة بيانات MySQL
من أجل استخدام MySQL مع مشروعك، تحتاج إلى مكتبة موصل قاعدة بيانات Python 3 متوافقة مع Django. توضح هذه الخطوة كيفية تثبيت مثل هذا الموصل، mysqlclient
، وهو نسخة مشعرة من MySQLdb
.
أولاً، قم بتثبيت رؤوس التطوير والمكتبات اللازمة لـ MySQL:
ثم، استخدم pip
لتثبيت حزمة wheel
. Wheel هو تنسيق تغليف يستخدم في Python لتثبيت الوحدات من فهرس حزم Python. تثبيت البرامج Python من حزم Wheel عموماً أسرع وأكثر كفاءة من بناء الحزم من مصدرها. من أجل تثبيت البرامج والعمل معها المعبأة كـ wheels، عليك أولاً التأكد من تثبيت حزمة wheel
:
ثم انتقل إلى تثبيت mysqlclient
:
ستكون النتيجة النهائية مشابهة للتالي، مؤكدةً بأن الموصل تم تثبيته بنجاح:
Output...
Successfully installed mysqlclient-2.1.1
لقد قمت الآن بتثبيت موصل MySQL بنجاح باستخدام مكتبة موصل PyPi mysqlclient
.
الخطوة 5 — تحرير الإعدادات
عند تشغيل django-admin
من قبل، تم إنشاء ملف تكوين لـ Django يُسمى settings.py
. تحتاج إلى تغيير بعض الإعدادات الافتراضية في هذا الملف من أجل جعل كل شيء يعمل بشكل صحيح.
لتحرير الملف، افتح المسار إلى الملف باستخدام محرر النص الذي تفضله:
من أجل أن يكون لدى مدونتك التوقيت الصحيح المرتبط بمنطقتك، يمكنك تعديل ملف settings.py
بحيث يستخدم التوقيت الزمني الحالي لديك. يمكنك استخدام هذه قائمة التوقيتات كمرجع. في مثالنا، سنستخدم التوقيت America/New_York
.
ضمن الملف، انتقل إلى الحقل TIME_ZONE
بالقرب من القسم السفلي للملف:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
قم بتعديل السطر TIME_ZONE
، بحيث يتم تعيينه إلى التوقيت الزمني الحالي لديك. سنستخدم التوقيت لنيويورك في هذا المثال:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
احتفظ بالملف مفتوحًا لأنك بحاجة إلى إضافة مسار لملفاتك الثابتة التالية. تُشار إلى الملفات التي يتم تقديمها من تطبيق الويب Django الخاص بك بأنها ملفات ثابتة. يمكن أن تتضمن ذلك أي ملفات ضرورية لعرض الصفحة الويب بالكامل، بما في ذلك JavaScript و CSS والصور.
انتقل إلى نهاية ملف settings.py
وأضف STATIC_ROOT
:
…
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...
الآن بعد أن قمت بإضافة المنطقة الزمنية والمسار للملفات الثابتة، قم بإضافة عنوان IP الخاص بك إلى قائمة الاستضافة المسموح بها. انتقل إلى السطر في ملف settings.py
حيث يُقال ALLOWED_HOSTS
، وسيكون نحو الأعلى من ملف settings.py
. قم بإضافة عنوان IP لخادمك، محاطًا بعلامات اقتباس مفردة، بين الأقواس المربعة:
...
ALLOWED_HOSTS = ['your_server_IP_address']
...
بعد ذلك، قم بإضافة وحدة OS في Python التي توفر مختلف الوظائف للمجلدات. بدون هذه الوحدة، ستتلقى خطأ عند إعداد المستخدم الإداري لبدء استخدام واجهة Django. للقيام بذلك، تحتاج إلى استيراد وحدة os
التي ستعمل على نظام التشغيل الخاص بك. قم بإضافة السطر import os
فوق السطر from pathlib import Path
:
...
import os
from pathlib import Path
...
حتى الآن، قمت بتحرير ملف settings.py
حتى تم تكوين المنطقة الزمنية الصحيحة. كما قمت بإضافة مسار لملفاتك الثابتة، وجعلت عنوان ip
الخاص بك مسموحًا لتطبيقك، وقمت باستيراد وحدة OS في Python للمساعدة في إعداد المستخدم الإداري في وقت لاحق.
آخر مقتطف لإضافته إلى ملفك هو بيانات اتصال قاعدة البيانات لربط تطبيق مدونتك Django ب MySQL. لهذا الغرض، ابحث عن القاموس DATABASES
داخل الملف. ستبدو كما يلي افتراضيًا:
…
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
استبدل خيارات القاموس DATABASES
ENGINE
و NAME
بالأسطر التالية:
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
السطر 'ENGINE': 'django.db.backends.mysql'
يخبر Django باستخدام مكون قاعدة بيانات MySQL المدمج به. الخيار read_default_file
يشير إلى /etc/mysql/my.cnf
، ملف الخيارات لـ MySQL الذي قمت بتحريره في وقت سابق. يخبر هذا Django حيث يمكنه العثور على تفاصيل الاتصال ذات الصلة للاتصال بقاعدة البيانات MySQL التي أنشأتها في الخطوة 1.
يرجى ملاحظة أن Django يقرأ إعدادات اتصال قاعدة البيانات بالترتيب التالي:
OPTIONS
NAME
،USER
،PASSWORD
،HOST
،PORT
- ملفات الخيارات في MySQL
عن طريق توجيه Django إلى ملف الخيارات الخاص بك MySQL داخل إعدادات OPTIONS
كما في هذا المثال، فإنه سيكون الأولوية على أي إعداد NAME
، الذي سيكون خيارًا آخر يتم تجاوزه إذا كنت قد أشرت إليه خارج إعدادات OPTIONS
.
في هذه النقطة، يمكنك حفظ الملف وإغلاقه.
بعد ذلك، تحقق من التغييرات في الترحيل عن طريق تشغيل الأمر التالي:
ثم، قم بتشغيل migrate
للتأكد من أن التغييرات تمر:
الآن بعد أن تم ترحيل التغييرات الخاصة بك، يمكنك إنشاء مستخدم إداري لاستخدامه في واجهة إدارة Django. قم بذلك باستخدام الأمر createsuperuser
:
سيُطلب منك تقديم اسم مستخدم، عنوان بريد إلكتروني، وكلمة مرور لمستخدمك.
بعد استكمال هذه المعلومات، يمكنك المضي قدمًا في ضبط إعدادات جدار الحماية الخاص بك للسماح بالاختبار.
الخطوة ٦ — ضبط إعدادات جدار الحماية
قبل اختبار تطبيق الويب Django الخاص بك، يجب التأكد من أن إعدادات جدار الحماية الخاص بك قد تم ضبطها. ابدأ بتغيير إعدادات ufw
للسماح بالوصول إلى منفذ 8000
:
تحقق من الحالة للتأكد من أن إعدادات الإذن هذه قد تم تحديثها بنجاح:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
تم ضبط إعدادات جدار الحماية الخاصة بك الآن بشكل صحيح للسماح باختبار الاتصال في الخطوة التالية.
الخطوة ٧ — اختبار اتصال MySQL بالتطبيق
الآن يمكنك التحقق من أن التكوينات في Django تكتشف خادم MySQL الخاص بك بشكل صحيح. يمكنك القيام بذلك عن طريق تشغيل الخادم. إذا فشل ذلك، فهذا يعني أن الاتصال لا يعمل بشكل صحيح. وإلا، فالاتصال صالح.
ابدأ أولاً بالانتقال إلى الدليل التالي:
ثم قم بتشغيل الأمر التالي:
سوف تتلقى إخراجًا مماثلاً للتالي:
OutputPerforming system checks...
System check identified no issues (0 silenced).
July 19, 2022 - 13:26:08
Django version 4.0.6, using settings 'blog.settings'
Starting development server at http://your-server-ip:8000/
Quit the server with CONTROL-C.
ملاحظة: ستلاحظ أن لديك ترحيلات غير مُطبقة في الإخراج. لا داعي للقلق، فهذا لا يؤثر على الإعداد الأولي لتطبيقك، ويمكنك المتابعة.
اتبع التعليمات من الناتج واتبع الرابط المقترح، http://عنوان-خادمك-بالآيبي:8000/
، لعرض تطبيق الويب الخاص بك والتحقق من أنه يعمل بشكل صحيح.
إذا بدا صفحتك مشابهة للصورة أعلاه، فإن تطبيق Django الخاص بك يعمل كما هو متوقع.
عندما تنتهي من اختبار تطبيقك، اضغط CTRL + C
لإيقاف أمر runserver
. سيعيد هذا الأمر إلى بيئة البرمجة الخاصة بك.
عندما تكون جاهزًا لمغادرة بيئة Python الخاصة بك، يمكنك تشغيل الأمر deactivate
:
سيقوم تعطيل بيئة البرمجة الخاصة بك بإعادتك إلى سطر الأوامر في التيرمينال.
الاستنتاج
في هذا البرنامج التعليمي، قمت بإنشاء الأساس الأولي لمدونتك في Django. لقد قمت بتثبيت MySQL وتكوينه وربطه بالجزء الخلفي من Django. كما أضفت بعض المعلومات الهامة إلى ملف settings.py
الخاص بتطبيقك مثل TIME_ZONE
، ALLOWED_HOSTS
، import os
، وبيانات اعتماد قاعدة البيانات لربط تطبيق Django ب MySQL. كما قمت بضبط إعدادات جدار الحماية لضمان سلاسة الاختبار.
الآن بعد أن تم الانتهاء من هذه الإعدادات والتكوينات الأساسية، يمكنك بدء تطوير النماذج وتطبيق التحولات في تطبيق Django الخاص بك.