转载自我的个人博客:Caddy自编译

配置 Golang 环境

需要先配置 Golang 环境:Download and install - The Go Programming Language

wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

最后检查一下是否安装成功:

go version

安装 xcaddy

如果你是在国内环境下编译的话,需要配置镜像,在这里我使用阿里云的:

export GOPROXY=https://mirrors.aliyun.com/goproxy/
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

安装完成之后需要查找 xcaddy 的安装位置,一般来说 go 会将其安装到 $HOME/go/bin 目录下,你可以检查:

使用临时路径运行 xcaddy:

$HOME/go/bin/xcaddy build --with github.com/caddy-dns/alidns

这里的 --with 后面就需要你找可以编译的 Caddy 插件,我这里编译一个支持阿里云 DNS-01 的 DNS 解析的插件

编译完成之后会自己检查对应的版本

替换原版 Caddy

先停掉原本原版的 Caddy:

systemctl stop caddy

随后,建议让 Caddy 服务不自动重启/不再开机启动(避免替换过程中被意外重启):

sudo systemctl disable caddy

寻找原本 Caddy 的二进制位置:

which caddy

一般来说会在 /usr/bin/caddy 位置下

假设查到官方二进制在 /usr/bin/caddy,那就进行备份:

mv /usr/bin/caddy /usr/bin/caddy.backup-official

之后将新编译的二进制文件移动到原来的位置

sudo cp ./caddy /usr/bin/caddy

最好重新设置一下权限,避免出现问题:

sudo chown root:root /usr/bin/caddy
sudo chmod 755 /usr/bin/caddy

最后检查一下是否更新成功:

caddy version

还可以检查一下插件列表,看看是不是有你编译的插件:

caddy list-modules

是否需要修改 systemd Service 文件

一般来说,如果你是直接替换官方的二进制文件,那其实没有必要修改文件,直接用原来的就可以了,但是你要是自己整了活,那就只能自己重新写了

但是我比较菜,这里就不写参考的配置文件了

Caddy自编译的更多相关文章

  1. 一个比 Nginx 功能更强大的 Web 服务器

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ Caddy 简介 Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随 ...

  2. 使用caddy 进行nodejs web应用近实时编译更新

    caddy 相比nginx 是一个不错的轻量代理服务器,支持的功能也是比较多的, 同时插件也挺多 demo 测试的是通过git 插件进行一个使用spec-md 编写的文档近实时编译以及预览 项目使用d ...

  3. Caddy – 方便够用的 HTTPS server 新手教程

    最近发现了一个 golang 开发的 HTTP server,叫做 Caddy,它配置起来十分简便,甚至可以 28 秒配置好一个支持 http2 的 server ,而且对各种 http 新特性都支持 ...

  4. coredns 编译模式添加插件

    备注:    coredns 默认已经安装了一些插件,比如大家用的多的kubernetes etcd ... 但是我们可以自己编译插件,构建我们自己的 coredns 版本,方便集成使用 1. 项目结 ...

  5. 使用caddy实现非标准端口https

    近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题: 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题: 小程序强 ...

  6. 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x0n 前言 ...

  7. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  8. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  9. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  10. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

随机推荐

  1. 分析 AIX 和 Linux 性能的免费工具。

    一.软件介绍1.分析工具nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新.这个高效的工具可以工作于任何哑屏幕.telnet 会话.甚至拨号线路.另外,它并不会消耗大量 ...

  2. 网络设备开局配置生成器(第三次更新) QQ交流群:(4817315)

    下载:链接: https://pan.baidu.com/s/1BIvh3u7VfbaQtBsUOjl1IA?pwd=kgtw 提取码: kgtw 网络设备开局配置生成器(SecureCRT vbs脚 ...

  3. this和super--java进阶day01

    1.this和super的代表 super是父类的标识符,如堆内存中的标志 2.this和super的访问 重点说访问构造方法,super()访问父类构造方法我们已经清楚,但是this()访问本类构造 ...

  4. 【Linux】3.2 vi和vim编辑器

    vi 和 vim 三种模式的相互转化图 vim 和 vi 的快捷键键盘一览图 vi和vim编辑器 1. vi和vim的基本介绍 所有Linux系统都会内置vi文本编辑器 vim是vi的升级版,可以主动 ...

  5. 【SpringCloud】Consul服务注册与发现

    Consul服务注册与发现 Consul简介 是什么 https://www.consul.io/intro/index.html Consul是一开源的分布式服务发现和配置管理系统,由HashiCo ...

  6. Superfetch/SysMain

    卡的不要不要的 Windows 服务中有一个叫 Superfetch. 现在换了个马甲叫 SysMain 本意是好的,超级预读功能可以帮助大型软件极大提升启动加载时间,但是经常抽风至少我觉得 导致磁盘 ...

  7. 深入理解 C++ 条件变量:为何 `wait` 钟爱 `std::unique_lock`?

    深入理解 C++ 条件变量:为何 wait 钟爱 std::unique_lock?在 C++ 多线程编程中,线程间的协调是一个核心挑战.我们经常需要一个线程等待某个条件满足(例如,等待任务队列非空, ...

  8. zk基础—3.集群与核心参数

    大纲 1.zk单机模式是如何启动的 2.zk集群是如何部署和启动的 3.zk集群部署要用什么样配置的机器 4.如何合理设置zk的JVM参数以及内存大小 5.zk配置的核心参数之tickTime.dat ...

  9. Java容器集合经典面试题集

    目录 概述类面试题 1. 请说一下Java容器集合的分类,各自的继承结构 2. 请谈一谈Java集合中的fail-fast和fail-safe机制 3. 如何一边遍历一边删除Collection中的元 ...

  10. Flutter 2025 年产品路线图发布

    每一年 Google Flutter 团队都会发布一份产品路线图,包括 Flutter 框架和 Dart 编程语言,让开发者能够了解官方团队的优先事项,并据此做出自己的计划安排. 产品路线图也会随着客 ...