我对这整个设置都很陌生,所以请你好。 在dev上,命令通常没有错误,但由于我一直在尝试使用不同的Django命令,因此出错了。
python manage.py runserver 0.0.0.0:80
我无权再使用此端口。我可以使用端口8080但是当我将端口添加到url中常用主机名末尾时,网站不起作用。当我使用端口80时,我从来没有必要添加:80到网址。
我有一个错误,我没有对日志文件的权限,但我更改了该文件的权限。现在似乎有很多我没有权限的东西。
Django 1.8.5。 使用虚拟环境,我在项目中有2个应用程序。
答案 0 :(得分:2)
如果您使用Linux,则会收到此错误。
首先, Django没有生产服务器,只是一个非常基本的开发服务器,默认使用端口8080。
执行命令时
python manage.py runserver
你告诉django启动它的开发服务器并运行它,这样你就可以在部署到生产服务器之前测试你的web应用程序。
Django Documentation -> django-admin -> Run Server
访问服务器的方法是使用浏览器并插入地址栏中的URL
localhost:8080
默认情况下,除非另有说明,否则大多数HTTP应用程序在端口80上运行。例如,您的MySQL服务器默认情况下可以在端口3306上运行。
基本上,您可以将端口视为旧学校的电话线路,将您与想要与之通信的人联系起来。
这些都没有什么特别之处。你可能应该先玩瓶子来先掌握基础知识;只是一个友好的建议。
您可以深入了解网站上的详细信息。虽然不安全,但您可以使用sudo
在端口80上运行,但出于安全考虑,您应该避免使用它。
@ mtt2p提到serverfault帖子,该帖子可以很好地解决原因
我确定有一种方法可以告诉服务器只允许本地连接,但是当你想向其他人展示你的作品或者看看你的作品时,你应该只使用0.0.0.0:80网络应用程序在其他设备上看起来像。
从长远来看,sudo
更容易,更快,但又懒惰且不安全。
这是一个在virtualenv的背景下解释它的链接。
Django runserver error when specifying port
答案说明
我猜sudo命令会在超级用户中运行该进程 上下文,超级用户上下文缺少virtualenv设置。
创建一个shell脚本来设置virtualenv并调用manage.py runserver,然后sudo这个脚本。
您应该注意,解释基于virtualenv的上下文的答案也是不安全的。它应该只是作为
运行sudo python manage.py runserver 80
不
sudo bash script-name
在virtualenv之外。这样做会使打破你的应用程序的目的失败。如果你忽略了这一点,你就会将自己暴露给race condition。
答案 1 :(得分:1)
sudo python manage.py runserver 0.0.0.0:80
您需要端口80的管理员权限
答案 2 :(得分:1)
我设置了一个名为“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
,我将我的virtualenvs保留在/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"
如果您已在系统站点包中安装了django和requirements.txt,那么您可以使用sudo来运行runserver。
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
答案 3 :(得分:1)
我在 Xubuntu 20.04 版本,我使用这个命令(因为我有一个 python 环境):
$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80
为了知道你的 envs python 文件夹在哪里,我做到了:
$ which python