ديف أوبس

إعداد تطبيق Django مع PostgreSQL

إعداد تطبيق Django باستخدام PostgreSQL وخادم Nginx و Gunicorn

يعد إنشاء تطبيق ويب باستخدام Django مع قاعدة بيانات PostgreSQL من الخيارات الشائعة لتطوير تطبيقات الويب القوية والموثوقة. يُعتبر استخدام Nginx كخادم ويب و Gunicorn كخادم تطبيق من الخيارات المثالية لتشغيل تطبيقات Django بشكل سريع وآمن. في هذا المقال، سنتناول كيفية إعداد هذا البيئة خطوة بخطوة بشكل مفصل.


1. التحضير الأولي

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

الخطوات الأولية تشمل:

  • تحديث النظام

  • تثبيت Python و pip

  • تثبيت PostgreSQL و Nginx

  • إعداد بيئة افتراضية (Virtualenv)

2. إعداد البيئة الافتراضية وتثبيت Django

2.1 تثبيت Python و pip

أولاً، تأكد من أن Python مثبت على النظام. إذا لم يكن مثبتًا، قم بتثبيته باستخدام:

bash
sudo apt update sudo apt install python3 python3-pip python3-dev

بعد التثبيت، تحقق من إصدارات Python و pip:

bash
python3 --version pip3 --version

2.2 إعداد البيئة الافتراضية

بيئة افتراضية Python (Virtualenv) هي بيئة معزولة تسمح لك بتثبيت الحزم بدون التأثير على النظام العام. لتثبيتها، استخدم الأوامر التالية:

bash
sudo apt install python3-venv

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

bash
python3 -m venv myenv

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

bash
source myenv/bin/activate

2.3 تثبيت Django

بعد تفعيل البيئة الافتراضية، قم بتثبيت Django باستخدام pip:

bash
pip install django

2.4 إنشاء مشروع Django

الآن، يمكننا إنشاء مشروع Django باستخدام الأمر:

bash
django-admin startproject myproject cd myproject

تأكد من أن المشروع يعمل عن طريق تشغيل الخادم المحلي:

bash
python manage.py runserver

إذا كانت الصفحة تعرض بشكل صحيح على http://127.0.0.1:8000/، فإن المشروع تم إنشاؤه بنجاح.

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

3.1 تثبيت PostgreSQL

لتثبيت PostgreSQL على الخادم، استخدم الأوامر التالية:

bash
sudo apt install postgresql postgresql-contrib

بعد التثبيت، قم بتسجيل الدخول إلى PostgreSQL:

bash
sudo -u postgres psql

3.2 إنشاء قاعدة بيانات ومستخدم

داخل psql، أنشئ قاعدة بيانات ومستخدم جديد:

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;

3.3 تكوين Django لاستخدام PostgreSQL

قم بتثبيت مكتبة psycopg2 الخاصة ب PostgreSQL باستخدام pip:

bash
pip install psycopg2

افتح ملف إعدادات Django settings.py وأضف إعدادات قاعدة البيانات:

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

3.4 تنفيذ الترحيلات (Migrations)

لتطبيق التغييرات على قاعدة البيانات، استخدم الأوامر التالية:

bash
python manage.py migrate

الآن، تكون قاعدة البيانات جاهزة للاستخدام.

4. إعداد Gunicorn

Gunicorn هو خادم تطبيقات Python WSGI يُستخدم لتشغيل تطبيقات Django في بيئات الإنتاج.

4.1 تثبيت Gunicorn

داخل البيئة الافتراضية، قم بتثبيت Gunicorn:

bash
pip install gunicorn

4.2 تشغيل التطبيق باستخدام Gunicorn

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

bash
gunicorn --workers 3 myproject.wsgi:application

هذا يشير إلى أن التطبيق سيُشغل مع 3 عمال (workers)، ويمكنك تعديل العدد حسب عدد النوى المتاحة في الخادم الخاص بك.

5. إعداد Nginx

Nginx يعمل كخادم ويب عكسي reverse proxy، حيث يتعامل مع الطلبات الواردة ويوجهها إلى Gunicorn. سيساعد Nginx أيضًا في توفير الأمان والسرعة عن طريق استخدام SSL (لتأمين الاتصال).

5.1 تثبيت Nginx

لتثبيت Nginx، استخدم الأمر التالي:

bash
sudo apt install nginx

5.2 إعداد ملف تكوين Nginx

قم بإنشاء ملف تكوين جديد في /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; } }

ثم أنشئ رابطًا رمزيًا إلى sites-enabled لتفعيل الموقع:

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

5.3 اختبار إعدادات Nginx

قبل إعادة تشغيل Nginx، تأكد من أن إعدادات Nginx صحيحة:

bash
sudo nginx -t

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

bash
sudo systemctl restart nginx

5.4 السماح بنقل البيانات عبر جدار الحماية

إذا كنت تستخدم UFW (Uncomplicated Firewall)، تأكد من السماح بالاتصالات على المنفذ 80 (HTTP) و 443 (HTTPS):

bash
sudo ufw allow 'Nginx Full'

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

لتأمين الاتصال باستخدام SSL (HTTPS)، يمكن استخدام Let’s Encrypt للحصول على شهادة SSL مجانية.

6.1 تثبيت Certbot

لتثبيت Certbot واستخدامه مع Nginx:

bash
sudo apt install certbot python3-certbot-nginx

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

لتأمين موقعك، استخدم Certbot:

bash
sudo certbot --nginx -d your_domain

اتبع التعليمات التي ستظهر على الشاشة للحصول على الشهادة وتثبيتها.

6.3 اختبار التجديد التلقائي

Certbot يقوم بتجديد الشهادات تلقائيًا قبل انتهائها. لاختبار التجديد التلقائي، يمكنك تنفيذ:

bash
sudo certbot renew --dry-run

7. إعدادات إضافية وتحسينات

7.1 إعدادات Gunicorn لتحسين الأداء

يمكنك تحسين أداء Gunicorn عن طريق تعديل عدد العمليات (workers) وعدد الخيوط (threads) بناءً على موارد الخادم الخاص بك. على سبيل المثال، يمكنك استخدام الأمر التالي لتشغيل Gunicorn:

bash
gunicorn --workers 4 --threads 2 myproject.wsgi:application

7.2 مراقبة الأداء

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

8. الخاتمة

لقد قمنا بتغطية جميع الخطوات الأساسية لإعداد تطبيق Django باستخدام PostgreSQL كقاعدة بيانات، Gunicorn كخادم تطبيق، و Nginx كخادم ويب عكسي. هذا الإعداد يضمن أداءً عاليًا وأمانًا للتطبيقات في بيئات الإنتاج.

باستخدام هذه الخطوات، يمكن تنفيذ التطبيق بنجاح مع توفر بيئة مستقرة وقابلة للتوسع.