我可以在端口8000
上运行服务器,但是当我尝试将80
与
python manage.py runserver myip:80
我得到:
您无权访问该端口。
如果我使用sudo python manage.py runserver myip:80
,我会得到:
File "manage.py", line 14
) from exc
^
SyntaxError: invalid syntax
如果我在控制台中写入python
,则会得到3.5.5
版本,并且我的env
被激活。
编辑:
使用sudo python3 manage.py runserver myip:80
我得到:
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named 'django'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 14, in <module>
) from exc
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
答案 0 :(得分:2)
这里发生了几件事。首先,只有特权用户(例如root
或其他通过sudo
的用户)才能绑定到1024以下的端口。
但更重要的是,manage.py runserver
should never be used in production:
请勿在生产设置中使用此服务器。它尚未经过安全审核或性能测试。 (这就是要保持的方式。我们的工作是制作Web框架,而不是Web服务器,因此,改进此服务器以使其能够处理生产环境不在Django的范围之内。)
我强烈建议您改为设置适当的网络服务器。如果您搜索“ EC2 Django”,则会找到很多如何正确执行操作的演练。
答案 1 :(得分:2)
之所以得到这个,是因为您没有使用Python3。解决此问题的最简单方法是创建一个使用python3作为python可执行文件的virtualenv。
sudo pip3 install virtualenv
virtualenv -p python3 envname
workon envname
pip install django
pip install your_other_dependencies
就像其他人所说的那样,在生产环境中运行Django网络服务器充其量是最好的选择,花一些时间建立Gunicorn / Nginx(或适当的替代品)将长期获得收益。