ডিজেঙ্গো ডিফল্ট রানসরভার পোর্ট পরিবর্তন করুন


129

আমি ডিফল্ট পোর্টটি তৈরি করতে চাই যা manage.py runserverএকটি বহিরাগতের মধ্যে সুনির্দিষ্টভাবে শোনে config.inisys.argvভিতরে পার্সিং manage.pyএবং কনফিগার করা পোর্ট tingোকানোর চেয়ে সহজ সমাধান কি আছে ?

লক্ষ্যটি হ'ল ./manage.py runserverপ্রতিবার ঠিকানা এবং পোর্ট নির্দিষ্ট না করে চালানো কিন্তু এটির কাছ থেকে আর্গুমেন্ট নেওয়া config.ini


আপনি যদি আপনার কমান্ড লাইনের ইতিহাস থেকে কমান্ডটি চালনা করেন তবে এটি আরও কম কীস্ট্রোক। যেমন আমার জন্য এটি "<<<< <<<< <enter>", এবং এটি স্বয়ংক্রিয়ভাবে শেষ বারের মতো একই কমান্ড চালায়, তাই বন্দর ইত্যাদি অন্তর্ভুক্ত করা হয়েছে।
জোনাথন হার্টলি

উত্তর:


176

নিম্নলিখিতগুলির সাথে একটি বাশ স্ক্রিপ্ট তৈরি করুন:

#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>

ম্যানেজ.পাইয়ের মতো একই ডিয়ারে এটি চালক হিসাবে সংরক্ষণ করুন

chmod +x runserver

এবং এটি হিসাবে চালান

./runserver

হয় তা হয়, বা আমি কাস্টম ম্যানেজমেন্ট কমান্ড যুক্ত করার বিষয়ে ভাবছি।
জনি

আপনি প্রোগ্রামটিভভাবে ডেভলপমেন্ট সার্ভারটি চালাতে পারবেন না, সুতরাং কাস্টম কমান্ড কাজ করবে না যতক্ষণ না এটি শেলটি এর মতো কিছু ব্যবহার করে কল করে call। যদি এই সমাধানটি আপনার পক্ষে কাজ করে তবে দয়া করে এটিকে সমাধান হিসাবে চিহ্নিত করার বিষয়টি নিশ্চিত করুন।
পাবলো অ্যালোর্নোজ

আমি আসলে supervisorএখন এটির জন্য ব্যবহার শুরু করেছি , এটি পরিচালনা করা আরও সহজ করে তোলে। :-) তবে আপনার সম্ভবত কোনও ডেডিকেটেড runserverস্ক্রিপ্ট লেখার চেয়ে পরিষ্কার সমাধান ।
জনি

সুপারভাইজার একটি ভাল সমাধান কারণ এটি উন্নয়নের পরিবেশটি চালানোর জন্য আমি সুপারিশ করব না। আপনি অন্যান্য জিনিসগুলির মধ্যেও টার্মিনালে সার্ভার আউটপুট থাকার সুবিধাটি হারাবেন। আপনি যদি সত্যিই সুপারভাইজারটি ব্যবহার করতে চান তবে আমার পরামর্শটি হ'ল গুনিকর্নের মতো সম্পূর্ণ বৈশিষ্ট্যযুক্ত ডাব্লুএসজিআই সার্ভারের সাথে এটি ব্যবহার করা। দয়া করে ডেভলপমেন্ট সার্ভারটি আপনার প্রোডাকশন সার্ভার হিসাবে চালাবেন না ...
পাবলো অ্যালবোনোজ

একযোগে একাধিক প্রকল্প জাগ্রত করার সময় এটি দরকারী তবে গ্রেট নয় - আমি নীচের উত্তরটি গ্রহণ করতাম যা প্রতিটি স্বতন্ত্র প্রকল্পের জন্য ব্যবহৃত হবে বন্দরটি নির্দিষ্ট করে। শুধু আমার মতামত।

105

আসলে বিকাশের জ্যাঙ্গো সার্ভারে (কেবলমাত্র) বন্দর পরিবর্তন করার সবচেয়ে সহজ উপায়টি হ'ল:

python manage.py runserver 7000

এটি http://127.0.0.1:7000/ এ ডেভলপমেন্ট সার্ভার চালানো উচিত


2
এই উত্তরটি পোর্ট পরিবর্তন করার বিষয়ে, ডিফল্ট পোর্টটি পরিবর্তন করার বিষয়ে নয়।
শারীরিক সংক্ষিপ্তকরণ

42

