دليل النشر

نشر تطبيق Django على VPS

انشر على VPS Cloud →

التطوير8 دقيقة قراءة

نشر تطبيق Django على VPS

يبقى Django إطار عمل Python المرجعي للتطبيقات الويب المتينة والآمنة. ونشره بنفسك على VPS يمنحك تحكمًا كاملًا في قاعدة البيانات والملفات الثابتة ومسار التوسّع، دون الاعتماد على منصة PaaS غامضة.

لماذا تستضيف Django ذاتيًا على VPS؟

منصات Django المُدارة تفوتر حسب الاستخدام وتُخفي طبقة الخادم، ما يعقّد تحسين عمليات الترحيل (migrations) ومهام Celery وملفات الوسائط الكبيرة. على VPS، تتحكم في المكدّس الكامل: Gunicorn كخادم WSGI، وNginx في الواجهة، وPostgreSQL للبيانات، وRedis للتخزين المؤقت وطوابير المهام. أنت من يقرّر إصدار Python وعدد الـworkers واستراتيجية جمع الملفات الثابتة وضبط قاعدة البيانات. ولتطبيق Django في الإنتاج يتجاوز مرحلة النموذج الأولي، تكون هذه الشفافية حاسمة: يمكنك تحليل أداء طلب بطيء، وتعديل إعدادات PostgreSQL، ونشر إصدار جديد دون تكلفة إضافية خفية.

فوائد ملموسة لاستضافة Django ذاتيًا

  • تحكم كامل في PostgreSQL: الفهارس وVACUUM والاتصالات الدائمة والنسخ الاحتياطية المجدولة عبر pg_dump.
  • مهام غير متزامنة مع Celery وRedis دون فوترة لكل تنفيذ worker.
  • تكلفة ثابتة وقابلة للتوقّع، بغض النظر عن الزيارات أو حجم ملفات الوسائط المقدَّمة.
  • بيانات وسجلات ضمن نطاق سلطتك القضائية، ما يفيد في الامتثال والتدقيق.
  • حرية في اختيار إصدار Python واعتماديات النظام (GDAL وWeasyPrint وPillow) دون قيود buildpack.
  • عمليات نشر قابلة لإعادة الإنتاج عبر Docker وإمكانية استنساخ البيئة بشكل مطابق.

المتطلبات المسبقة للعتاد والبرمجيات

لتطبيق Django مع PostgreSQL وRedis، خصّص ما لا يقل عن 2 vCPU و2 غيغابايت من ذاكرة RAM؛ واستهدف 4 غيغابايت إذا أضفت Celery وذاكرة تخزين مؤقت Redis محمّلة. نظام التشغيل المُوصى به هو Ubuntu 22.04 أو 24.04 LTS. ثبّت Docker وDocker Compose لعزل الخدمات، أو Python 3.11+ وsystemd لتثبيت أصيل. يلزم اسم نطاق مُوجَّه بسجل A نحو عنوان IP الخاص بـVPS للحصول على شهادة TLS. احسب 20 غيغابايت من القرص للتطبيق وقاعدة البيانات وملفات الوسائط لمشروع متوسط الحجم.

نشر Django خطوة بخطوة

01

تجهيز VPS والمشروع

اتصل عبر SSH، وأنشئ مستخدمًا غير جذري (non-root) مخصّصًا، وثبّت Docker. استنسخ مستودعك وأنشئ ملف .env يحتوي على SECRET_KEY وDATABASE_URL وALLOWED_HOSTS=yourdomain.com وDEBUG=False.

02

التعبئة في حاوية باستخدام Gunicorn

اكتب ملف Dockerfile مبنيًا على python:3.11-slim، وثبّت الاعتماديات من requirements.txt، ثم شغّل التطبيق باستخدام gunicorn projet.wsgi:application --bind 0.0.0.0:8000 --workers 3. عرّف خدمة web وخدمة db (PostgreSQL) وخدمة redis في docker-compose.yml.

03

تطبيق الترحيلات والملفات الثابتة

نفّذ docker compose run --rm web python manage.py migrate ثم python manage.py collectstatic --noinput. اربط وحدة تخزين (volume) لـ/app/staticfiles و/app/media كي يتمكّن Nginx من تقديمها مباشرة.

04

إعداد Nginx كبروكسي عكسي

أنشئ كتلة خادم (server block) تُمرّر الطلبات إلى http://web:8000 عبر proxy_pass، وتقدّم /static/ و/media/ من وحدات التخزين. أضف ترويسَتَي X-Forwarded-Proto وHost كي يكتشف Django بروتوكول HTTPS بشكل صحيح.

05

تفعيل HTTPS عبر Let's Encrypt

استخدم Certbot أو حاوية nginx-proxy مع acme-companion للحصول التلقائي على شهادة yourdomain.com وتجديدها. افرض إعادة التوجيه من HTTP إلى HTTPS وفعّل HSTS في Django عبر SECURE_HSTS_SECONDS.

06

التشغيل والإشراف

نفّذ docker compose up -d، وتحقّق من السجلات باستخدام docker compose logs -f web، وأنشئ المستخدم الخارق (superuser) باستخدام python manage.py createsuperuser. جدْوِل مهمة cron للنسخ الاحتياطي عبر pg_dump وإعادة التشغيل النظيف لـworkers الخاصة بـCelery.

فعّل مجمّع الاتصالات PgBouncer بين Django وPostgreSQL: فمع عدة workers لـGunicorn ومهام Celery، تستنفد بسرعة max_connections في Postgres. ويضاعف PgBouncer في وضع transaction عدد الطلبات المخدومة دون المساس بضبط قاعدة البيانات، ويثبّت زمن الاستجابة تحت الحِمل.

أطلق تطبيق Django في دقائق

يوفّر VPS السحابي من ServOrbit قالبًا مُهيّأً مسبقًا مع Docker وNginx وشهادات SSL تلقائية، جاهزًا لاستضافة تطبيق Django وPostgreSQL وRedis.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو راسل فريقنا — الدعم بـ العربية والفرنسية والإنجليزية.