Caddy 服务器安装与卸载 🚀

🌐 现代化的 Web 服务器,自动 HTTPS,配置简单
📋 目录
🎯 简介
🌟 Caddy 特点
- ✅ 自动 HTTPS:自动申请和续期 SSL 证书
- ✅ 简单配置:简洁的 Caddyfile 语法
- ✅ 高性能:基于 Go 语言开发
- ✅ 零依赖:单个二进制文件运行
🔗 重要链接
📦 安装方法
🐧 APT 安装(推荐)
1 2 3 4 5 6 7 8 9 10 11
| sudo apt update
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
| sudo systemctl stop caddy
sudo systemctl disable caddy
sudo apt remove caddy -y
sudo apt purge caddy
sudo apt autoremove -y
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/ │ ├── 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
| { http_port 80 https_port 443 auto_https disable_redirects }
example.com { root * /var/www/html file_server encode gzip 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
| 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
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
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/
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
|