Django:错误:您无权访问该端口

新手上路,请多包涵

我对整个设置非常陌生,所以请保持友好。在 dev 上,该命令通常可以正常工作,但由于我一直在为 Django 尝试不同的命令,所以有些地方出了问题。

 python manage.py runserver 0.0.0.0:80

我无权再使用此端口。我可以使用端口 8080,但是当我将该端口添加到 url 中常用主机名的末尾时,网站无法正常工作。当我使用端口 80 时,我从来不需要在 url 中添加 :80 。

我有一个错误,我没有日志文件的权限,但我更改了该文件的权限。似乎现在有很多我没有权限的东西。

姜戈 1.8.5。使用虚拟环境,我在项目中有 2 个应用程序。

原文由 Helpme 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 951
1 个回答

如果您使用的是 Linux,则会收到此错误。

首先, Django 没有生产服务器,只有一个非常基本的开发服务器,默认使用端口 8080。

当你执行命令时

python manage.py runserver

你告诉 django 启动它的开发服务器并运行它,这样你就可以在部署到生产服务器之前测试你的网络应用程序。

Django 文档 -> django-admin -> 运行服务器

访问服务器的方法是使用浏览器并在地址栏中插入URL

 localhost:8080

默认情况下,大多数 HTTP 应用程序在端口 80 上运行,除非另有说明。例如,您的 MySQL 服务器默认可以在端口 3306 上运行。

基本上,您可以将端口视为老式电话线,将您连接到您想要与之通信的人。

这些都没有什么特别的。您可能应该先玩瓶子来了解基础知识;只是一个友好的建议。

您可以深入了解网站上的详细信息。虽然 不安全,但您可以使用 sudo 在端口 80 上运行,但出于安全原因,您应该避免使用它。

@mtt2p 提到了一个 serverfault 帖子,它很好地解释了为什么

我确信有一种方法可以告诉服务器只允许本地连接,但是当你想向其他人展示你的工作或查看你的网络应用程序在其他设备上的样子时,你应该只使用 0.0.0.0:80。

从长远来看, sudo 只是更容易和更快,但懒惰和不安全。

这是一个在 virtualenv 上下文中解释它的链接。

指定端口时Django runserver错误

答案是

我猜 sudo 命令将在超级用户上下文中运行该进程,而超级用户上下文缺少 virtualenv 设置。

制作一个 shell 脚本来设置 virtualenv 并调用 manage.py runserver,然后 sudo 这个脚本。

您应该注意,解释基于 virtualenv 的上下文的答案也是不安全的。它应该运行为

sudo python manage.py runserver 80

不是

sudo bash script-name

在 virtualenv 之外。这样做会破坏对您的应用程序进行沙盒处理的目的。如果你忽略这一点,你就会让自己暴露在 竞争条件下

原文由 user3159377 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题