Django:错误:您没有访问该端口的权限

ckocjqey  于 2023-03-20  发布在  Go
关注(0)|答案(6)|浏览(255)

我对整个设置非常陌生,所以请友好一点。在dev上,这个命令通常没有错误,但是自从我在Django上尝试了不同的命令后,有些地方出了问题。

python manage.py runserver 0.0.0.0:80

我没有权限再使用这个端口了。我可以使用端口8080,但是当我把端口加到URL中常用主机名的末尾时,网站就不能工作了。当我使用端口80时,我从来没有把:80加到URL中。
我遇到了一个错误,我没有权限访问日志文件,但我更改了该文件的权限。现在似乎有许多事情我没有权限。
Django1.8.5。使用虚拟环境,我在项目中有2个应用程序。

vdgimpew

vdgimpew1#

如果您使用的是Linux,则会收到此错误。
首先,Django没有生产服务器,只是一个非常基本的开发服务器,默认使用8080端口。
当您执行该命令时

python manage.py runserver

你告诉django启动它的开发服务器,它就运行了,这样你就可以在部署到生产服务器之前测试你的web应用。
Django文档-〉django-admin -〉运行服务器
访问服务器的方法是使用浏览器并在地址栏中插入URL,如下所示

localhost:8080

默认情况下,大多数HTTP应用程序运行在端口80上,除非另有说明。2例如,MySQL服务器默认情况下运行在端口3306上。
基本上,您可以将端口看作是老式的电话线,它将您连接到您希望与之通信的任何人。
其实这些都没什么特别的,你应该先玩瓶子,把基本的东西弄下来;只是一个友好建议。
你可以在网站上深入了解细节,虽然不安全,你可以使用sudo在端口80上运行,但出于安全考虑,你应该避免使用它。
@mtt2p提到了一篇serverfault文章,它很好地解释了为什么
我相信有一种方法可以告诉服务器只允许本地连接,但是当你想向其他人展示你的工作或者想看看你的web应用在其他设备上的样子时,你应该只使用0.0.0.0:80。

从长远来看,sudo只是更简单、更快捷,但却很懒惰、不安全。

这是一个链接,在virtualenv的上下文中解释了它。
Django runserver error when specifying port
答案是
我猜sudo命令将在超级用户上下文中运行该进程,而超级用户上下文中缺少virtualenv设置。
创建一个shell脚本来设置virtualenv并调用manage.pyrunserver,然后使用sudo命令来执行此脚本。
您应该注意到,解释基于virtualenv的上下文的答案也是不安全的。

sudo python manage.py runserver 80

sudo bash script-name

这样做会破坏应用程序沙盒的目的。如果忽略这一点,您将暴露给race condition

9avjhtql

9avjhtql2#

我使用的是Xubuntu 20.04版本,我使用这个命令(因为我有一个python env):

$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80

为了知道你的envspython文件夹在哪里,我做了:

$ which python
kx1ctssn

kx1ctssn3#

sudo python manage.py runserver 0.0.0.0:80

你需要端口80的管理员权限

5m1hhzi4

5m1hhzi44#

我设置了一个名为“aira”的virtualenv,并在根环境中安装了virtualenvwrapper(我在/root/.bashrc中的virtualenvwrapper设置在底部),这减少了我需要级联到-c以使runserver工作的sudo命令的数量:

sudo sh -c "workon aira && python manage.py runserver --insecure 0.0.0.0:80"

如果你设置了django应用的virtualenv而没有设置virtualenvwrapper,你需要手动切换到正确的目录,并在sudo命令序列中激活virtualenv.我的virtualenv名为aira,我把virtualenv保存在/root/.virtualenvs中.我的django项目在ubuntu用户的主目录中:

sudo sh -c "source $HOME/.virtualenvs/aira/bin/activate && cd /ubuntu/src/aira/ && python manage.py runserver --insecure 0.0.0.0:80"

如果你已经在 system site packages 中安装了django和requirements.txt文件,那么你可以使用sudo来运行服务器。

sudo python manage.py runserver --insecure 0.0.0.0:80"

--insecure选项允许staticfiles服务于你的静态资产(图片,css,javascript)。
为了完整起见,下面是我在Ubuntu 16.04上/root/.bashrc中的virtualenvwrapper配置变量:

# python3 is used for virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 

# *root* reuses the virtualenvs in *ubuntu*'s home directory
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=/home/ubuntu/src

source /usr/local/bin/virtualenvwrapper.sh
k7fdbhmy

k7fdbhmy5#

sudo ./venv/bin/python manage.py runserver 80

roejwanj

roejwanj6#

下面帮助我纠正同样的错误:
在windows命令行中:
净止损
净启动赢

相关问题