我最近开始学习Django,我还是个新手,我刚在Ubuntu 20服务器上安装了带有gunicorn和nginx的Django,现在我正在配置我的服务器,但我找不到如何重新加载或重新启动Django,有帮助吗?我添加了我的域到allowed_host并保存了文件,它没有重新加载配置,我需要重新启动服务器重新加载,然后我需要回到venv停止nginx启动gunicorn并再次启动nginx来工作,我不能在每次更改时都这样做,在这个主题上,我如何才能使gunicorn正确地启动nginx?
cuxqih211#
你不能直接重启Django,这是Gunicorn这样的应用服务器的关键所在,在你的Ubuntu上,几乎可以肯定Gunicorn是通过systemd启动的,这意味着你需要的命令在Linux终端:sudo systemctl restart gunicorn这个命令将重新启动应用服务器服务,它将重新加载Django并应用您对配置所做的任何更改。为了让Gunicorn正确地启动Nginx,您需要配置Nginx来代理对Gunicorn的请求,但是如果您制作了一个生产级服务器,无论如何,您都有可能这样做。为此,您需要在nginx配置中的server指令中添加一个新指令:
sudo systemctl restart gunicorn
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语句是可选的,但是可以用来保存关于原始请求的重要数据,这实际上甚至可以提高安全性,并且可以帮助您考虑它。
localhost:<your_port>
proxy_pass
proxy_set_header
1条答案
按热度按时间cuxqih211#
你不能直接重启Django,这是Gunicorn这样的应用服务器的关键所在,在你的Ubuntu上,几乎可以肯定Gunicorn是通过systemd启动的,这意味着你需要的命令在Linux终端:
sudo systemctl restart gunicorn
这个命令将重新启动应用服务器服务,它将重新加载Django并应用您对配置所做的任何更改。
为了让Gunicorn正确地启动Nginx,您需要配置Nginx来代理对Gunicorn的请求,但是如果您制作了一个生产级服务器,无论如何,您都有可能这样做。
为此,您需要在nginx配置中的
server
指令中添加一个新指令:这会将请求发送到您在
localhost:<your_port>
上设置的任何内容,当然,您可以选择多少个这样的内容。重要的是,您的Gunicorn服务必须在您在proxy_pass
上指定的URL上提供服务。proxy_set_header
语句是可选的,但是可以用来保存关于原始请求的重要数据,这实际上甚至可以提高安全性,并且可以帮助您考虑它。