如何在使用gunicorn和nginx时重新启动或重新加载Django

lf3rwulv  于 2023-03-04  发布在  Go
关注(0)|答案(1)|浏览(248)

我最近开始学习Django,我还是个新手,我刚在Ubuntu 20服务器上安装了带有gunicorn和nginx的Django,现在我正在配置我的服务器,但我找不到如何重新加载或重新启动Django,有帮助吗?
我添加了我的域到allowed_host并保存了文件,它没有重新加载配置,我需要重新启动服务器重新加载,然后我需要回到venv停止nginx启动gunicorn并再次启动nginx来工作,我不能在每次更改时都这样做,在这个主题上,我如何才能使gunicorn正确地启动nginx?

cuxqih21

cuxqih211#

你不能直接重启Django,这是Gunicorn这样的应用服务器的关键所在,在你的Ubuntu上,几乎可以肯定Gunicorn是通过systemd启动的,这意味着你需要的命令在Linux终端:
sudo systemctl restart gunicorn
这个命令将重新启动应用服务器服务,它将重新加载Django并应用您对配置所做的任何更改。
为了让Gunicorn正确地启动Nginx,您需要配置Nginx来代理对Gunicorn的请求,但是如果您制作了一个生产级服务器,无论如何,您都有可能这样做。
为此,您需要在nginx配置中的server指令中添加一个新指令:

location / {
        proxy_pass http://localhost:<your_port>;
        // optional:
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

这会将请求发送到您在localhost:<your_port>上设置的任何内容,当然,您可以选择多少个这样的内容。重要的是,您的Gunicorn服务必须在您在proxy_pass上指定的URL上提供服务。
proxy_set_header语句是可选的,但是可以用来保存关于原始请求的重要数据,这实际上甚至可以提高安全性,并且可以帮助您考虑它。

相关问题