无法在端口80上运行Ec2服务器

时间:2018-09-25 16:40:05

标签: python django linux amazon-ec2 centos

我可以在端口8000上运行服务器,但是当我尝试将80python 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?

2 个答案:

答案 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(或适当的替代品)将长期获得收益。