اذهب إلى المحتوى

السؤال

نشر

عندما أقوم بتشغيل أي مشروع مبني بإستخدام فلاسك Flask يتم زيارة المشروع على الرابط localhost:5000 وبالطبع يمكنني أن أقوم بتغير هذا المنفذ (5000)، ولكن كيف يمكنني أن أزيله بالكامل حتى أتمكن من زيارة الموقع من خلال localhost مباشرة بدون تحديد منفذ معين؟

Recommended Posts

  • 1
نشر

عند زيارتك لأي موقع على الإنترنت فأنت تستعمل منفذ معين (مثل 80 أو 443) وهذه هي المنافذ الإفتراضية لـ http و https ولذلك يقوم المتصفح بإخفاء هذا الجزء، فعلى سبيل المثال عندما تدخل إلى موقع أكاديمية حسوب فأنت تستعمل الرابط التالي:

https://academy.hsoub.com

ولكن يقوم المتصفح بإضافة منفذ 443 (لأن الموقع يستعمل https)، وبالتالي فيمكنك أن تدخل إلى أكاديمية حسوب عبر الرابط التالي أيضًا:

https://academy.hsoub.com:443

وبالتالي فيمكنك أن تقوم بتغير المنفذ الخاص بمشروعك لكي يستخدم المنفذ 80 (أو 443 إذا كنت تستعمل شهادة SSL)، على النحو التالي:
 

app.run(host='0.0.0.0', port=80)

أو إذا كنت تستعمل الأمر flask:

flask run --host=0.0.0.0 --port=80

بهذا الشكل يمكنك أن تقوم بتشغيل المشروع من خلال http://localhost مباشرة.

  • 2
نشر

ملاحظة:

عند استخدام نظام لينوكس، ولتستطيع تشغيل تطبيقك على المنفذ 80 تحتاج لتنفيذ المشروع باستخدام صلاحيات الأدمن أي sudo بالطريقة التالية

sudo python3 app.py 

على فرض أنك تشغل flask ضمن app.py كالتالي:

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=80)

 

  • 1
نشر

قبل الإجابة على هذا السؤال نحتاج أن نفهم أولًا بعض الأشياء عن الشبكات:

كل جهاز راوتر(router) يقوم بالإتصال على شبكة الإنترنت عبر رقم يُسمى ip address (عنوان بروتوكول الإنترنت) وهو رقم فريد يُعبر عن كل جهاز متصل بالإنترنت, ماذا يحدث عندما نقوم برفع موقع على الإنترنت؟ ما يحدث هو أن ذلك الجهاز بالفعل يحتوي على رقم عنوان لبروتوكول الإنترنت (ip address) ولكن عندما تقوم بالولوج إليه من خلال المتصفح يتم إستبدال ذلك الرقم بإسم حتى يصبح معبرًا وسهل قرائته وكتابته من قِبل الإنسان فعلى سبيل المثال يتم ترجمة العنوان 102.132.97.35 إلى facebook.com

حسنًا, كيف يعلم جهاز الحاسب الذي يعمل كخادم (server) البرنامج الذي يتم الولوج إليه؟ فكما لاحظت أن الجهاز يأخذ ip address ولكن هذا الجهاز بالتأكيد يحتوي على العديد من الملفات والبرامج كيف يستطيع التحديد أي برنامج فيهما سيستقبل الطلب ؟ هنا يأتي دور الport number أو رقم المنفذ, حيث يتم تحديد البرنامج او البروتوكول المتبع من خلال المنفذ, فعلى سبيل المثال إن قمت بتشغيل قاعدة بيانات mysql وتطبيق flask وتطبيق react يعمل على node js , بما أنهم جميعًا يعملون بشكل محلي فسيكون الip address لهم هو 127.0.0.1 والتي يتم ترجمتها إلى localhost , فكيف يمكنك تحديد أي تطبيق منهم تريد الولوج إليه؟ الإجابة هي بالمنفذ, تقوم بإعطاء كل تطبيق منفذ معين فتقوم بالولوج إلى فلاسك مثلًا من خلال localhost:5000 والولوج إلى mysql من خلال localhost:3306

فبالتالي لا يمكن تشغيل التطبيق بدون رقم منفذ

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...