如何在 Ubuntu 22.04 上安装 Caddy Web 服务器教程

简介

Caddy 是一个开源的 Web 服务器,它支持静态和现代 Web 应用程序,使用预定义的配置规则,并为所有链接的域名自动启用 HTTPS。Caddy 使用 GO 语言编写,提供了用户友好的配置指令,使你既可以将其用作 Web 服务器,也可以用作反向代理或负载均衡器,以便在服务器上为 Web 应用程序提供服务。

本文将介绍如何在 Ubuntu 22.04 上安装 Caddy Web 服务器,并在服务器上安全地为 Web 应用程序提供服务。

安装 Caddy

Caddy 在默认的 Ubuntu 22.04 APT 仓库中不可用,但可以通过源代码文件安装,或者在你的服务器上添加最新的仓库信息进行安装。请按照以下步骤下载最新的 Caddy 仓库信息,并在你的服务器上安装该应用程序。

  1. 将最新的 Caddy GPG 密钥添加到你的服务器。
bash 复制代码
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg--dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  1. 将 Caddy 仓库添加到你的 APT 源。
bash 复制代码
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudotee /etc/apt/sources.list.d/caddy-stable.list
  1. 更新服务器软件包索引。
bash 复制代码
sudo apt update
  1. 安装 Caddy。
bash 复制代码
sudo apt install caddy
  1. 查看已安装的 Caddy 版本,以验证安装是否成功。
bash 复制代码
caddy -v

输出:

复制代码
v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
  1. 允许通过防火墙传入 HTTP 端口 80 的连接。
bash 复制代码
sudo ufw allow 80
  1. 重启防火墙以应用更改。
bash 复制代码
sudo ufw reload
  1. 访问你的服务器 IP 以测试对 Caddy Web 服务器的访问。

    http://SERVER-IP

确认默认的 Caddy 网页在你的浏览器中显示。

管理 Caddy 系统服务

  1. 启用 Caddy 在启动时自动启动。
bash 复制代码
sudo systemctl enable caddy
  1. 启动 Caddy Web 服务器。
bash 复制代码
sudo systemctl start caddy
  1. 查看 Caddy 系统服务状态,以验证应用程序正在运行。
bash 复制代码
sudo systemctl status caddy

输出:

复制代码
● caddy.service - Caddy
     Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-06-10 14:46:16 UTC; 8min ago
       Docs: https://caddyserver.com/docs/
   Main PID: 30024 (caddy)
      Tasks: 7 (limit: 1061)
     Memory: 11.7M (peak: 13.9M)
        CPU: 138ms
     CGroup: /system.slice/caddy.service
             └─30024 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

创建 Caddy 虚拟主机

Caddy 默认将配置文件存储在 /etc/caddy 目录中,并支持从服务器上的任何位置加载 Caddyfile 配置。请按照以下步骤创建一个新的 Caddy 虚拟主机,以便从服务器上的 /var/www/example.com 目录提供 Web 应用程序文件。

  1. 创建 /var/www/example.com Web 应用程序文件目录。
bash 复制代码
sudo mkdir -p /var/www/example.com
  1. 创建一个新的 HTML 应用程序文件 index.html
bash 复制代码
sudo nano /var/www/example.com/index.html
  1. 将以下代码添加到文件中。
html 复制代码
<html>
<head>
    <title>Greetings from Vultr!</title>
</head>
<body>
    <br>
    <br>
    <br>
    <h1 align="center">Hello World!, Greetings from Vultr</h1>
</body>
</html>

保存并关闭该文件。

  1. 切换到 Caddy 配置文件目录。
bash 复制代码
cd /etc/caddy/
  1. 备份默认的 Caddyfile 配置。
bash 复制代码
sudo mv Caddyfile Caddyfile.default
  1. 创建一个新的 Caddyfile 配置。
bash 复制代码
sudo nano Caddyfile
  1. 将以下配置添加到文件中。

    example.com {
    tls [email protected]
    root * /var/www/example.com
    file_server {
    index index.html
    }
    log {
    output file /var/log/caddy/example.log
    format console
    }
    }

保存并退出该文件。

