python - شرح - django movie



كيفية الوصول إلى خادم الويب Django المحلي من العالم الخارجي (4)

اتبعت التعليمات here لتشغيل Django باستخدام خادم الويب المدمج وتمكنت من تشغيله بنجاح باستخدام python manage.py runserver . إذا تمكنت من الوصول إلى 127.0.0.1:: محليًا من خادم الويب ، فسأحصل على صفحة Django تشير إلى أنها تعمل.

أدرك أن خادم الويب Django ليس خادم إنتاج ، ولكن من المهم بالنسبة لي أن تكون أغراض الاختبار قادرة على الوصول إليه من العالم الخارجي - أي ليس من متصفح الويب على الخادم ، ولكن من كمبيوتر آخر.

حاولت:

http://mywebserver:port_django_runs_on

ولكنها لم تعمل. لقد حاولت أيضًا استخدام IP بدلاً من ذلك (استنادًا إلى ifconfig) للوصول إلى:

http://myipaddress:port_django_runs_on 

التي لم تعمل سواء.

يتم تشغيل خادم الويب لذلك يجب أن يكون متاحًا من الخارج ، أنا لست متأكدًا من كيفية ذلك. أقوم بتشغيل Linux مع Apache ، على الرغم من أنني لم أقم بتكوين Django مع Apache.

أي أفكار حول كيفية القيام بذلك؟


اختر واحدة أو أكثر من:

  • لا يستمع تطبيقك بنجاح إلى عنوان IP المقصود: PORT
    • لأنك لم تقم بتكوينه بنجاح
    • لأن المستخدم ليس لديه إذن بذلك
  • يستمع التطبيق الخاص بك بنجاح على IP: PORT المقصود ، ولكن لا يمكن للعملاء الوصول إليه بسبب ذلك
    • الملقمات iptables المحلية للخوادم تمنعه.
    • جدار الحماية يمنع ذلك.

لذلك ، يمكنك التحقق من أن التطبيق الخاص بك يستمع بنجاح عن طريق تشغيل lsof -i كجذر على الجهاز والبحث عن إدخال python مع المنفذ المناظر الذي حددته.

لا يمكن للمستخدمين غير الجذر عمومًا الربط مع المنافذ <1024.

ستحتاج إلى الاطلاع على iptables -nvL لمعرفة ما إذا كانت هناك قاعدة تمنع الوصول إلى ip: port الذي تحاول ربط التطبيق به.

إذا كان هناك جدار حماية علوي ولا تعرف الكثير عنه ، فستحتاج إلى التحدث إلى مسؤولي الشبكة.


اضطررت لإضافة هذا السطر إلى settings.py لجعله يعمل (وإلا أظهر خطأ عند الوصول إليه من كمبيوتر آخر)

ALLOWED_HOSTS = ['*']

ثم ركض الخادم مع:

python manage.py runserver 0.0.0.0:9595

تأكد أيضًا من أن جدار الحماية يسمح بالاتصالات إلى ذلك المنفذ


فقط افعل هذا:

python manage.py runserver 0:8000

من خلال الأمر السابق ، فأنت ملزم في الواقع إلى عنوان IP الخارجي. حتى الآن عند الوصول إلى عنوان IP الخاص بك مع رقم المنفذ ، ستتمكن من الوصول إليه في المتصفح دون أي مشكلة.

فقط اكتب ما يلي في شريط عنوان المتصفح:

<your ip address>:8000

على سبيل المثال:

192.168.1.130:8000

قد تضطر إلى تحرير الإعدادات.py قم بإضافة ما يلي في settings.py في السطر الأخير:

ALLOWED_HOSTS = ['*']

نأمل أن يساعد هذا ...


لمستخدمي AWS.

اضطررت إلى استخدام الخطوات التالية للوصول إلى هناك.

1) تأكد من أن pip و django مثبتة على مستوى sudo

  • sudo apt-get install python-pip
  • سودو pip تثبيت جانغو

2) تأكد من أن قواعد مجموعة الأمان المضمنة تحتوي على http على المنفذ 80 لـ 0.0.0.0/0

  • تكوين من خلال وحدة التحكم AWS

3) إضافة IP العام و DNS إلى ALLOWED_HOSTS

  • ALLOWED_HOSTS هو كائن قائمة يمكنك العثور عليه في settings.py
  • ALLOWED_HOSTS = ["75.254.65.19"، "ec2-54-528-27-21.compute-1.amazonaws.com"]

4) إطلاق خادم التطوير مع sudo على المنفذ 80

  • sudo python manage.py runningerver 0:80

الموقع متاح الآن في أي مما يلي (لا حاجة إلى: 80 لأن هذا هو الوضع الافتراضي لـ http):

  • [Public DNS] ie ec2-54-528-27-21.compute-1.amazonaws.com
  • [Public IP] ie 75.254.65.19




django