我有一个在服务器上运行的 django 应用程序。我想使用 let's encrypt 来提供加密连接。我可以使用他们的 ACME 客户端的独立选项,但我不想停止我的服务器,这是我必须做的。
所以有 webroot 选项,它与我已经运行的网络服务器(nginx)一起工作。在这种情况下,Django 会处理请求。我的问题是,在 django 方面应该如何运行(记住几个月的自动更新)?
我有一个在服务器上运行的 django 应用程序。我想使用 let's encrypt 来提供加密连接。我可以使用他们的 ACME 客户端的独立选项,但我不想停止我的服务器,这是我必须做的。
所以有 webroot 选项,它与我已经运行的网络服务器(nginx)一起工作。在这种情况下,Django 会处理请求。我的问题是,在 django 方面应该如何运行(记住几个月的自动更新)?
我不知道其他人使用什么设置,但我通常使用 Nginx 提供静态内容和 Gunicorn 作为应用程序服务器来设置 Django 应用程序。人们普遍认为 Django 应用程序通常使用这种两个 Web 服务器设置。使用 Nginx 设置 Let's Encrypt 的标准说明对我来说效果很好。
或者 Digital Ocean 也有很好的指南。
编辑:看起来 Nginx 可以进行“优雅”重新加载,只需更新配置而无需停机。对于 Debian 或 Ubuntu pre Systemd,这将是sudo service nginx reload
,而对于具有 Systemd 的发行版,命令是sudo systemctl reload nginx.service
。
万一其他用户像我从谷歌那样来,这就是我改善这种情况的方法:
ACME
在运行Django
应用程序时为 Let's Encrypt创建挑战时,我对自己的选择不满意。所以,我推出了自己的解决方案并创建了一个 Django 应用程序!基本上,您可以将您的ACME
挑战作为另一个对象来管理,并且该应用程序将生成正确的端点 URL。
是的,您正在安装一个应用程序,这意味着对您的应用程序进行部署/更新,但是一旦您完成了,从长远来看,管理您的挑战要容易得多。
只需pip install django-letsencrypt
按照README
您的方式进行操作即可。