تنصيب إطار العمل Django وتهيئة بيئته البرمجية على Ubuntu 16.04
يُعتبر إطار العمل Django أحد أبرز أطر العمل الخاصة بتطوير تطبيقات الويب بلغة البرمجة Python، ويتميز بسرعته وأمانه واعتماده على مبدأ “لا تكرر نفسك” (DRY). يُستخدم على نطاق واسع في العديد من المشاريع العالمية، منها مواقع ضخمة مثل Instagram وPinterest. وتُعد توزيعة Ubuntu من أكثر نظم التشغيل المستخدمة من قبل المطورين لما تقدمه من استقرار ودعم طويل المدى. النسخة Ubuntu 16.04، بالرغم من كونها قديمة نسبيًا، لا تزال معتمدة لدى العديد من المستخدمين في بيئات الإنتاج بسبب دعمها المستمر (LTS).
يهدف هذا المقال إلى تقديم شرح دقيق ومفصل لكيفية تنصيب Django على Ubuntu 16.04، بالإضافة إلى تهيئة بيئة التطوير البرمجية بشكل احترافي ومتوافق مع أفضل ممارسات تطوير البرمجيات.
الخطوة الأولى: تحديث النظام وتثبيت المتطلبات الأساسية
قبل البدء بتنصيب أي برمجيات، من الأفضل تحديث النظام لضمان الحصول على آخر التحديثات الأمنية والتوافقية. يمكن تنفيذ ذلك عبر الأوامر التالية:
bashsudo apt update sudo apt upgrade
بعد التحديث، نقوم بتثبيت الأدوات الأساسية اللازمة لتثبيت Django وبيئة العمل الافتراضية:
bashsudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl
هذه الأدوات تتضمن:
-
python3-pip: مدير الحزم الخاص بلغة Python.
-
python3-dev: ملفات التطوير الخاصة بـ Python.
-
libpq-dev: مكتبة PostgreSQL اللازمة للتعامل مع قواعد البيانات.
-
postgresql: نظام إدارة قواعد البيانات PostgreSQL.
-
nginx: خادم الويب الذي غالبًا ما يُستخدم مع Django في بيئات الإنتاج.
-
curl: أداة تحميل الشبكة المفيدة في تنزيل سكريبتات التهيئة.
الخطوة الثانية: إنشاء بيئة افتراضية Python
تُعتبر البيئة الافتراضية أداة أساسية لعزل حزم Python الخاصة بكل مشروع عن النظام ككل، مما يتيح إمكانية استخدام نسخ محددة من الحزم بدون التأثير على النظام أو مشاريع أخرى.
أولاً، تثبيت أداة إنشاء البيئة الافتراضية:
bashsudo pip3 install virtualenv
ثم ننتقل إلى مجلد المشروع ونقوم بإنشاء بيئة افتراضية:
bashmkdir ~/myproject
cd ~/myproject
virtualenv myprojectenv
لتفعيل البيئة الافتراضية:
bashsource myprojectenv/bin/activate
ستلاحظ تغيير في واجهة سطر الأوامر، مشيرًا إلى أنك تعمل ضمن بيئة افتراضية.
الخطوة الثالثة: تثبيت Django داخل البيئة الافتراضية
بعد تفعيل البيئة الافتراضية، يمكن تنصيب Django بسهولة باستخدام pip:
bashpip install django
للتحقق من تثبيت Django:
bashdjango-admin --version
يمكنك أيضًا تثبيت إصدار معين من Django إذا كان المشروع يتطلب ذلك:
bashpip install django==3.2
الخطوة الرابعة: إنشاء مشروع Django جديد
بعد تثبيت Django، يمكن البدء بإنشاء مشروع جديد:
bashdjango-admin startproject myproject .
النقطة في نهاية الأمر تُستخدم لإنشاء الملفات في المجلد الحالي بدلًا من إنشاء مجلد جديد داخله.
لتشغيل خادم التطوير:
bashpython manage.py runserver
يمكنك الآن الوصول إلى التطبيق عبر المتصفح من خلال الرابط:
cpphttp://127.0.0.1:8000
الخطوة الخامسة: تهيئة قاعدة بيانات PostgreSQL
يُفضل استخدام PostgreSQL على SQLite في بيئات الإنتاج. نبدأ بإنشاء مستخدم وقاعدة بيانات جديدة:
bashsudo -u postgres psql
ثم داخل واجهة PostgreSQL:
sqlCREATE DATABASE myprojectdb;
CREATE USER myprojectuser WITH PASSWORD 'password';
ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myprojectuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE myprojectdb TO myprojectuser;
\q
بعد ذلك، تعديل إعدادات قاعدة البيانات في ملف settings.py الخاص بـ Django:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myprojectdb',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
ثم تنفيذ الترحيلات اللازمة:
bashpython manage.py makemigrations python manage.py migrate
الخطوة السادسة: إنشاء مستخدم إداري وتشغيل اللوحة الخلفية
لإنشاء مستخدم إداري لإدارة التطبيق من خلال الواجهة الخلفية:
bashpython manage.py createsuperuser
ثم إدخال البيانات المطلوبة. بعدها يمكن تشغيل الخادم والوصول إلى لوحة التحكم من الرابط:
arduinohttp://127.0.0.1:8000/admin
الخطوة السابعة: إعداد Gunicorn كخادم تطبيق
Gunicorn هو خادم WSGI يُستخدم لتشغيل تطبيقات Python بشكل أكثر استقرارًا وكفاءة في بيئات الإنتاج.
تثبيت Gunicorn:
bashpip install gunicorn
تشغيل Gunicorn مؤقتًا للتجربة:
bashgunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
لإنشاء خدمة دائمة باستخدام systemd:
bashsudo nano /etc/systemd/system/myproject.service
ثم إضافة المحتوى التالي:
ini[Unit]
Description=gunicorn daemon for Django project
After=network.target
[Service]
User=username
Group=www-data
WorkingDirectory=/home/username/myproject
ExecStart=/home/username/myproject/myprojectenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/username/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
استبدال username باسم المستخدم الخاص بك. بعد حفظ الملف:
bashsudo systemctl start myproject
sudo systemctl enable myproject
الخطوة الثامنة: إعداد Nginx كواجهة أمامية
يُستخدم Nginx لإدارة الطلبات وتوجيهها إلى Gunicorn، بالإضافة إلى إدارة الملفات الثابتة والميديا.
إنشاء ملف إعداد Nginx جديد:
bashsudo nano /etc/nginx/sites-available/myproject
ثم إضافة الإعداد التالي:
nginxserver {
listen 80;
server_name your_domain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/username/myproject/myproject.sock;
}
}
ربط الملف بالمجلد sites-enabled:
bashsudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
اختبار الإعداد:
bashsudo nginx -t
ثم إعادة تشغيل الخدمة:
bashsudo systemctl restart nginx
في حال كان الخادم محمي بجدار ناري (ufw)، يجب السماح بحركة مرور HTTP:
bashsudo ufw allow 'Nginx Full'
الخطوة التاسعة: إعداد الملفات الثابتة
Django لا يقدم الملفات الثابتة (CSS، JavaScript، صور) تلقائيًا في بيئة الإنتاج، لذلك يجب تنفيذ التالي:
في ملف settings.py:
pythonSTATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
ثم تنفيذ الأمر التالي:
bashpython manage.py collectstatic
سيقوم هذا الأمر بنقل جميع الملفات الثابتة إلى مجلد واحد لإتاحتها من خلال Nginx.
الخطوة العاشرة: تأمين الخادم وتثبيت شهادات SSL
لإضافة شهادات SSL باستخدام Let’s Encrypt:
تثبيت Certbot:
bashsudo apt install python-certbot-nginx
تشغيل Certbot للحصول على شهادة:
bashsudo certbot --nginx -d your_domain.com
بعد التحقق من الصحة وتثبيت الشهادة، يقوم Certbot أيضًا بإعداد تجديد تلقائي.
الخطوة الحادية عشرة: إعداد الجدول الزمني لتجديد الحزم وتحديث المشروع
ينصح بإنشاء جدول زمني دوري لمراجعة:
-
تحديث إصدارات Django وحزم Python.
-
مراقبة سجل أخطاء Gunicorn وNginx.
-
مراجعة أمان النظام وتثبيت التحديثات الأمنية.
استخدام cron لتحديث الحزم بشكل آلي قد يكون مفيدًا في بيئات التطوير:
bashcrontab -e
ثم إضافة:
bash0 3 * * * /usr/bin/pip install --upgrade pip && /usr/bin/pip list --outdated
الجدول التوضيحي لأوامر التثبيت والتهيئة الأساسية
| المهمة | الأمر |
|---|---|
| تحديث النظام | sudo apt update && sudo apt upgrade |
| تثبيت الحزم الأساسية | sudo apt install python3-pip python3-dev ... |
| إنشاء بيئة افتراضية | virtualenv myprojectenv |
| تفعيل البيئة | source myprojectenv/bin/activate |
| تثبيت Django | pip install django |
| إنشاء مشروع جديد | django-admin startproject myproject . |
| إعداد PostgreSQL | sudo -u postgres psql |
| إنشاء مستخدم إداري | python manage.py createsuperuser |
| تشغيل Gunicorn | gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application |
| إعداد Nginx | sudo nano /etc/nginx/sites-available/myproject |
| جمع الملفات الثابتة | python manage.py collectstatic |
| تثبيت الشهادة SSL | sudo certbot --nginx -d your_domain.com |
خاتمة تقنية
إن تنصيب إطار العمل Django على نظام Ubuntu 16.04 يتطلب اتباع مجموعة مترابطة من الخطوات التقنية التي تهدف إلى ضمان الأداء العالي، الأمان، والمرونة في التطوير. من خلال اعتماد بيئة افتراضية، قاعدة بيانات PostgreSQL، خادم Gunicorn، وواجهة Nginx، يمكن بناء تطبيقات ويب قوية ومتينة. هذه الإجراءات تُعد حجر الأساس في بناء أنظمة إنتاجية تعتمد على معايير احترافية في تطوير البرمجيات.
المراجع:

