Featured image of post Caddy 服务器安装与卸载 🚀

Caddy 服务器安装与卸载 🚀

Caddy 服务器安装与卸载 🚀 🌐 现代化的 Web 服务器,自动 HTTPS,配置简单 Ԃ

Caddy 服务器安装与卸载 🚀

🌐 现代化的 Web 服务器,自动 HTTPS,配置简单


📋 目录


🎯 简介

🌟 Caddy 特点

  • 自动 HTTPS:自动申请和续期 SSL 证书
  • 简单配置:简洁的 Caddyfile 语法
  • 高性能:基于 Go 语言开发
  • 零依赖:单个二进制文件运行

🔗 重要链接


📦 安装方法

🐧 APT 安装(推荐)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 更新软件包列表
sudo apt update

# 安装 Caddy
sudo apt install caddy -y

# 验证安装
caddy version

# 查看安装信息
caddy list-modules

📊 验证安装

1
2
3
4
5
6
7
8
# 检查版本
caddy version

# 查看服务状态
systemctl status caddy

# 检查监听端口
sudo netstat -tulnp | grep caddy

🔧 自定义安装

1
2
3
4
5
6
7
# 下载特定版本
wget https://github.com/caddyserver/caddy/releases/download/v2.7.6/caddy_2.7.6_linux_amd64.tar.gz

# 解压并安装
tar -xzf caddy_2.7.6_linux_amd64.tar.gz
sudo mv caddy /usr/local/bin/
sudo chmod +x /usr/local/bin/caddy

🗑️ 卸载方法

🔄 完整卸载步骤

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 停止 Caddy 服务
sudo systemctl stop caddy

# 2. 禁用开机自启
sudo systemctl disable caddy

# 3. 移除软件包
sudo apt remove caddy -y

# 4. 清除配置文件(可选)
sudo apt purge caddy

# 5. 移除无用依赖
sudo apt autoremove -y

# 6. 验证卸载
dpkg -l | grep caddy

🧹 清理残留文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 删除配置文件
sudo rm -rf /etc/caddy/
sudo rm -rf /etc/ssl/caddy/

# 删除日志文件
sudo rm -rf /var/log/caddy/

# 删除数据文件
sudo rm -rf /var/lib/caddy/

# 删除二进制文件(如果自定义安装)
sudo rm -f /usr/local/bin/caddy

✅ 验证彻底卸载

1
2
3
4
5
6
7
8
9
# 检查进程
ps aux | grep caddy

# 检查文件残留
which caddy
ls -la /usr/bin/caddy /usr/local/bin/caddy 2>/dev/null

# 检查服务配置
systemctl list-unit-files | grep caddy

🔧 维护命令

🛠️ 服务管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 启动服务
sudo systemctl start caddy

# 停止服务
sudo systemctl stop caddy

# 重启服务
sudo systemctl restart caddy

# 重载配置(不中断服务)
sudo systemctl reload caddy

# 查看状态
sudo systemctl status caddy

# 启用开机自启
sudo systemctl enable caddy

# 禁用开机自启
sudo systemctl disable caddy

📝 配置管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 检查配置文件语法
sudo caddy validate --config /etc/caddy/Caddyfile

# 格式化配置文件
sudo caddy fmt --overwrite /etc/caddy/Caddyfile

# 测试配置
sudo caddy adapt --config /etc/caddy/Caddyfile

# 查看当前配置
sudo caddy environ

📊 日志管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 查看实时日志
sudo journalctl -u caddy -f

# 查看最近日志
sudo journalctl -u caddy --since "1 hour ago"

# 查看错误日志
sudo journalctl -u caddy -p err

# 日志文件位置
tail -f /var/log/caddy/access.log
tail -f /var/log/caddy/error.log

⚙️ 配置文件

📁 配置文件结构

1
2
3
4
5
6
7
/etc/caddy/
├── Caddyfile          # 主配置文件
├── ssl/               # SSL证书目录
│   ├── private.key
│   └── fullchain.pem
└── conf.d/            # 附加配置目录
    └── *.conf

📝 基础配置示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# /etc/caddy/Caddyfile
{
    # 全局配置
    http_port 80
    https_port 443
    auto_https disable_redirects
}

# 示例站点配置
example.com {
    root * /var/www/html
    file_server
    encode gzip
    
    # PHP支持
    php_fastcgi unix//var/run/php/php-fpm.sock
    
    # 日志配置
    log {
        output file /var/log/caddy/access.log
        format json
    }
}

# 反向代理示例
api.example.com {
    reverse_proxy localhost:3000 {
        header_up Host {host}
        header_up X-Real-IP {remote}
        header_up X-Forwarded-For {remote}
        header_up X-Forwarded-Proto {scheme}
    }
}

🔒 SSL 配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 自动SSL
https://mysite.com {
    tls {
        dns cloudflare {env.CF_API_TOKEN}
    }
    root * /var/www/mysite
    file_server
}

# 自定义证书
https://mysite.com:8443 {
    tls /etc/ssl/certs/mysite.crt /etc/ssl/private/mysite.key
    root * /var/www/mysite
    file_server
}

🚀 快速开始

🎯 最小化配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 创建测试目录
sudo mkdir -p /var/www/html
echo "Hello Caddy!" | sudo tee /var/www/html/index.html

# 创建基础配置
sudo tee /etc/caddy/Caddyfile > /dev/null <<'EOF'
:80 {
    root * /var/www/html
    file_server
}
EOF

# 启动服务
sudo systemctl start caddy

# 测试访问
curl http://localhost

🔄 生产环境部署

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
# Caddy 生产环境部署脚本

# 创建目录结构
sudo mkdir -p /etc/caddy/ssl /var/log/caddy /var/lib/caddy
sudo chown -R www-data:www-data /var/log/caddy /var/lib/caddy

# 创建配置文件
sudo tee /etc/caddy/Caddyfile > /dev/null <<'EOF'
{
    email admin@example.com
    on_demand_tls {
        ask http://localhost:8080/check-domain
    }
}

*.example.com {
    tls {
        on_demand
    }
    reverse_proxy localhost:3000
}
EOF

# 启用并启动服务
sudo systemctl enable caddy
sudo systemctl start caddy

💡 最佳实践

🛡️ 安全建议

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 设置文件权限
sudo chown -R www-data:www-data /var/lib/caddy
sudo chmod 755 /var/lib/caddy
sudo chmod 600 /etc/caddy/ssl/*.key

# 防火墙配置
sudo ufw allow 80/tcp comment 'Caddy HTTP'
sudo ufw allow 443/tcp comment 'Caddy HTTPS'

# 定期更新
sudo apt update && sudo apt upgrade caddy

📈 性能优化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 性能优化配置
{
    # 连接限制
    servers {
        max_connections 1000
    }
    
    # 缓冲区大小
    buffers {
        read 4096
        write 4096
    }
    
    # 超时设置
    timeouts {
        read 30s
        write 30s
        idle 60s
    }
    
    # 日志轮转
    log {
        output file /var/log/caddy/access.log {
            roll_size 100mb
            roll_keep 10
        }
    }
}

🔄 备份与恢复

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#!/bin/bash
# Caddy 备份脚本

BACKUP_DIR="/backup/caddy/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 备份配置
cp -r /etc/caddy $BACKUP_DIR/
cp -r /var/lib/caddy $BACKUP_DIR/data/

# 备份SSL证书
cp -r /etc/ssl/caddy $BACKUP_DIR/ssl/

# 创建压缩包
tar -czf $BACKUP_DIR/caddy-backup.tar.gz $BACKUP_DIR

echo "备份完成: $BACKUP_DIR/caddy-backup.tar.gz"

🚨 故障排除

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 查看详细错误信息
sudo caddy run --config /etc/caddy/Caddyfile --watch

# 检查端口占用
sudo lsof -i :80
sudo lsof -i :443

# 测试网络连接
curl -v http://localhost
curl -vk https://localhost

# 重置服务状态
sudo systemctl reset-failed caddy

🎯 提示: Caddy 的配置非常灵活,建议从简单配置开始,逐步添加复杂功能。生产环境部署前请充分测试。

📚 学习资源:

🔧 需要帮助?:

1
2
3
4
5
6
7
8
# 查看帮助信息
caddy help

# 查看模块帮助
caddy help modules

# 查看环境变量
caddy environ
最后更新于 2025-09-28