本文将以简明教程形式,指导您在Ubuntu系统上安装并运行新一代Web服务器Caddy。
相比传统Nginx与Apache,Caddy凭借两大核心优势脱颖而出:原生HTTPS自动证书管理能力与极简反向代理配置流程。
Caddy 的一个关键特色是原生HTTPS 支持。它会自动为您的网站获取证书并在需要时续订,无需任何人工干预。这种内置的 HTTPS 功能非常实用,特别是当您运行多个域名或允许其他用户将域名指向您的 Caddy 服务器时。
除了 HTTPS 功能外,Caddy 也是在 Ubuntu 上轻松设置反向代理的绝佳解决方案。
在 Ubuntu 上设置和安装 Caddy 实际上非常简单,并不比其他 web 服务器更复杂。在本指南中,我们将指导您完成以下步骤:
如果您打算在家庭中的 Ubuntu 服务器上运行 Caddy,请先完成以下步骤:
1.确保 Ubuntu 上有静态 IP 地址。
2.将端口 80 和 443 转发到您的 Ubuntu 系统。这些是必需的,因为 Caddy 需要使用它们来获取 SSL 证书。
3.如果 Ubuntu 上运行了防火墙,必须打开端口 80 和 443。如果您不确定如何操作,我们有一篇关于如何使用 UFW 的指南。
在 Ubuntu 上安装和运行 Caddy
在接下来的几节中,我们将引导您完成在 Ubuntu 上安装和运行最新版本的 Caddy 的简单步骤。
这些步骤适用于任何仍在积极维护的 Ubuntu 版本。我们将以 Ubuntu 24.04 为例,介绍如何安装 Caddy。
准备 Ubuntu
1.在开始安装 Caddy 之前,我们应该先完成几项任务。
首先是更新软件包列表缓存,并使用以下两条命令升级任何过时的软件包。
sudo apt updatesudo apt upgrade -y
2.安装运行 Caddy 所需的额外软件:
确保 curl 和 wget 包已安装。您可以通过在终端中运行以下命令来完成此操作:
sudo apt install curl
将 Caddy 包仓库添加到 Ubuntu
3.下载 Caddy 仓库的 GPG 密钥:
GPG 密钥是 APT 包管理器验证其下载的包的方式。使用以下命令在终端中检索此密钥:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
4.添加 Caddy 仓库:
使用以下命令将 Caddy 仓库添加到您的系统:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
5.更新包列表缓存:
使用以下命令更新缓存,以便 APT 包管理器知道可以从新仓库下载包:
sudo apt update
在 Ubuntu 上安装 Caddy
6.使用以下命令在终端中安装 Caddy:
sudo apt install caddy
7.安装完成后,Caddy 会立即启动,这意味着您现在可以在浏览器中访问 Ubuntu 设备的 IP 地址,以检查 Caddy 是否已在 Ubuntu 系统上运行。
使用以下命令获取 IP 地址:
hostname -I
8.在浏览器中访问以下地址(将 替换为您的 Ubuntu 设备的 IP 地址):
http://
9.由于我们当前正在运行随 Caddy web 服务器附带的 Caddyfile,因此您应该在屏幕上看到以下内容,表明 Caddy 已在 Ubuntu 上成功设置并准备进行配置。
创建示例网站
10.创建一个目录来存储 HTML 文件:
使用 mkdir 命令创建一个目录,您可以在其中存储 HTML 文件。运行以下命令(将 替换为您打算使用的域名):
sudo mkdir -p /var/www//html
11.编写 HTML 文件:
使用以下命令开始编写 HTML 文件(这里使用 Nano,但您可以使用任何文本编辑器):
sudo nano /var/www/
12.在文件中输入以下内容:
html> <2;title>Hello Worldtitle> head>
Hello World from PiMyLifeUpp> body>html>
13.完成后,按 CTRL + X,然后按 Y,最后按 ENTER 保存并退出。
创建自定义 Caddyfile
14.现在我们已经将一些基本的HTML保存到了Ubuntu系统中,接下来需要调整Caddy配置,以便其能够从我们刚刚创建的目录中提供文件服务。为此,我们将编写自己的Caddyfile,并放弃在安装Caddy时Ubuntu附带的那个Caddyfile
Caddyfile的作用类似于Apache中的虚拟主机和Nginx中的服务器块。基本上,它定义了网站的结构以及Web服务器应该如何处理该网站。你可以使用以下命令删除随Caddy安装附带的基本Caddyfile。
sudo rm /etc/caddy/Caddyfile
15.编写自定义 Caddyfile:
Caddyfile 类似于 Apache 中的虚拟主机和 Nginx 中的服务器块。它是定义网站和 web 服务器如何处理它的方式。
使用以下命令在 Ubuntu 上开始编写新的 Caddyfile:
sudo nano /etc/caddy/Caddyfile
16. 现在,在这个文件中,你需要输入以下行。我们将逐步解释这些内容,以便你简要了解Caddy如何使用这些文件来设置Web服务器。
a. 你计划在Ubuntu上使用Caddy托管的每个网站都应该有自己的代码块。代码块是通过地址后跟左大括号符号({)来定义的。地址实际上可以是几种不同的内容之一。我们将介绍其中的几个,但你可以在Caddy网站上找到完整列表。
https://caddyserver.com/docs/caddyfile/concepts#addresses
域名(example.com):通过使用域名,Caddy将监听该特定的主机名,并尝试为其生成一个受公众信任的证书。
IP地址(192.168.0.1):如果你指定了一个IP地址,Caddy将为你的网站生成一个自签名证书。这基本上意味着每次加载你的网站时都会收到警告,但它仍然可以使用HTTPS。
localhost:Caddy也可以设置为仅向本地机器提供Web内容。当将地址设置为localhost时,只有你的Ubuntu设备才能访问Caddy提供的内容。就像使用IP地址一样,Caddy将生成一个自签名证书,以便你的Web流量仍然可以被加密。
协议(http:// 或 https://):通过将地址设置为http或https协议,Caddy将使用此代码块作为捕获所有内容的代码块。如果没有设置主机名,它将落入此代码块。如果你使用的是“https://”,则Caddy将尝试为任何传入的流量生成有效的证书。
b. 现在在这个代码块中,你可以做几件事情。Caddy的主要用途有两个:设置反向代理或从特定目录提供服务。
对于这个示例,我们将设置Ubuntu上的Caddy Web服务器,以从“/var/www//html”目录提供文件。
我们只需要输入以下行。通过指定星号符号(*),Caddy将使用此目录来处理所有传入的请求。理论上,你可以根据传入的请求设置不同的文件夹。
root * /var/www//html
c. Caddy Web服务器内置了许多功能。其中之一就是它的文件服务器。
此文件服务器允许Caddy轻松地从你选择的根目录提供静态文件。如果你愿意,甚至可以通过在此行末尾添加一个空格和“browse”来使你的目录可浏览。
file_server
d. 这就是我们在Ubuntu上使用Caddy设置和提供静态网站所需的全部内容。
我们需要做的最后一件事是通过在末尾添加一个右大括号符号来结束这个新的服务器代码块。
}
17.下面是一个有效的Caddyfile在填写完文件后可能的样子。
Caddy Web服务器能够做更多的事情,但对于我们在Ubuntu上安装它的基本指南来说,这将足以验证一切是否正常工作。在我们的示例中,你可以看到我们正在使用localhost。
localhost { root * /var/www/localhost/html file_server}
18.编写完Caddyfile后,按CTRL + X、Y,然后按ENTER保存并退出。
测试你的新Ubuntu Caddy Web服务器
19.尽管我们已经重写了Caddyfile,但Caddy Web服务器本身将完全不知道这一点。
幸运的是,让Caddy加载更新后的文件非常简单,我们只需要在你的Ubuntu系统上运行下面的命令即可。
sudo systemctl reload caddy
20.一旦Caddy Web服务器完成重新加载,你只需在你最喜欢的Web浏览器中输入你指定的域名即可。
如果一切正常,并且你已经设置了一个有效的域名,Caddy还应该自动为你获取一个有效的SSL证书。
https://
21.在下面,你可以看到Web服务器现在正在提供我们之前保存的超级简单的HTML文件。这表明Caddy在Ubuntu上正常工作。
结论
希望如果你已经阅读到本指南的这一部分,你将已经成功地在Ubuntu上启动并运行了Caddy Web服务器。
Caddy是一个很棒的Web服务器,尤其是在处理HTTPS时。尽管它比竞争对手(如Nginx)稍慢一些,但其额外的内置功能可能非常有用,尤其是在处理多个域名或设置反向代理时。
全部0条评论
快来发表一下你的评论吧 !