ديف أوبس

نشر تطبيق Django مع PostgreSQL

إعداد تطبيق Django جاهز للنشر مع قاعدة بيانات Postgres وخادم Nginx و Gunicorn

في عالم تطوير البرمجيات، يعد نشر تطبيقات الويب أحد المراحل الهامة التي يتعين على المطورين فهمها بشكل جيد. تطبيق Django، وهو إطار عمل بايثون شهير لتطوير تطبيقات الويب، يتطلب عدة خطوات لضمان نشره بشكل سلس وآمن في بيئة الإنتاج. من بين الأدوات الأساسية التي يستخدمها المطورون في نشر تطبيقات Django، نجد قاعدة بيانات PostgreSQL كحل تخزين بيانات موثوق وقوي، بالإضافة إلى خوادم مثل Nginx و Gunicorn لتقديم الخدمة بشكل فعال وآمن.

في هذا المقال، سنقوم بتوضيح كيفية إعداد تطبيق Django مع قاعدة بيانات PostgreSQL، ثم نشره باستخدام Gunicorn كخادم تطبيقات، وNginx كخادم ويب، وذلك خطوة بخطوة.

1. إعداد البيئة الافتراضية وتثبيت المتطلبات

قبل البدء في أي شيء، من الأفضل دائمًا العمل في بيئة افتراضية لحماية المشروع من التداخل مع المشاريع الأخرى على نفس النظام. سنستخدم venv لإنشاء بيئة افتراضية.

1.1 إنشاء البيئة الافتراضية

في المجلد الخاص بالمشروع، افتح الطرفية (Terminal) وابدأ بإنشاء البيئة الافتراضية:

bash
python3 -m venv venv

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

لتفعيل البيئة الافتراضية، استخدم الأمر التالي:

على أنظمة Linux/macOS:

bash
source venv/bin/activate

على أنظمة Windows:

bash
venv\Scripts\activate

1.3 تثبيت Django والاعتمادات الأخرى

الآن يجب تثبيت Django وأي مكتبات أخرى قد تحتاجها في المشروع. لتثبيت Django:

bash
pip install django

كما سنحتاج إلى تثبيت مكتبة PostgreSQL الخاصة بـ Django، والتي تعرف باسم psycopg2، وهي أداة تتيح لـ Django التواصل مع قاعدة بيانات PostgreSQL:

bash
pip install psycopg2

1.4 إعداد مشروع Django

إذا لم يكن لديك مشروع Django جاهزًا، يمكنك إنشاؤه باستخدام الأمر التالي:

bash
django-admin startproject myproject cd myproject

2. إعداد قاعدة بيانات PostgreSQL

PostgreSQL هو نظام إدارة قواعد البيانات العلاقية الذي يقدم أداءً عاليًا وموثوقية، ويعد خيارًا مثاليًا لتطبيقات Django.

2.1 تثبيت PostgreSQL

أولاً، يجب تثبيت PostgreSQL على الخادم الخاص بك. على الأنظمة القائمة على Debian/Ubuntu، يمكن تثبيت PostgreSQL باستخدام:

bash
sudo apt-get update sudo apt-get install postgresql postgresql-contrib

2.2 إنشاء قاعدة البيانات

بعد تثبيت PostgreSQL، نحتاج إلى إنشاء قاعدة بيانات جديدة لمشروع Django. يمكن فعل ذلك باستخدام الأوامر التالية:

  1. تسجيل الدخول إلى PostgreSQL:

bash
sudo -u postgres psql
  1. إنشاء قاعدة بيانات جديدة:

sql
CREATE DATABASE myprojectdb;
  1. إنشاء مستخدم مع كلمة مرور:

sql
CREATE USER myprojectuser WITH PASSWORD 'password';
  1. منح المستخدم الصلاحيات اللازمة:

sql
GRANT ALL PRIVILEGES ON DATABASE myprojectdb TO myprojectuser;

2.3 إعداد Django لاستخدام PostgreSQL

في ملف الإعدادات الخاص بـ Django (settings.py)، تحتاج إلى تحديث إعدادات قاعدة البيانات لاستخدام PostgreSQL:

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

2.4 تطبيق التعديلات على قاعدة البيانات

بعد إعداد الاتصال بقاعدة البيانات في Django، يجب عليك تطبيق التعديلات على قاعدة البيانات باستخدام:

bash
python manage.py migrate

3. إعداد Gunicorn كخادم تطبيقات

