Caddy是一个非常轻量的web服务器,有原生支持HTTP/2,整合Let's Encrypt等优势,具体可以上官方网站查看信息:https://caddyserver.com/

Caddy本身是一个开源的项目,但是官方提供的binary在商业环境使用需要收费,如果您只是个人使用或者选择付费使用商业license,可以直接安装官方的安装方式

$25每个实例每月对于小开发者来说在盈利前也算是一个负担,Caddy项目本身使用的相对友好的Apache License,所以在此记录一下自己编译Caddy的过程。

本文安装环境:Ubuntu 18.04

1.安装Golang

参考这个文档,在Ubuntu下可以直接使用

sudo apt-get install golang

2.从Github获取源

使用

go env GOPATH

找到Go的安装目录,
然后cd进目录

cd $GOPATH/src

获取Caddy的源

go get -u github.com/mholt/caddy
go get -u github.com/caddyserver/builds

3.编译Caddy

进入目录

cd $GOPATH/src/github.com/mholt/caddy/caddy

编译(Linux下)

go run build.go -goos=linux -goarch=amd64

编译(Mac下)

go run build.go -goos=darwin

稍等片刻Caddy就应该编译好了,这个时候打开直接试一下

caddy

会返回以下输出:

Activating privacy features... done.
http://:2015

说明编译没什么问题,Ctrl/Command+C退出先

4.安装Caddy

在刚才的目录里

sudo cp caddy /usr/local/bin

设置权限

sudo chown root:root /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

官方安装时会自动建立文件夹存储Let's Encrypt的证书,我们自己编译的话就需要自己创建

sudo mkdir /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy

官方安装时会自动生成配置文件Caddyfile, 我们自己编译的话就需要自己创建

sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo touch /etc/caddy/Caddyfile

此时我们再安装systemd的控制文件

sudo cp $GOPATH/src/github.com/mholt/caddy/dist/init/linux-systemd/caddy.service /etc/systemd/system/
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload

然后就可以启动看看啦

sudo systemctl start caddy

将caddy加入开机启动

sudo systemctl enable caddy

以上基本上就完成了等同于官方提供的binary的安装过程,接下来的配置和使用等可以参见官方的教程