البرمجة

تنصيب Django على أوبنتو 16.04

تنصيب إطار العمل Django وتهيئة بيئته البرمجية على Ubuntu 16.04

يُعتبر إطار العمل Django أحد أبرز أطر العمل الخاصة بتطوير تطبيقات الويب بلغة البرمجة Python، ويتميز بسرعته وأمانه واعتماده على مبدأ “لا تكرر نفسك” (DRY). يُستخدم على نطاق واسع في العديد من المشاريع العالمية، منها مواقع ضخمة مثل Instagram وPinterest. وتُعد توزيعة Ubuntu من أكثر نظم التشغيل المستخدمة من قبل المطورين لما تقدمه من استقرار ودعم طويل المدى. النسخة Ubuntu 16.04، بالرغم من كونها قديمة نسبيًا، لا تزال معتمدة لدى العديد من المستخدمين في بيئات الإنتاج بسبب دعمها المستمر (LTS).

يهدف هذا المقال إلى تقديم شرح دقيق ومفصل لكيفية تنصيب Django على Ubuntu 16.04، بالإضافة إلى تهيئة بيئة التطوير البرمجية بشكل احترافي ومتوافق مع أفضل ممارسات تطوير البرمجيات.


الخطوة الأولى: تحديث النظام وتثبيت المتطلبات الأساسية

قبل البدء بتنصيب أي برمجيات، من الأفضل تحديث النظام لضمان الحصول على آخر التحديثات الأمنية والتوافقية. يمكن تنفيذ ذلك عبر الأوامر التالية:

bash
sudo apt update sudo apt upgrade

بعد التحديث، نقوم بتثبيت الأدوات الأساسية اللازمة لتثبيت Django وبيئة العمل الافتراضية:

bash
sudo 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 الخاصة بكل مشروع عن النظام ككل، مما يتيح إمكانية استخدام نسخ محددة من الحزم بدون التأثير على النظام أو مشاريع أخرى.

أولاً، تثبيت أداة إنشاء البيئة الافتراضية:

bash
sudo pip3 install virtualenv

ثم ننتقل إلى مجلد المشروع ونقوم بإنشاء بيئة افتراضية:

bash
mkdir ~/myproject cd ~/myproject virtualenv myprojectenv

لتفعيل البيئة الافتراضية:

bash
source myprojectenv/bin/activate

ستلاحظ تغيير في واجهة سطر الأوامر، مشيرًا إلى أنك تعمل ضمن بيئة افتراضية.


الخطوة الثالثة: تثبيت Django داخل البيئة الافتراضية

بعد تفعيل البيئة الافتراضية، يمكن تنصيب Django بسهولة باستخدام pip:

bash
pip install django

للتحقق من تثبيت Django:

bash
django-admin --version

يمكنك أيضًا تثبيت إصدار معين من Django إذا كان المشروع يتطلب ذلك:

bash
pip install django==3.2

الخطوة الرابعة: إنشاء مشروع Django جديد

بعد تثبيت Django، يمكن البدء بإنشاء مشروع جديد:

bash
django-admin startproject myproject .

النقطة في نهاية الأمر تُستخدم لإنشاء الملفات في المجلد الحالي بدلًا من إنشاء مجلد جديد داخله.

لتشغيل خادم التطوير:

bash
python manage.py runserver

يمكنك الآن الوصول إلى التطبيق عبر المتصفح من خلال الرابط:

cpp
http://127.0.0.1:8000

الخطوة الخامسة: تهيئة قاعدة بيانات PostgreSQL

يُفضل استخدام PostgreSQL على SQLite في بيئات الإنتاج. نبدأ بإنشاء مستخدم وقاعدة بيانات جديدة:

bash
sudo -u postgres psql

ثم داخل واجهة PostgreSQL:

sql
CREATE 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:

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'myprojectdb', 'USER': 'myprojectuser', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '', } }

ثم تنفيذ الترحيلات اللازمة:

bash
python manage.py makemigrations python manage.py migrate

الخطوة السادسة: إنشاء مستخدم إداري وتشغيل اللوحة الخلفية

لإنشاء مستخدم إداري لإدارة التطبيق من خلال الواجهة الخلفية:

bash
python manage.py createsuperuser

ثم إدخال البيانات المطلوبة. بعدها يمكن تشغيل الخادم والوصول إلى لوحة التحكم من الرابط:

arduino
http://127.0.0.1:8000/admin

الخطوة السابعة: إعداد Gunicorn كخادم تطبيق

Gunicorn هو خادم WSGI يُستخدم لتشغيل تطبيقات Python بشكل أكثر استقرارًا وكفاءة في بيئات الإنتاج.

تثبيت Gunicorn:

bash
pip install gunicorn

تشغيل Gunicorn مؤقتًا للتجربة:

bash
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

لإنشاء خدمة دائمة باستخدام systemd:

bash
sudo 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 باسم المستخدم الخاص بك. بعد حفظ الملف:

bash
sudo systemctl start myproject sudo systemctl enable myproject

الخطوة الثامنة: إعداد Nginx كواجهة أمامية

يُستخدم Nginx لإدارة الطلبات وتوجيهها إلى Gunicorn، بالإضافة إلى إدارة الملفات الثابتة والميديا.

إنشاء ملف إعداد Nginx جديد:

bash
sudo nano /etc/nginx/sites-available/myproject

ثم إضافة الإعداد التالي:

nginx
server { 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:

bash
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

اختبار الإعداد:

bash
sudo nginx -t

ثم إعادة تشغيل الخدمة:

bash
sudo systemctl restart nginx

في حال كان الخادم محمي بجدار ناري (ufw)، يجب السماح بحركة مرور HTTP:

bash
sudo ufw allow 'Nginx Full'

الخطوة التاسعة: إعداد الملفات الثابتة

Django لا يقدم الملفات الثابتة (CSS، JavaScript، صور) تلقائيًا في بيئة الإنتاج، لذلك يجب تنفيذ التالي:

في ملف settings.py:

python
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

ثم تنفيذ الأمر التالي:

bash
python manage.py collectstatic

سيقوم هذا الأمر بنقل جميع الملفات الثابتة إلى مجلد واحد لإتاحتها من خلال Nginx.


الخطوة العاشرة: تأمين الخادم وتثبيت شهادات SSL

لإضافة شهادات SSL باستخدام Let’s Encrypt:

تثبيت Certbot:

bash
sudo apt install python-certbot-nginx

تشغيل Certbot للحصول على شهادة:

bash
sudo certbot --nginx -d your_domain.com

بعد التحقق من الصحة وتثبيت الشهادة، يقوم Certbot أيضًا بإعداد تجديد تلقائي.


الخطوة الحادية عشرة: إعداد الجدول الزمني لتجديد الحزم وتحديث المشروع

ينصح بإنشاء جدول زمني دوري لمراجعة:

  • تحديث إصدارات Django وحزم Python.

  • مراقبة سجل أخطاء Gunicorn وNginx.

  • مراجعة أمان النظام وتثبيت التحديثات الأمنية.

استخدام cron لتحديث الحزم بشكل آلي قد يكون مفيدًا في بيئات التطوير:

bash
crontab -e

ثم إضافة:

bash
0 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، يمكن بناء تطبيقات ويب قوية ومتينة. هذه الإجراءات تُعد حجر الأساس في بناء أنظمة إنتاجية تعتمد على معايير احترافية في تطوير البرمجيات.


المراجع:

  1. Django Official Documentation

  2. DigitalOcean Django Deployment Guide