从源代码构建
如果您需要自定义构建 (例如使用插件),则有多种构建 Caddy 的选项
要求
- Go 1.20 或更高版本
“软件包支持文件”部分包含为那些在 Debian 衍生系统上使用 APT 命令安装了 Caddy,但仍需要自定义构建可执行文件以进行操作的用户提供的说明。
Git
要求
- 已安装 Go (见上文)
克隆仓库
git clone "https://github.com/caddyserver/caddy.git"
如果您没有 Git,您可以从 GitHub 下载源代码作为文件存档。每个 版本发布 也都有源代码快照。
构建
cd caddy/cmd/caddy/
go build
Go 程序很容易为其他平台编译。只需设置不同的 GOOS
、GOARCH
和/或 GOARM
环境变量即可。(详情请参阅 Go 文档。)
例如,在您不是 Windows 系统时为 Windows 编译 Caddy
GOOS=windows go build
或者类似地,在您不是 Linux 或 ARMv6 系统时为 Linux ARMv6 编译
GOOS=linux GOARCH=arm GOARM=6 go build
xcaddy
xcaddy
命令是构建带有版本信息和/或插件的 Caddy 的最简单方法。
要求
- 已安装 Go (见上文)
- 确保
xcaddy
在您的PATH
中
您不需要下载 Caddy 源代码 (它会自动为您下载)。
然后构建 Caddy (带有版本信息) 就这么简单
xcaddy build
要使用插件构建,请使用 --with
xcaddy build \
--with github.com/caddyserver/nginx-adapter
--with github.com/caddyserver/ntlm-transport@v0.1.1
如您所见,您可以使用 @
语法自定义插件的版本。版本可以是标签名称、提交 SHA 或分支。
使用 xcaddy
进行跨平台编译的工作方式与 go
命令相同。例如,要为 macOS 进行交叉编译
GOOS=darwin xcaddy build
Docker
您可以使用 :builder
镜像作为快捷方式来构建带有自定义模块的新 Caddy 二进制文件
FROM caddy:<version>-builder AS builder
RUN xcaddy build \
--with github.com/caddyserver/nginx-adapter \
--with github.com/hairyhenderson/caddy-teapot-module@v0.0.3-0
FROM caddy:<version>
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
请务必将 <version>
替换为最新的 Caddy 版本以开始。
请注意第二个 FROM
指令 — 这通过简单地将新构建的二进制文件覆盖在常规 caddy
镜像之上,从而生成更小的镜像。
构建器使用 xcaddy
来构建带有提供的模块的 Caddy,类似于上面概述的过程。
要使用 Docker Compose,请参阅我们推荐的 compose.yml
和使用说明。
Debian/Ubuntu/Raspbian 自定义构建的软件包支持文件
此过程旨在简化运行自定义 caddy
二进制文件,同时保留来自 caddy
软件包的支持文件。
此过程允许用户利用官方软件包中的默认配置、systemd 服务文件和 bash 自动完成。
要求
步骤
sudo dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy
sudo mv ./caddy /usr/bin/caddy.custom
sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10
sudo update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50
sudo systemctl restart caddy
说明
-
dpkg-divert
将把/usr/bin/caddy
二进制文件移动到/usr/bin/caddy.default
,并设置一个转移,以防止任何软件包想在此位置安装文件。 -
update-alternatives
将创建从所需的 caddy 二进制文件到/usr/bin/caddy
的符号链接 -
systemctl restart caddy
将关闭默认版本的 Caddy 服务器并启动自定义版本。
您可以通过执行以下命令并按照屏幕上的信息在自定义和默认 caddy
二进制文件之间切换。然后,重启 Caddy 服务。
update-alternatives --config caddy
在此之后要升级 Caddy,您可以运行 caddy upgrade
。 这会尝试下载一个与您当前构建具有相同插件的构建,并使用最新版本的 Caddy,然后用新的二进制文件替换当前二进制文件。