জ্যাঙ্গো ১.৯ অনুসারে, আমি যে সহজ সমাধানটি খুঁজে পেয়েছি (কুইন্টিন স্টাফর্ড-ফ্রেজারের সমাধানের উপর ভিত্তি করে) কয়েকটি লাইন যুক্ত করা হয়েছে manage.pyযাতে runserverকমান্ডটি চালানোর আগে ডিফল্ট পোর্ট নম্বরকে গতিশীল পরিবর্তন করতে হবে :

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")

    import django
    django.setup()

    # Override default port for `runserver` command
    from django.core.management.commands.runserver import Command as runserver
    runserver.default_port = "8080"

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

যদিও এটি আসল প্রশ্নের সঠিকভাবে উত্তর দেয় না, এবং ইনডেন্টিংটি বিশৃঙ্খলাবদ্ধ হয় (কোডটি "আমদানি জ্যাঙ্গো" নীচে থেকে চাপানো উচিত) তবে আমি এই উত্তরটি পছন্দ করি কারণ এটি সম্পূর্ণ স্ব-অন্তর্ভুক্ত এবং এতে প্রবেশের পরিবর্তনের প্রয়োজন হয় না কমান্ড লাইনে।
বেগুনিডিয়ান

1
@ PurpleDiane ইন্ডেন্টেশন স্থির হয়েছে।
ফ্লিম 11

আমার ম্যানেজ.পি.পি আসলে দেখতে তেমন লাগে না, আমার ধারণা জ্যাঙ্গো পরিবর্তিত হয়েছে
NaturalBornCamper

