django 更改默认运行服务器端口

Posted

技术标签:

【中文标题】django 更改默认运行服务器端口【英文标题】:django change default runserver port 【发布时间】:2014-07-01 14:09:01 【问题描述】:

我想让manage.py runserver 侦听的默认端口可以在无关的config.ini 中指定。有比在manage.py 中解析sys.argv 并插入配置的端口更简单的解决方法吗?

目标是运行./manage.py runserver,而不必每次都指定地址和端口,而是让它从config.ini 获取参数。

【问题讨论】:

如果您从命令行历史记录运行该命令,那么击键次数会更少。例如。对我来说它是“runs”,它会自动运行与上次相同的命令,因此包括端口等。 【参考方案1】:

对于 Django 3.x,只需更改 settings.py 中的 default_port。像这样:

from decouple import config
import django.core.management.commands.runserver as runserver

runserver.Command.default_port = config('WebServer_Port', default = "8088")

然后,如果你想指定端口,只需在你的 setting.ini 中添加一个新行

[settings]
WebServer_Port=8091

如果不是,删除这个参数。

【讨论】:

【参考方案2】:

首先你为应用应用迁移

python manage.py migrate

然后:

python manage.py runserver <your port>

在浏览器中运行 127.0.0.1:(你的端口)

【讨论】:

【参考方案3】:

您可以尝试像这样在manage.py 中添加参数

python manage.py runserver 0.0.0.0:5000 

python manage.py runserver &lt;your IP&gt;:&lt;port&gt;

或者你像这样通过端口

python manage.py runserver 5000

python manage.py runserver &lt;your port&gt;

【讨论】:

【参考方案4】:

在 Pycharm 中,您可以简单地将端口添加到参数中

【讨论】:

【参考方案5】:

如果您想更改默认配置,请按照以下步骤操作:

    打开终端类型命令

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
    

    现在以超级用户身份在 nano 编辑器中打开 runserver.py 文件

     $ sudo nano runserver.py
    

    找到'default_port'变量然后你会看到默认端口号是'8000'。现在您可以将其更改为您想要的任何内容。

    现在退出并使用“CTRL + X 和 Y 保存文件”保存文件

注意:将 .x 替换为您可用的 python 版本

【讨论】:

【参考方案6】:

以下所有命令都可以在运行 django 时更改端口:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000

【讨论】:

"目标是运行./manage.py runserver,而不必每次都指定地址和端口"【参考方案7】:

创建django.core.management.commands.runserver.Command 的子类并覆盖default_port 成员。将文件另存为您自己的管理命令,例如&lt;app-name&gt;/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

我在这里加载默认的端口表单设置(它会读取其他配置文件),但您也可以直接从其他文件中读取它。

【讨论】:

这似乎是最好的解决方案,但是,我的 Django 1.8.14 无法识别我自己创建的文件runserver.py。我应该在某个地方注册吗? @physicalattraction 您的文件可能不在正确的位置。 docs.djangoproject.com/en/2.0/howto/custom-management-commands 首先描述了在哪里放置 runserver 命令的 python 模块。另外,也许您还有另一个应用程序注册了一个名为runserver 的命令。尝试重命名您的命令,看看它是否被识别。 我把它放在&lt;app_name&gt;/management/commands/runserver.py,但是后来使用了Django原来的runserver。当我将其重命名为 run_server.py 时,它被识别。在您链接到的页面上,我没有看到关于 runserver 的任何特别之处。 问题是staticfiles 完全按照您的suggest 行事。因此,按照您的指示会中断在开发中提供静态文件。最好从django.contrib.staticfiles.management.commands导入。【参考方案8】:

实际上,在开发 Django 服务器中更改(仅)端口的最简单方法是:

python manage.py runserver 7000

应该在http://127.0.0.1:7000/上运行开发服务器

【讨论】:

这个答案是关于更改端口,而不是更改默认端口。 这应该是正确的答案,接受的也意味着IP地址,并且出于某种原因执行manage.py,而不是通过python调用它【参考方案9】:

    在你的 .bashrc 中创建环境变量

    导出 RUNSERVER_PORT=8010

    创建别名

    别名 runserver='django-admin runserver $RUNSERVER_PORT'

我正在使用 zsh 和 virtualenvs 包装器。我将导出放在项目后激活脚本中,并为每个项目分配端口。

workon someproject
runserver

【讨论】:

【参考方案10】:

从 Django 1.9 开始,我发现的最简单的解决方案(基于 Quentin Stafford-Fraser 的解决方案)是在 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)

【讨论】:

