我有一个 django 网站设置并在 Ubuntu 上的 python 虚拟环境 (venv) 中进行配置,一切正常。现在为了在端口 80 上运行我的服务器,我需要使用不在虚拟环境上下文中执行的“sudo”,从而引发错误(即没有名为 django 的模块......)
有没有办法让“sudo”在 python 虚拟环境的上下文中执行?!
不,你不需要这样做。您不应该尝试在端口 80 上运行开发服务器;如果您要设置生产环境,请使用合适的服务器。
正如@DanielRoseman 所说,您不应该在生产中使用 Django 开发服务器。
但是如果你需要在 80 端口上运行开发服务器,你必须直接引用使用虚拟环境 python 可执行文件。
sudo ../bin/python manage.py runserver localhost:80
这应该是解决方案。 即使我真的不建议这样做。如果你在 Python 中需要 sudo,你可能走错了路。
这成功了:
$ sudo -- sh -c './venv-bin-path/activate; gunicorn <params> -b 0.0.0.0:80'