安装Caddy作为Web服务器
大约 2 分钟
这一节来安装 Web 服务器,Caddy 和 Nginx 看个人喜好
注意
请勿照搬本文中的命令,请先理解命令,然后检查自己的实际情况是否和本文相同,并且正确替换用户名和目录。
提示
caddy 详细内容请看文档
安装 Caddy
这里选择自行编译,可以看我以前发的文章。
使用 vscode 打开前面创建好的 www 目录,创建一个 caddy 目录。
mkdir caddy && mkdir caddy/bin
然后将二进制文件上传到 caddy/bin 目录,再授予运行权限。
cd caddy
chmod +x bin/caddy
配置文件
首先在 vscode 服务端安装插件 Caddyfile Support,并配置远程设置,可能需要关闭远程并重新登录才能看到配置选项。
{ "caddyfile.executable": "/home/ubuntu/www/caddy/bin/caddy" }
创建配置文件,并编辑
code Caddyfile
写入配置并保存
# 全局设置
{
email xxwhite@foxmail.com
log {
level error
output file /home/ubuntu/www/caddy/logs/log.json
}
storage file_system /home/ubuntu/www/caddy/.caddy
servers :443 {
protocols h1 h2 h3
}
}
# 导入配置文件
import conf.d/*.caddyfile
创建其他目录
mkdir conf.d logs .caddy
配置守护进程
创建 caddy.service
code caddy.service
编写内容并保存
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=ubuntu
Group=ubuntu
ExecStart=/home/ubuntu/www/caddy/bin/caddy run --environ --config /home/ubuntu/www/caddy/Caddyfile
ExecReload=/home/ubuntu/www/caddy/bin/caddy reload --config /home/ubuntu/www/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateDevices=yes
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
执行以下命令,添加开机启动
sudo systemctl enable /home/ubuntu/www/caddy/caddy.service
尝试启动
sudo systemctl start caddy
配置泛域名证书
注意
我这样只是其中一种配置方法,不是唯一,而且存在一定弊端,就是添加新的泛域名证书时,一定要先成功申请证书,再去添加相关站点配置,否则会因为证书文件不存在导致启动失败。
修改 Caddyfile
全局配置
# 全局设置
{
email xxwhite@foxmail.com
log {
level error
output file /home/ubuntu/www/caddy/logs/log.json
}
storage file_system /home/ubuntu/www/caddy/.caddy
servers :443 {
protocols h1 h2 h3
}
}
# 匹配所有域名
*.u2sb.com: {
tls {
dns alidns {
access_key_id {env.ALIYUN_ACCESS_KEY_ID}
access_key_secret {env.ALIYUN_ACCESS_KEY_SECRET}
}
}
respond 400
}
# 导入配置文件
import conf.d/*.caddyfile
重启 caddy
sudo systemctl restart caddy
然后看日志输出和 .caddy
目录下证书是否正常申请到。
如果证书能正常申请到,就可以按照以下步骤继续做,否则就要尝试排查错误,这部分不在本文范围呢。
添加一个片段文件,方便以后导入
mkdir conf.d/snippets && code conf.d/snippets/tls.conf
写入内容并保存
tls /home/ubuntu/www/caddy/.caddy/certificates/acme-v02.api.letsencrypt.org-directory/{args.0}/{args.0}.crt /home/ubuntu/www/caddy/.caddy/certificates/acme-v02.api.letsencrypt.org-directory/{args.0}/{args.0}.key
再创建一个文件
code conf.d/snippets/u2sb.conf
写入内容并保存
import tls.conf wildcard_.u2sb.com
encode zstd br gzip
file_server
然后就可以在其他站点配置里引用这段代配置文件了
code conf.d/my-server.u2sb.com.caddyfile
然后编辑并保存
my-server.u2sb.com: {
import snippets/u2sb.conf
root * /home/ubuntu/www/wwwroot/my-server.u2sb.com/
}
重启服务并测试
sudo systemctl restart caddy