虽然它没有准确回答原始问题,并且缩进很混乱(代码应该从“import django”开始缩进),但我更喜欢这个答案,因为它是完全独立的并且不需要更改在命令行中输入的内容。 @PurpleDiane 缩进是固定的。 我的 manage.py 看起来并不像那样,我猜 Django 改变了 目前(从 2.0.3 开始)您只需将:from django.core.management.commands.runserver import Command as runserver; runserver.default_port = "8080 添加到您的 manage.py。您也可以更改收听地址:runserver.default_addr【参考方案11】:

我在同样的问题上苦苦挣扎并找到了一种解决方案。我想它可以帮助你。 当您运行python manage.py runserver 时,它将采用 127.0.0.1 作为默认 IP 地址和 8000 作为默认端口号,可以在您的 python 环境中配置。 在您的 python 设置中,转到&lt;your python env&gt;\Lib\site-packages\django\core\management\commands\runserver.py 并设置 1.default_port = '&lt;your_port&gt;' 2.在def句柄下找到这个并设置if not options.get('addrport'): self.addr = '0.0.0.0' self.port = self.default_port

现在,如果您运行“python manage.py runserver”,它将默认在“0.0.0.0:”上运行:

享受编码.....

【讨论】:

修改依赖包的来源被认为是不好的做法。更新/重新安装时更改可能会丢失。 没错@arogachev,这只是一个选项,您可以通过它设置默认端口和主机。但是修改依赖包确实不是一个好习惯。您也可以在命令提示符下运行服务器时设置 IP 和端口。【参考方案12】:

我在这里聚会很晚了,但是如果您使用像 PyCharm 这样的 IDE,在“运行”菜单(运行 > 编辑配置)下的“编辑配置”中有一个选项,您可以在其中指定默认端口。这当然只有在您通过 PyCharm 调试/测试时才有意义。

【讨论】:

【参考方案13】:

我们创建了一个新的“runserver”管理命令,它是标准命令的精简包装,但更改了默认端口。粗略地说,您创建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

【讨论】:

【参考方案14】:

这是一篇旧文章,但对于那些感兴趣的人来说:

如果您想更改默认端口号,那么当您运行“runserver”命令时,您将从首选端口开始执行以下操作:

    找到您的 python 安装。 (您可以安装多个 python,也可以拥有虚拟环境版本,因此请确保找到正确的版本) 在 python 文件夹中找到 site-packages 文件夹。在里面你会找到你的 django 安装 打开django文件夹->核心->管理->命令 在命令文件夹中,使用文本编辑器打开 runserver.py 脚本 找到 DEFAULT_PORT 字段。默认情况下等于 8000。改成你喜欢的 DEFAULT_PORT = "8080" 重启你的服务器:python manage.py runserver 看看它使用了你设置的端口号

它适用于 python 2.7,但它也应该适用于较新版本的 python。祝你好运

【讨论】:

这是最糟糕的建议。恕我直言,从分发中编辑文件绝不是一个好主意,并且会导致混乱,因为 VCS 不会跟踪更改并且很容易被覆盖。 不建议在站点包中编辑 Django 模块。它可以通过新版本进行更新。它还影响到所有 Django 应用程序。【参考方案15】:

使用以下内容创建一个 bash 脚本:

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

将它作为 runserver 保存在与 manage.py 相同的目录中

chmod +x runserver

然后运行它

./runserver

【讨论】:

要么这样,要么我正在考虑添加自定义管理命令。 您不能以编程方式运行开发服务器,因此除非使用call 之类的方式调用shell,否则自定义命令将无法工作。如果此解决方案适合您,请确保将其标记为已解决。 我现在实际上开始使用supervisor,这使得它更易于管理。 :-) 但是除了编写专用的runserver 脚本之外,您的解决方案可能是最干净的解决方案。 Supervisor 是一个很好的解决方案,我不推荐它来运行开发环境。除其他外,您失去了在终端上拥有服务器输出的优势。如果你真的想使用 supervisor,我的建议是使用 Gunicorn 等功能齐全的 WSGI 服务器。请不要将开发服务器作为生产服务器运行... 这在同时处理多个项目时很有用但不是很好 - 我会接受下面的答案,它指定了用于每个不同项目的端口。只是我的意见。

以上是关于django 更改默认运行服务器端口的主要内容,如果未能解决你的问题,请参考以下文章

关于tomcat更改默认端口及设置运行的路径问题

更改 Dropwizard 默认端口

django的入门-----管理站点

mysql修改默认端口方法

如何更改 Hybris 服务器的端口

更改 TeamCity Web 服务器的端口