gpt4 book ai didi

python - 如何在端口 443 和 80 linux - Ubuntu 或 Raspberry PI 上运行 Django Web 应用程序?

转载 作者:行者123 更新时间:2023-12-04 15:54:44 24 4
gpt4 key购买 nike

我是 Django 的新手。我想我不能以 sudo 的身份运行 django 应用程序,因为所有与 pip 相关的模块都是为用户安装的,而不是为 sudo 用户安装的。所以,这是一个基本问题,比如我如何运行可以监听端口 80 和端口 443 的 django 应用程序。

到目前为止,我已经尝试了以下选项 - 即预路由 - NAT

我使用以下命令运行我的应用程序 -

$python manage.py runserver 
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

September 13, 2018 - 03:04:41
Django version 2.1.1, using settings 'WebBlogger.settings'
Starting development server at http://127.0.0.1:8000/

接下来,这是我的 iptables 设置,虽然对我没有任何作用

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000

$sudo iptables -t nat --line-numbers -n -L
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
2 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8000

Chain INPUT (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1 DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
2 RETURN all -- 192.168.122.0/24 224.0.0.0/24
3 RETURN all -- 192.168.122.0/24 255.255.255.255
4 MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
5 MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
6 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

Chain DOCKER (2 references)
num target prot opt source destination
1 RETURN all -- 0.0.0.0/0 0.0.0.0/0

我做了 http://我看到连接被拒绝。我不知道如何调试 NAT 的东西,不管它是否真的命中 NAT。我该如何调试以及正确的解决方案是什么?

最佳答案

您不会直接与 Django 应用对话。虽然 Django 有一个简单的开发服务器,可通过 runserver 命令使用,但它仅用于开发工作。

你想要的是设置一个 WSGI 服务器来运行你的应用程序和一个网络服务器来接受实际的用户请求并将它们代理到 WSGI。常用的WSGI服务器(不用管WSGI是什么)有gunicorn和uWSGI。两者都可以使用 PIP 安装,您不必以与您的应用程序相同的用户身份安装它们。 Gunicorn 更容易使用,所以我会推荐那个。现在最常见的网络服务器是 Nginx。

此外,您应该将您的应用程序打包到一个虚拟环境中,这样您就可以将它与所有依赖项打包在一起,而无需依赖已安装所有内容的特定系统。

这里有一份关于如何执行此操作的有些过时的指南。不过,它应该大部分是准确的,并且是一个很好的起点 https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04

关于python - 如何在端口 443 和 80 linux - Ubuntu 或 Raspberry PI 上运行 Django Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com