我如何在不停止服务器的情况下使用 let's encrypt behind django 应用程序?

How could i use let's encrypt behind a django application without stopping the server?

我在服务器上有一个 Django 应用程序 运行。我想使用 let's encrypt 来提供加密连接。我可以使用他们的 ACME 客户端的独立选项,但我不想停止我的服务器,我必须这样做。

所以有 webroot 选项,它可以与我现成的 运行 网络服务器 (nginx) 一起使用。在这种情况下,Django 将处理请求。我的问题是,在 django 方面应该如何获得这个 运行(记住几个月的自动更新)?

我不知道其他人使用什么设置,但我通常设置 Django 应用程序,其中 Nginx 提供静态内容,Gunicorn 作为应用程序服务器。人们普遍认为 Django 应用程序通常使用这种两个 Web 服务器设置。使用 Nginx 设置 Let's Encrypt 的标准说明对我来说效果很好。

或者Digital Ocean也有优秀的guide

编辑:看起来 Nginx 可以执行 "graceful" 重新加载,只更新配置而无需停机。对于 Debian 或 Ubuntu pre Systemd,这将是 sudo service nginx reload,而对于带有 Systemd 的发行版,命令是 sudo systemctl reload nginx.service.

以防其他用户像我从 Google 那样来这里,这是我改进这种情况的方法:

在运行创建 Django 应用程序时,我对为 Let's Encrypt 创建 ACME 挑战时的​​选择不满意。 So, I rolled my own solution and created a Django app! 基本上,您可以将 ACME 挑战当作另一个对象来管理,应用程序将生成正确的终点 URL。

是的,您正在安装一个应用程序,这意味着对您的应用程序进行部署/更新,但是一旦完成,从长远来看,管理您的挑战会容易得多 运行。

只需 pip install django-letsencrypt and follow the README 就可以了。