إعداد تطبيق 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 مثبت على النظام. إذا لم يكن مثبتًا، قم بتثبيته باستخدام:
bashsudo apt update sudo apt install python3 python3-pip python3-dev
بعد التثبيت، تحقق من إصدارات Python و pip:
bashpython3 --version pip3 --version
2.2 إعداد البيئة الافتراضية
بيئة افتراضية Python (Virtualenv) هي بيئة معزولة تسمح لك بتثبيت الحزم بدون التأثير على النظام العام. لتثبيتها، استخدم الأوامر التالية:
bashsudo apt install python3-venv
ثم قم بإنشاء بيئة افتراضية في المجلد الذي تريد العمل فيه:
bashpython3 -m venv myenv
لتفعيل البيئة الافتراضية:
bashsource myenv/bin/activate
2.3 تثبيت Django
بعد تفعيل البيئة الافتراضية، قم بتثبيت Django باستخدام pip:
bashpip install django
2.4 إنشاء مشروع Django
الآن، يمكننا إنشاء مشروع Django باستخدام الأمر:
bashdjango-admin startproject myproject
cd myproject
تأكد من أن المشروع يعمل عن طريق تشغيل الخادم المحلي:
bashpython manage.py runserver
إذا كانت الصفحة تعرض بشكل صحيح على http://127.0.0.1:8000/، فإن المشروع تم إنشاؤه بنجاح.
3. إعداد قاعدة بيانات PostgreSQL
3.1 تثبيت PostgreSQL
لتثبيت PostgreSQL على الخادم، استخدم الأوامر التالية:
bashsudo apt install postgresql postgresql-contrib
بعد التثبيت، قم بتسجيل الدخول إلى PostgreSQL:
bashsudo -u postgres psql
3.2 إنشاء قاعدة بيانات ومستخدم
داخل psql، أنشئ قاعدة بيانات ومستخدم جديد:
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;
3.3 تكوين Django لاستخدام PostgreSQL
قم بتثبيت مكتبة psycopg2 الخاصة ب PostgreSQL باستخدام pip:
bashpip install psycopg2
افتح ملف إعدادات Django settings.py وأضف إعدادات قاعدة البيانات:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myprojectdb',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
3.4 تنفيذ الترحيلات (Migrations)
لتطبيق التغييرات على قاعدة البيانات، استخدم الأوامر التالية:
bashpython manage.py migrate
الآن، تكون قاعدة البيانات جاهزة للاستخدام.
4. إعداد Gunicorn
Gunicorn هو خادم تطبيقات Python WSGI يُستخدم لتشغيل تطبيقات Django في بيئات الإنتاج.
4.1 تثبيت Gunicorn
داخل البيئة الافتراضية، قم بتثبيت Gunicorn:
bashpip install gunicorn
4.2 تشغيل التطبيق باستخدام Gunicorn
لتشغيل تطبيق Django باستخدام Gunicorn، استخدم الأمر التالي:
bashgunicorn --workers 3 myproject.wsgi:application
هذا يشير إلى أن التطبيق سيُشغل مع 3 عمال (workers)، ويمكنك تعديل العدد حسب عدد النوى المتاحة في الخادم الخاص بك.
5. إعداد Nginx
Nginx يعمل كخادم ويب عكسي reverse proxy، حيث يتعامل مع الطلبات الواردة ويوجهها إلى Gunicorn. سيساعد Nginx أيضًا في توفير الأمان والسرعة عن طريق استخدام SSL (لتأمين الاتصال).
5.1 تثبيت Nginx
لتثبيت Nginx، استخدم الأمر التالي:
bashsudo apt install nginx
5.2 إعداد ملف تكوين Nginx
قم بإنشاء ملف تكوين جديد في /etc/nginx/sites-available/:
bashsudo nano /etc/nginx/sites-available/myproject
وأضف التكوين التالي:
nginxserver {
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 لتفعيل الموقع:
bashsudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
5.3 اختبار إعدادات Nginx
قبل إعادة تشغيل Nginx، تأكد من أن إعدادات Nginx صحيحة:
bashsudo nginx -t
إذا كان كل شيء على ما يرام، قم بإعادة تشغيل Nginx:
bashsudo systemctl restart nginx
5.4 السماح بنقل البيانات عبر جدار الحماية
إذا كنت تستخدم UFW (Uncomplicated Firewall)، تأكد من السماح بالاتصالات على المنفذ 80 (HTTP) و 443 (HTTPS):
bashsudo ufw allow 'Nginx Full'
6. إعداد SSL (اختياري)
لتأمين الاتصال باستخدام SSL (HTTPS)، يمكن استخدام Let’s Encrypt للحصول على شهادة SSL مجانية.
6.1 تثبيت Certbot
لتثبيت Certbot واستخدامه مع Nginx:
bashsudo apt install certbot python3-certbot-nginx
6.2 الحصول على شهادة SSL
لتأمين موقعك، استخدم Certbot:
bashsudo certbot --nginx -d your_domain
اتبع التعليمات التي ستظهر على الشاشة للحصول على الشهادة وتثبيتها.
6.3 اختبار التجديد التلقائي
Certbot يقوم بتجديد الشهادات تلقائيًا قبل انتهائها. لاختبار التجديد التلقائي، يمكنك تنفيذ:
bashsudo certbot renew --dry-run
7. إعدادات إضافية وتحسينات
7.1 إعدادات Gunicorn لتحسين الأداء
يمكنك تحسين أداء Gunicorn عن طريق تعديل عدد العمليات (workers) وعدد الخيوط (threads) بناءً على موارد الخادم الخاص بك. على سبيل المثال، يمكنك استخدام الأمر التالي لتشغيل Gunicorn:
bashgunicorn --workers 4 --threads 2 myproject.wsgi:application
7.2 مراقبة الأداء
استخدم أدوات مثل supervisor أو systemd لمراقبة عملية Gunicorn وضمان تشغيلها بشكل مستمر، حتى إذا تم إيقاف الخادم أو إعادة تشغيله.
8. الخاتمة
لقد قمنا بتغطية جميع الخطوات الأساسية لإعداد تطبيق Django باستخدام PostgreSQL كقاعدة بيانات، Gunicorn كخادم تطبيق، و Nginx كخادم ويب عكسي. هذا الإعداد يضمن أداءً عاليًا وأمانًا للتطبيقات في بيئات الإنتاج.
باستخدام هذه الخطوات، يمكن تنفيذ التطبيق بنجاح مع توفر بيئة مستقرة وقابلة للتوسع.

