Caddy 是 go 编写的一款简单易用的 Web Server 软件。

下载

到官方 Github 版本发行 页面下载符合架构的最新版本。

Caddy 在 systemd 下的安装

条件假设:

  • www-data 用户/组身份运行 Caddy和 www-data, UID 和 GID 33
  • 以非超级用户身份,使用 'sudo' 以 root 身份执行命令

首先,将 caddy 二进制文件放到系统的可执行路径,并设置所有者及权限:

sudo cp /path/to/caddy /usr/local/bin
sudo chown root:root /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy

通过 setcap 让 caddy 可以通过普通用户运行时绑定特权端口(如 80,443):

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

设置必要的用户、用户组及目录:

sudo groupadd -g 33 www-data
sudo useradd \
  -g www-data --no-user-group \
  --home-dir /var/www --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 33 www-data

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

将配置文件 Caddyfile 放到恰当的位置并设置所有者及权限:

sudo touch /etc/caddy/Caddyfile
sudo chown www-data:www-data /etc/caddy/Caddyfile
sudo chmod 444 /etc/caddy/Caddyfile

创建网站根目录并配置所有者及权限:

sudo mkdir /var/www
sudo chown www-data:www-data /var/www
sudo chmod 555 /var/www

假设根目录下有一站点 example.com

sudo cp -R example.com /var/www/
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 555 /var/www/example.com

在 caddy 配置文件中添加以下内容即可启动该站点:

example.com {
    root /var/www/example.com
    ...
}

配置 caddy 的 systemd 配置文件:

wget https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service
sudo cp caddy.service /etc/systemd/system/
sudo chown root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload
sudo systemctl start caddy.service

设置 caddy 开机启动:

sudo systemctl enable caddy.service

如果 caddy 启动失败可以通过以下命令查看日志:

journalctl --boot -u caddy.service

Caddyfile 中添加 log stdouterrors stderr 可以完整利用 systemd 的日志。

使用以下命令可以查看 caddy 的最新日志:

journalctl -f -u caddy.service

使用以下命令可以让 www-data 用户访问其他的证书和私钥:

setfacl -m user:www-data:r-- /etc/ssl/private/my.key

参考