我对整个设置非常陌生,所以请友好一点。在dev上,这个命令通常没有错误,但是自从我在Django上尝试了不同的命令后,有些地方出了问题。
python manage.py runserver 0.0.0.0:80
我没有权限再使用这个端口了。我可以使用端口8080,但是当我把端口加到URL中常用主机名的末尾时,网站就不能工作了。当我使用端口80时,我从来没有把:80加到URL中。
我遇到了一个错误,我没有权限访问日志文件,但我更改了该文件的权限。现在似乎有许多事情我没有权限。
Django1.8.5。使用虚拟环境,我在项目中有2个应用程序。
6条答案
按热度按时间vdgimpew1#
如果您使用的是Linux,则会收到此错误。
首先,Django没有生产服务器,只是一个非常基本的开发服务器,默认使用8080端口。
当您执行该命令时
你告诉django启动它的开发服务器,它就运行了,这样你就可以在部署到生产服务器之前测试你的web应用。
Django文档-〉django-admin -〉运行服务器
访问服务器的方法是使用浏览器并在地址栏中插入URL,如下所示
默认情况下,大多数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的上下文的答案也是不安全的。
不
这样做会破坏应用程序沙盒的目的。如果忽略这一点,您将暴露给race condition。
9avjhtql2#
我使用的是Xubuntu 20.04版本,我使用这个命令(因为我有一个python env):
为了知道你的envspython文件夹在哪里,我做了:
kx1ctssn3#
你需要端口80的管理员权限
5m1hhzi44#
我设置了一个名为“aira”的
virtualenv
,并在根环境中安装了virtualenvwrapper
(我在/root/.bashrc中的virtualenvwrapper设置在底部),这减少了我需要级联到-c
以使runserver工作的sudo命令的数量:如果你设置了django应用的
virtualenv
而没有设置virtualenvwrapper
,你需要手动切换到正确的目录,并在sudo命令序列中激活virtualenv
.我的virtualenv名为aira
,我把virtualenv保存在/root/.virtualenvs
中.我的django项目在ubuntu用户的主目录中:如果你已经在 system site packages 中安装了django和requirements.txt文件,那么你可以使用sudo来运行服务器。
--insecure
选项允许staticfiles
服务于你的静态资产(图片,css,javascript)。为了完整起见,下面是我在Ubuntu 16.04上
/root/.bashrc
中的virtualenvwrapper配置变量:k7fdbhmy5#
sudo ./venv/bin/python manage.py runserver 80
roejwanj6#
下面帮助我纠正同样的错误:
在windows命令行中:
净止损
净启动赢