6
বর্তমানে ( from django.core.management.commands.runserver import Command as runserver; runserver.default_port = "8080২.০.৩ হিসাবে) আপনি কেবল যুক্ত করতে পারেন: আপনার ম্যানেজ.পি। আপনি শ্রোতার ঠিকানাটি এর সাথেও পরিবর্তন করতে পারেন:runserver.default_addr
ভার্গাস

29

জাজানো চলাকালীন নিম্নলিখিত সমস্ত কমান্ড পোর্ট পরিবর্তন করা সম্ভব:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000

1
"লক্ষ্যটি প্রতিটি সময় ঠিকানা এবং পোর্ট নির্দিষ্ট করে না দিয়ে ./manage.py রানসভারটি চালানো হয়"
ক্রিপটিচ মনিকার সাথে দাঁড়িয়ে আছে

11

এর একটি সাবক্লাস তৈরি করুন django.core.management.commands.runserver.Commandএবং default_portসদস্যকে ওভাররাইট করুন । ফাইলটিকে নিজের পরিচালনার কমান্ড হিসাবে সংরক্ষণ করুন, যেমন <app-name>/management/commands/runserver.py:

from django.conf import settings
from django.core.management.commands import runserver

class Command(runserver.Command):
    default_port = settings.RUNSERVER_PORT

আমি এখানে ডিফল্ট পোর্ট ফর্ম সেটিংস লোড করছি (যার ফলে অন্যান্য কনফিগারেশন ফাইলগুলি পড়ে) তবে আপনি কেবল অন্য কোনও ফাইল থেকে সরাসরি এটি পড়তে পারেন।


এটি সর্বোত্তম সমাধানের মতো বলে মনে হচ্ছে তবে আমার জ্যাঙ্গো 1.8.14 আমার স্ব-নির্মিত ফাইলটি চিনতে পারে না runserver.py। আমি এটি কোথাও নিবন্ধন করা উচিত?
শারীরিক সংক্ষিপ্তকরণ

@ ফিজিক্যাল্যাট্রাকশন আপনার ফাইল সম্ভবত সঠিক স্থানে নেই। docs.djangoproject.com/en/2.0/howto/custom-management-runserver কম্যান্ডের জন্য পাইথন মডিউলটি কোথায় রাখা উচিত তার বিবরণ দিয়ে শুরু হয় । এছাড়াও হতে পারে আপনি অন্য অ্যাপ্লিকেশন আছে এছাড়াও নামে একজন কমান্ড নিবন্ধনের runserver। আপনার আদেশটি নামকরণ করার চেষ্টা করুন এবং এটি স্বীকৃত কিনা তা দেখুন।
ফিউমুরমেল

1
আমি এটি put <app_name>/management/commands/runserver.pyোকালাম, তবে তারপরে জ্যাঙ্গোর আসলটি runserverব্যবহৃত হয়। আমি যখন এটির নামকরণ করি তখন run_server.pyএটি স্বীকৃত হয়। runserverআপনার লিঙ্ক করা পৃষ্ঠায় আমি বিশেষ কিছু দেখতে পাচ্ছি না ।
ফিজিক্যাল্যাট্রাকশন

জিনিসটি staticfilesআপনার পরামর্শ মতো ঠিক তাই করে । সুতরাং আপনার নির্দেশাবলী অনুসরণ বিকাশে স্থিতিশীল ফাইল পরিবেশন বিরতি। এটি থেকে আমদানি করা ভাল django.contrib.staticfiles.management.commands
এক্স-ইউরি

8

আমরা একটি নতুন 'রানসারভার' ম্যানেজমেন্ট কমান্ড তৈরি করেছি যা মানকটির চারপাশে একটি পাতলা মোড়ক হলেও ডিফল্ট পোর্টটি পরিবর্তন করে। মোটামুটি, আপনি management/commands/runserver.pyএই জাতীয় কিছু তৈরি এবং রেখেছেন:

# Override the value of the constant coded into django...
import django.core.management.commands.runserver as runserver
runserver.DEFAULT_PORT="8001"

# ...print out a warning...
# (This gets output twice because runserver fires up two threads (one for autoreload).
#  We're living with it for now :-)
import os
dir_path = os.path.splitext(os.path.relpath(__file__))[0]
python_path = dir_path.replace(os.sep, ".")
print "Using %s with default port %s" % (python_path, runserver.DEFAULT_PORT)

# ...and then just import its standard Command class.
# Then manage.py runserver behaves normally in all other regards.
from django.core.management.commands.runserver import Command

2

পাইচার্মে আপনি কেবল প্যারামিটারগুলিতে পোর্টটি যুক্ত করতে পারেন

এখানে চিত্র বর্ণনা লিখুন


1

আমি এখানে পার্টিতে খুব দেরি করেছি, তবে আপনি যদি পাইচার্মের মতো আইডিই ব্যবহার করেন তবে 'রান' মেনুতে (রান> কনফিগারেশন সম্পাদনা করুন) এর অধীনে 'কনফিগারেশন সম্পাদনা করুন' এর একটি বিকল্প রয়েছে যেখানে আপনি একটি ডিফল্ট পোর্ট নির্দিষ্ট করতে পারেন। এটি অবশ্যই প্রাসঙ্গিক তবেই আপনি পাইচার্মের মাধ্যমে ডিবাগিং / পরীক্ষা করছেন।


1

আপনি যদি ডিফল্ট কনফিগারেশন পরিবর্তন করতে চান তবে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. টার্মিনাল টাইপ কমান্ড খুলুন

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
  2. এখন সুপারসার হিসাবে ন্যানো এডিটরে রানসভার.পি ফাইলটি খুলুন

     $ sudo nano runserver.py
  3. 'ডিফল্ট_পোর্ট' পরিবর্তনশীলটি সন্ধান করুন তারপরে আপনি ডিফল্ট পোর্টটি '8000' দেখতে পাবেন। এখন আপনি এটি যা চান তা পরিবর্তন করতে পারেন।

  4. এখন প্রস্থান করুন এবং "ফাইলটি সংরক্ষণ করতে CTRL + X এবং Y" ব্যবহার করে ফাইলটি সংরক্ষণ করুন

দ্রষ্টব্য: <2/3> .x প্রতিস্থাপন করুন আপনার অজগরটির ব্যবহারযোগ্য সংস্করণ দিয়ে


0
  1. আপনার .bashrc এ পরিবেশগত পরিবর্তনশীল তৈরি করুন

    RUNSERVER_PORT = 8010 রফতানি করুন

  2. উপন্যাস তৈরি করুন

    ওরফে রানসারবার = 'জ্যাঙ্গো-অ্যাডমিন রানসরভার $ RUNSERVER_PORT'

আমি zsh এবং virtualenvs মোড়ক ব্যবহার করছি। আমি প্রকল্পগুলিতে রফতানি পোস্টস্কিটিভ স্ক্রিপ্ট এবং প্রতিটি প্রকল্পের জন্য পোর্ট সাইন ইন করি ign

workon someproject
runserver

-2

এটি পুরানো পোস্ট তবে যারা আগ্রহী তাদের জন্য:

আপনি যদি ডিফল্ট পোর্ট নম্বরটি পরিবর্তন করতে চান তাই আপনি যখন "রানসরভার" কমান্ডটি চালাবেন আপনি নিজের পছন্দসই বন্দর দিয়ে শুরু করুন:

  1. আপনার পাইথন ইনস্টলেশনটি সন্ধান করুন। (আপনি একাধিক অজগর ইনস্টল করতে পারেন এবং আপনার ভার্চুয়াল পরিবেশ সংস্করণও থাকতে পারে তাই আপনি সঠিকটি খুঁজে পেয়েছেন তা নিশ্চিত করুন)
  2. পাইথন ফোল্ডারের ভিতরে সাইট-প্যাকেজ ফোল্ডারটি সন্ধান করুন। এর ভিতরে আপনি খুঁজে পাবেন আপনার জ্যাঙ্গো ইনস্টলেশন
  3. Django ফোল্ডার-> কোর -> পরিচালনা -> কমান্ড খুলুন
  4. কমান্ড ফোল্ডারের অভ্যন্তরে একটি পাঠ্য সম্পাদক দিয়ে runserver.py স্ক্রিপ্ট খুলুন
  5. ডিএফএএলএইএফএইএলপিআর ফিল্ডটি সন্ধান করুন। এটি ডিফল্ট হিসাবে 8000 এর সমান। এটি আপনার পছন্দমতো পরিবর্তন করুন DEFAULT_PORT = "8080"
  6. আপনার সার্ভারটি পুনঃসূচনা করুন: পাইথন ম্যানেজ.পি রানসরভার এবং দেখুন এটি আপনার সেট পোর্ট নম্বরটি ব্যবহার করে

এটি পাইথন ২.7 নিয়ে কাজ করে তবে এটি পাইথনের আরও নতুন সংস্করণগুলির সাথেও কাজ করা উচিত। শুভকামনা


11
এটি এখানে সবার সবচেয়ে খারাপ পরামর্শ। আইএমএইচও, বিতরণ থেকে কোনও ফাইল সম্পাদনা করা কখনই ভাল ধারণা নয় এবং বিভ্রান্তির দিকে নিয়ে যায় কারণ পরিবর্তনটি কোনও ভিসিএস দ্বারা ট্র্যাক করা হয় না এবং সহজেই ওভাররাইট হয়ে যায়।
Feuermurmel

সাইট প্যাকেজগুলিতে জ্যাঙ্গো মডিউল সম্পাদনা করার প্রস্তাব দেওয়া হয় না। এটি নতুন সংস্করণ দ্বারা আপডেট করা যেতে পারে। এছাড়াও এটি সমস্ত জ্যাঙ্গো অ্যাপ্লিকেশনগুলিকে প্রভাবিত করে।
সাথিন্দু কাভনেথ

-3

আমি একই সমস্যার সাথে লড়াই করেছিলাম এবং একটি সমাধান খুঁজে পেয়েছি। আমার ধারণা এটি আপনাকে সাহায্য করতে পারে। আপনি যখন চালান python manage.py runserver, এটি 127.0.0.1 ডিফল্ট আইপি ঠিকানা হিসাবে এবং 8000 ডিফল্ট পোর্ট নম্বর হিসাবে গ্রহণ করবে যা আপনার অজগর পরিবেশে কনফিগার করা যায়। আপনার অজগর সেটিং এ যান <your python env>\Lib\site-packages\django\core\management\commands\runserver.pyএবং 1 সেট করুন।default_port = '<your_port>'
2. Def হ্যান্ডেল এবং সেট অধীনে এই খুঁজে
if not options.get('addrport'): self.addr = '0.0.0.0' self.port = self.default_port

এখন আপনি যদি "পাইথন ম্যানেজ.পি রানসরভার" চালনা করেন তবে এটি "0.0.0.0" এ ডিফল্টরূপে চলবে:

কোডিং উপভোগ করুন .....


3
নির্ভর প্যাকেজগুলির উত্সগুলি সংশোধন করা খারাপ অভ্যাস হিসাবে বিবেচিত হয়। আপডেটগুলি / পুনরায় ইনস্টল করার সময় পরিবর্তনগুলি হারিয়ে যেতে পারে।
আরোগাচেভ

এটি ঠিক @ আরোগাচেভ, এটি কেবলমাত্র একটি বিকল্প যার মাধ্যমে আপনি ডিফল্ট বন্দর এবং হোস্ট করতে পারবেন। তবে নির্ভরশীল প্যাকেজগুলি সংশোধন করা সত্যিই ভাল অনুশীলন নয়। আপনি যখন কমান্ড প্রম্পটে আপনার সার্ভারটি চালান তখন আপনি আইপি এবং পোর্ট সেট করতে পারেন।
অমরেন্দ্র
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.