作者在你提到的文章Prerequisites section中列举了应用的不同需求:
要学习本教程,您需要:
- 一个域名
- 安装了 Docker 和 Docker Compose 的正在运行的 Linux 虚拟机
您的应用程序将部署在哪里(AWS EC2、Google Compute Engine、Digital
Ocean、Linode 都是可行的选择)
需要一个便宜的域名来练习吗?一些域名注册商已经
'.xyz' 域名的特价商品。或者,您可以创建一个免费域
在 Freenom。
总而言之,您首先需要一台可以运行容器的机器。
这台机器应该可以访问互联网,以允许我们加密和相关的机器人处理您的 SSL 证书。
事实上,您可以使用 Windows 或 Linux 机器,但为了简单起见,与 Docker 深度集成和许可目的,免费的 Linux 版本(例如 Ubuntu 或 Debian)应该更合适。
这台机器可以托管在您认为合适的地方。如今,正如文章中所建议的那样,您可以在任何不同的公共云提供商、AWS、GCP 或 Azure 中轻松启动这样的机器。
在这台机器上应该已经安装了docker。
假设您使用的是 Ubuntu,例如,您可以按照 this excellent guide 安装 docker 软件。
你还需要安装docker-compose。
这实际上与您遇到的另一个问题有关,即您如何连接到这台 Linux 机器。
首先,这实际上取决于您用于启动实例的提供程序。
您可能需要配置某种防火墙软件,以允许您的 Django Web 应用程序通过 SSH、端口 22 和 HTTP/S、端口 80 和 443 连接到机器。请注意这里,至少乍一看,将可以连接到实例的 IP 地址限制为您自己的 IP 地址,这对于 SSH 端口尤其重要。
假设您有连接,您需要一个可以通过 SSH 与这台机器通信的客户端。
在 Windows 中,您很可能会使用 Putty。
网络上有很多关于 Putty 及其使用方法的教程:例如 this one。
使用提供的命令连接到机器:
ssh user@your-ip-or-domain
并安装所需的软件。
之后,按照文章中的说明,上传软件(可以使用WinSCP来执行此步骤):
scp -r $(pwd)/{app,nginx,.env.staging,.env.staging.db,.env.staging.proxy-companion,docker-compose.staging.yml} user@your-ip-or-domain:/path/to/django-on-docker
并运行容器:
cd /path/to/django-on-docker
docker-compose -f docker-compose.staging.yml up -d --build
现在,要使用 let's encrypt,你需要为这台机器分配一个 DNS 记录,它可以验证:相反,你可能无法使用 SSL。
可以通过不同的方式分配此 DNS:您只需要机器的 IP 地址和一些 DNS 提供商。其中有很多,例如 AWS Route 53、GCP DNS 或 Azure DNS、GoDaddy 等(例如,请参阅 this)。我从未使用过该服务,但您可能可以使用 Freenom 以及文章中的建议。
配置完成后,作为 nginx 伴侣安装的 certbot 将使其工作并颁发必要的证书。