v2中文文档

从源码构建

要求:

  • Go 1.16 或更新的版本

克隆这个仓库:

git clone "https://github.com/caddyserver/caddy.git"

如果你没有git,你可以从GitHub下载源代码压缩包。每个版本也有源码快照。

构建:

cd caddy/cmd/caddy/
go build

由于Go语言的一个bug,这些基本步骤没有嵌入版本信息。如果你想要版本(caddy version),则需要将Caddy编译为依赖项而不是主模块。这方面的说明在Caddy的main.go文件中。当然,你也可以使用xcaddy自动完成此操作。

xcaddy

使用xcaddy命令是构建包含版本信息和/或插件的最简单方法。

要求:

  • 安装了Go(见上文)
  • 确保xcaddy在你的PATH变量中

你不需要下载Caddy的源码,xcaddy会自动帮你完成。

然后,你可以很简单地构建Caddy(带有版本信息):

xcaddy build

如果想装上插件,请使用--with

xcaddy build \
  --with github.com/caddyserver/nginx-adapter
	--with github.com/caddyserver/ntlm-transport@v0.1.1

如你所见,可以使用@语法自定义插件的版本。版本可以是标签名称、提交SHA或者分支。

跨平台编译xcaddy使用相同的go命令(见下文)。

跨平台

Go 程序很容易为其他平台编译,只需设置不同的GOOSGOARCH和/或GOARM环境变量即可。(有关详细信息,请参阅go文档。)

例如,当你在非Windows平台时要编译适用于Windows的Caddy:

GOOS=windows go build

或者当你不在Linux或者ARMv6上时,却要编译Linux ARMv6版本类似:

GOOS=linux GOARCH=arm GOARM=6 go build

同样的方法适用于xcaddy。为macOS平台进行交叉编译:

GOOS=darwin xcaddy build

Debian/Ubuntu/Raspbian 自定义构建的软件包支持文件

此步骤目的在于简化运行自定义caddy二进制文件,同时保留caddy包中的支持文件。

此步骤允许用户利用官方软件包中的默认配置、systemd服务文件和脚本自动提示。

要求:

  • 根据这些说明安装caddy
  • 根据本文档中列出的过程构建自定义二进制文件。(往上看)
  • 自定义caddy二进制文件应位于当前目录中。

步骤:

dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy
mv ./caddy /usr/bin/caddy.custom
update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10
update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50

dpkg-divert/usr/bin/caddy二进制文件移动到/usr/bin/caddy.default,并放置一个转移(diversion),防止任何包想要将文件安装到这个位置(指/usr/bin/caddy)。

update-alternatives将从所需的caddy二进制文件创建一个符号链接到/usr/bin/caddy

你可以通过下面的命令在自定义和默认caddy二进制文件之间进行修改

update-alternatives --config caddy

并按照屏幕上的信息进行操作。