上面的 Caddy 配置使用你的域名 example.com 创建一个新的虚拟主机。在配置中:

  • example.com:使用你的 IP 地址或域名创建一个新的虚拟主机配置文件。
  • tls:指定与 Let's Encrypt SSL 证书生成请求关联的电子邮件地址。
  • root:设置虚拟主机 Web 应用程序文件目录。
  • file_server:启用 Web 应用程序文件服务器。在该指令中,index 指定在访问你的域名时要提供的默认文件。
  • log:启用将访问和错误详细信息记录到特定文件,例如 /var/log/caddy/example.log
  1. 测试 Caddy 配置是否存在错误。
bash 复制代码
caddy validate

输出:

复制代码
...........
2024/06/1 15:19:11.478 INFO    tls.cache.maintenance   started background certificate maintenance      {"cache": "0xc0000e5300"}
2024/06/1 15:19:11.478 INFO    tls.cache.maintenance   stopped background certificate maintenance      {"cache": "0xc0000e5300"}
Valid configuration
  1. 重新加载 Caddy Web 服务器以应用你的配置更改。
bash 复制代码
sudo caddy reload

保护 Caddy Web 服务器

Caddy 使用自动 HTTPS 来保护所有连接,方法是在服务器上具有有效域名的虚拟主机配置文件上使用 SSL 证书。请按照以下步骤保护 Caddy Web 服务器,方法是限制对 Caddyfile 配置的访问,以防止意外或未经授权的用户更改。

  1. 授予 Caddy 用户对 /etc/caddy 目录的完全权限。
bash 复制代码
sudo chown -R caddy:caddy /etc/caddy
  1. 授予 Caddy 用户对 Caddyfile 的读写权限,同时禁用其他系统用户的访问权限。
bash 复制代码
sudo chmod 660 /etc/caddy/Caddyfile
  1. 长列出 /etc/caddy 目录以验证权限更改。
bash 复制代码
ls -l /etc/caddy/

输出:

复制代码
total 8
-rw-rw---- 1 caddy caddy 168 Jun 2 15:20 Caddyfile
-rw-r--r-- 1 caddy caddy 769 Jun  2 12:07 Caddyfle.default

设置防火墙规则

Caddy 根据你的 Caddyfile 配置,使用 HTTP 端口 80 和 HTTPS 端口 443 在服务器上提供文件。请按照以下步骤允许所有 Caddy 端口通过防火墙,并启用与 Web 服务器的网络连接。

  1. 查看 UFW 状态并验证它是否处于活动状态。
bash 复制代码
sudo ufw status

如果状态为 inactive,则允许 SSH 端口 22 并启用 UFW。

bash 复制代码
sudo ufw allow 22 && sudo ufw enable
  1. 允许传入 HTTP 端口 80 的连接。
bash 复制代码
sudo ufw allow 80
  1. 允许传入 HTTPS 端口 443 的连接。
bash 复制代码
sudo ufw allow 443
  1. 重新加载防火墙以应用更改
bash 复制代码
sudo ufw reload
  1. 使用浏览器(如 Chrome)访问你的域名,以验证 Caddy 是否提供你的虚拟主机 Web 应用程序文件。

    https://example.com

如果你收到连接错误,请查看 Caddy 配置日志以验证错误详细信息。

结论

你已在 Ubuntu 22.04 服务器上安装了 Caddy Web 服务器,并设置了一个虚拟主机配置文件,以便在服务器上提供 Web 应用程序文件。访问 Caddy 文档 以获取更多信息和配置选项。


我的博客:https://blog.ivwv.site

相关推荐
2401_836836591 小时前
Haproxy搭建web群集
运维·服务器
恋猫de小郭1 小时前
Flutter 官方多窗口体验 ,为什么 Flutter 推进那么慢,而 CMP 却支持那么快
android·前端·flutter
C墨羽1 小时前
服务器间文件传输
运维·服务器·网络
云边有个稻草人2 小时前
智启未来:当知识库遇见莫奈的调色盘——API工作流重构企业服务美学
前端·数据库
孞㐑¥2 小时前
Linux之进程间通信
linux·c++·经验分享·笔记
love530love5 小时前
【笔记】在 MSYS2(MINGW64)中安装 python-maturin 的记录
运维·开发语言·人工智能·windows·笔记·python
yan123686 小时前
Linux 驱动之设备树
android·linux·驱动开发·linux驱动
吐泡泡_6 小时前
进程间通信(消息队列)
linux
仟濹7 小时前
【HTML】基础学习【数据分析全栈攻略:爬虫+处理+可视化+报告】
大数据·前端·爬虫·数据挖掘·数据分析·html
小小小小宇8 小时前
前端WebWorker笔记总结
前端