إعداد تطبيق Django جاهز للنشر مع قاعدة بيانات Postgres وخادم Nginx و Gunicorn
في عالم تطوير البرمجيات، يعد نشر تطبيقات الويب أحد المراحل الهامة التي يتعين على المطورين فهمها بشكل جيد. تطبيق Django، وهو إطار عمل بايثون شهير لتطوير تطبيقات الويب، يتطلب عدة خطوات لضمان نشره بشكل سلس وآمن في بيئة الإنتاج. من بين الأدوات الأساسية التي يستخدمها المطورون في نشر تطبيقات Django، نجد قاعدة بيانات PostgreSQL كحل تخزين بيانات موثوق وقوي، بالإضافة إلى خوادم مثل Nginx و Gunicorn لتقديم الخدمة بشكل فعال وآمن.
في هذا المقال، سنقوم بتوضيح كيفية إعداد تطبيق Django مع قاعدة بيانات PostgreSQL، ثم نشره باستخدام Gunicorn كخادم تطبيقات، وNginx كخادم ويب، وذلك خطوة بخطوة.
1. إعداد البيئة الافتراضية وتثبيت المتطلبات
قبل البدء في أي شيء، من الأفضل دائمًا العمل في بيئة افتراضية لحماية المشروع من التداخل مع المشاريع الأخرى على نفس النظام. سنستخدم venv لإنشاء بيئة افتراضية.
1.1 إنشاء البيئة الافتراضية
في المجلد الخاص بالمشروع، افتح الطرفية (Terminal) وابدأ بإنشاء البيئة الافتراضية:
bashpython3 -m venv venv
1.2 تفعيل البيئة الافتراضية
لتفعيل البيئة الافتراضية، استخدم الأمر التالي:
على أنظمة Linux/macOS:
bashsource venv/bin/activate
على أنظمة Windows:
bashvenv\Scripts\activate
1.3 تثبيت Django والاعتمادات الأخرى
الآن يجب تثبيت Django وأي مكتبات أخرى قد تحتاجها في المشروع. لتثبيت Django:
bashpip install django
كما سنحتاج إلى تثبيت مكتبة PostgreSQL الخاصة بـ Django، والتي تعرف باسم psycopg2، وهي أداة تتيح لـ Django التواصل مع قاعدة بيانات PostgreSQL:
bashpip install psycopg2
1.4 إعداد مشروع Django
إذا لم يكن لديك مشروع Django جاهزًا، يمكنك إنشاؤه باستخدام الأمر التالي:
bashdjango-admin startproject myproject
cd myproject
2. إعداد قاعدة بيانات PostgreSQL
PostgreSQL هو نظام إدارة قواعد البيانات العلاقية الذي يقدم أداءً عاليًا وموثوقية، ويعد خيارًا مثاليًا لتطبيقات Django.
2.1 تثبيت PostgreSQL
أولاً، يجب تثبيت PostgreSQL على الخادم الخاص بك. على الأنظمة القائمة على Debian/Ubuntu، يمكن تثبيت PostgreSQL باستخدام:
bashsudo apt-get update sudo apt-get install postgresql postgresql-contrib
2.2 إنشاء قاعدة البيانات
بعد تثبيت PostgreSQL، نحتاج إلى إنشاء قاعدة بيانات جديدة لمشروع Django. يمكن فعل ذلك باستخدام الأوامر التالية:
-
تسجيل الدخول إلى PostgreSQL:
bashsudo -u postgres psql
-
إنشاء قاعدة بيانات جديدة:
sqlCREATE DATABASE myprojectdb;
-
إنشاء مستخدم مع كلمة مرور:
sqlCREATE USER myprojectuser WITH PASSWORD 'password';
-
منح المستخدم الصلاحيات اللازمة:
sqlGRANT ALL PRIVILEGES ON DATABASE myprojectdb TO myprojectuser;
2.3 إعداد Django لاستخدام PostgreSQL
في ملف الإعدادات الخاص بـ Django (settings.py)، تحتاج إلى تحديث إعدادات قاعدة البيانات لاستخدام PostgreSQL:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myprojectdb',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
2.4 تطبيق التعديلات على قاعدة البيانات
بعد إعداد الاتصال بقاعدة البيانات في Django، يجب عليك تطبيق التعديلات على قاعدة البيانات باستخدام:
bashpython manage.py migrate
3. إعداد Gunicorn كخادم تطبيقات
Gunicorn هو خادم WSGI (Web Server Gateway Interface) سريع وفعال، وهو الخيار المثالي لتشغيل تطبيق Django في بيئة الإنتاج. يستخدم Gunicorn لتشغيل تطبيق Django في الخلفية.
3.1 تثبيت Gunicorn
يمكنك تثبيت Gunicorn داخل البيئة الافتراضية باستخدام الأمر التالي:
bashpip install gunicorn
3.2 تشغيل Gunicorn
لتشغيل تطبيق Django باستخدام Gunicorn، يمكنك استخدام الأمر التالي:
bashgunicorn --workers 3 myproject.wsgi:application
في هذا الأمر:
-
--workers 3يعني أن Gunicorn سيستخدم 3 عمليات (workers) للتعامل مع الطلبات. يمكن تعديل هذا الرقم بناءً على احتياجات الخادم. -
myproject.wsgi:applicationهو مسار ملفwsgi.pyالخاص بتطبيق Django.
3.3 اختبار التطبيق
يمكنك الآن اختبار التطبيق عبر المتصفح عن طريق الوصول إلى العنوان المحلي:
bashhttp://localhost:8000
إذا كان كل شيء مضبوطًا بشكل صحيح، فيجب أن ترى صفحة الترحيب الخاصة بـ Django.
4. إعداد Nginx كخادم ويب
Nginx هو خادم ويب فعال وآمن يستخدم لتحسين أداء تطبيقات الويب عن طريق توجيه الطلبات إلى Gunicorn وتوزيعها بشكل مناسب. كما يستخدم Nginx كموازن تحميل ويقدم ميزات أمنية مثل SSL.
4.1 تثبيت Nginx
لتثبيت Nginx على الخادم، استخدم الأمر التالي على أنظمة Debian/Ubuntu:
bashsudo apt-get install nginx
4.2 إعداد Nginx للعمل مع Gunicorn
بعد تثبيت Nginx، يجب عليك إعداد ملف تكوين جديد لربط Nginx بـ Gunicorn. قم بإنشاء ملف جديد في /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;
}
location /static/ {
alias /path/to/your/static/directory;
}
location /media/ {
alias /path/to/your/media/directory;
}
}
4.3 تمكين التكوين في Nginx
بعد إنشاء ملف التكوين، تحتاج إلى تفعيل الموقع بإنشاء رابط رمزي في sites-enabled:
bashsudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
4.4 اختبار تكوين Nginx
قبل إعادة تشغيل Nginx، من الأفضل اختبار التكوين للتأكد من عدم وجود أخطاء:
bashsudo nginx -t
4.5 إعادة تشغيل Nginx
إذا كان كل شيء على ما يرام، يمكنك إعادة تشغيل Nginx لتطبيق التغييرات:
bashsudo systemctl restart nginx
5. إعداد SSL (اختياري)
إذا كنت ترغب في تأمين تطبيقك باستخدام HTTPS، يمكنك تثبيت شهادة SSL باستخدام Let’s Encrypt. Let’s Encrypt هو مزود شهادات SSL مجاني، ويمكنك استخدام أداة certbot لتثبيت الشهادات.
5.1 تثبيت Certbot
لتثبيت Certbot على خادمك:
bashsudo apt-get install certbot python3-certbot-nginx
5.2 الحصول على شهادة SSL
بعد تثبيت Certbot، يمكنك استخدامه للحصول على شهادة SSL جديدة:
bashsudo 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 بشكل احترافي وقوي.