Gunicorn هو خادم WSGI (Web Server Gateway Interface) سريع وفعال، وهو الخيار المثالي لتشغيل تطبيق Django في بيئة الإنتاج. يستخدم Gunicorn لتشغيل تطبيق Django في الخلفية.

3.1 تثبيت Gunicorn

يمكنك تثبيت Gunicorn داخل البيئة الافتراضية باستخدام الأمر التالي:

bash
pip install gunicorn

3.2 تشغيل Gunicorn

لتشغيل تطبيق Django باستخدام Gunicorn، يمكنك استخدام الأمر التالي:

bash
gunicorn --workers 3 myproject.wsgi:application

في هذا الأمر:

  • --workers 3 يعني أن Gunicorn سيستخدم 3 عمليات (workers) للتعامل مع الطلبات. يمكن تعديل هذا الرقم بناءً على احتياجات الخادم.

  • myproject.wsgi:application هو مسار ملف wsgi.py الخاص بتطبيق Django.

3.3 اختبار التطبيق

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

bash
http://localhost:8000

إذا كان كل شيء مضبوطًا بشكل صحيح، فيجب أن ترى صفحة الترحيب الخاصة بـ Django.

4. إعداد Nginx كخادم ويب

Nginx هو خادم ويب فعال وآمن يستخدم لتحسين أداء تطبيقات الويب عن طريق توجيه الطلبات إلى Gunicorn وتوزيعها بشكل مناسب. كما يستخدم Nginx كموازن تحميل ويقدم ميزات أمنية مثل SSL.

4.1 تثبيت Nginx

لتثبيت Nginx على الخادم، استخدم الأمر التالي على أنظمة Debian/Ubuntu:

bash
sudo apt-get install nginx

4.2 إعداد Nginx للعمل مع Gunicorn

بعد تثبيت Nginx، يجب عليك إعداد ملف تكوين جديد لربط Nginx بـ Gunicorn. قم بإنشاء ملف جديد في /etc/nginx/sites-available/، على سبيل المثال:

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

داخل هذا الملف، يمكنك إضافة التكوين التالي:

nginx
server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /path/to/your/static/directory; } location /media/ { alias /path/to/your/media/directory; } }

4.3 تمكين التكوين في Nginx

بعد إنشاء ملف التكوين، تحتاج إلى تفعيل الموقع بإنشاء رابط رمزي في sites-enabled:

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

4.4 اختبار تكوين Nginx

قبل إعادة تشغيل Nginx، من الأفضل اختبار التكوين للتأكد من عدم وجود أخطاء:

bash
sudo nginx -t

4.5 إعادة تشغيل Nginx

إذا كان كل شيء على ما يرام، يمكنك إعادة تشغيل Nginx لتطبيق التغييرات:

bash
sudo systemctl restart nginx

5. إعداد SSL (اختياري)

إذا كنت ترغب في تأمين تطبيقك باستخدام HTTPS، يمكنك تثبيت شهادة SSL باستخدام Let’s Encrypt. Let’s Encrypt هو مزود شهادات SSL مجاني، ويمكنك استخدام أداة certbot لتثبيت الشهادات.

5.1 تثبيت Certbot

لتثبيت Certbot على خادمك:

bash
sudo apt-get install certbot python3-certbot-nginx

5.2 الحصول على شهادة SSL

بعد تثبيت Certbot، يمكنك استخدامه للحصول على شهادة SSL جديدة:

bash
sudo certbot --nginx -d your_domain_or_IP

6. مراقبة التطبيق والصيانة

بمجرد نشر تطبيق Django بنجاح باستخدام PostgreSQL، Gunicorn و Nginx، يصبح من الضروري مراقبة الأداء لضمان استقراره في بيئة الإنتاج.

6.1 مراقبة Gunicorn

يمكنك استخدام أدوات مثل systemd لتشغيل Gunicorn كخدمة. سيتيح لك ذلك إدارة Gunicorn بشكل أفضل عند إعادة تشغيل الخادم.

6.2 مراقبة Nginx

Nginx يقدم سجلًا مفصلًا للوصول والأخطاء يمكن مراقبته باستخدام الأدوات المناسبة.

الخاتمة

إعداد تطبيق Django للنشر باستخدام قاعدة بيانات PostgreSQL، Gunicorn و Nginx يعتبر من أهم المهام التي يجب على المطورين إتقانها لضمان تطبيق ويب فعال وآمن. من خلال اتباع الخطوات المذكورة، يمكن نشر تطبيقات Django بشكل احترافي وقوي.