Caddy安装中遇到的问题及正确的配置文件
安装说明: https://caddyserver.com.cn/docs/install
问题1:
配置好的caddy手动启动正常,用systemctl服务启动报错,报找不到 /tmp/php-cgi-54.sock 文件,
原因:
当你使用 systemd 启动 Caddy 时,如果遇到 /tmp/php-cgi-54.sock 找不到的问题,通常是因为 systemd 的 PrivateTmp 特性导致的。PrivateTmp 是 systemd 的一个特性,它会在启动服务时为服务创建一个私有的 /tmp 目录,这个目录与系统的 /tmp 目录是隔离的。因此,如果 Caddy 或 PHP-FPM 在 /tmp 目录下创建了套接字文件(如 /tmp/php-cgi-54.sock),而其他服务(如 Caddy)在系统 /tmp 目录下查找这个文件,就会找不到。(AI引擎 DeepSeek 2.5)
解决:
PrivateTmp=false
注意: php-cgi-xx.sock 可以在面板的商店里,找到php-x.x的设置,在性能调整里,查看到 unix套接字和tcp的连接地址
问题2:
网页无法处理 .php 文件, 原因:
解决:
不能用 reverse_proxy /tmp/php-cgi-54.sock, 改用 php_fastcgi unix//tmp/php-cgi-54.sock
注意: reverse_proxy不需要指定unix, 用 fastcgi则要指定
问题3:
配置正确,但 caddy run 后报错。
解决:
caddy默认使用当前目录上的Caddyfile, 需要选 cd /etc/caddy 目录,再运行caddy.
或者,caddy run --config /etc/caddy/Caddyfile
==================================================================
完整 CaddyFile 例:
https://xxx.net {
root * /www/abc/
php_fastcgi unix//tmp/php-cgi-81.sock
file_server
redir https://www.net{uri} permanent
root * /www/xxx/abc
encode gzip
php_fastcgi unix//tmp/php-cgi-54.sock
file_server
}
https://:444 {
# PhpMyAdmin
root * /www/xxx/phpmyadmin/phpmyadmin_23456
file_server
php_fastcgi unix//tmp/php-cgi-54.sock
}
==================================================================
完整 caddy.service 服务配置文件:
[Unit]
Description=Caddy2
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
WorkingDirectory=/etc/caddy
Type=simple
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=false
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
==================================================================
其他参考:
验证caddy是否配置正常
caddy validate
启动,停止, 重载:
caddy start 后台
caddy run 前台
caddy stop
caddy reload
通过服务启动:
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy
重启:
sudo systemctl reload caddy
停止:
sudo systemctl stop caddy
检查:
sudo systemctl status caddy
sudo journalctl -u caddy -e
sudo journalctl -xe
journalctl -u caddy --no-pager | less +G
验证:
curl -I https://bbs.xcjc.net
查看进程
ps aux | grep caddy
pidof caddy
杀进程
sudo pkill caddy
查看端口占用
sudo netstat -tuln | grep 80
sudo ss -tuln | grep :443
删除用户和组:
sudo systemctl stop caddy
sudo userdel -r caddy
sudo groupdel caddy
重建用户和组:
sudo groupadd --system caddy
sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
设置用户访问权限
sudo chown -R caddy:caddy /var/lib/caddy
sudo chmod -R 755 /var/lib/caddy
sudo chown root:caddy /etc/caddy/Caddyfile
sudo chmod 640 /etc/caddy/Caddyfile
sudo chown caddy:caddy /tmp/php-cgi-54.sock
sudo chmod 660 /tmp/php-cgi-54.sock
sudo chown caddy:caddy /tmp/php-cgi-81.sock
sudo chmod 660 /tmp/php-cgi-81.sock
==================================================================
如果服务启动失败,也可以在宝塔面板里设置定时任务
!/bin/bash
检查 Caddy 是否正在运行
if ! pgrep -x "caddy" > /dev/null; then
# 如果 Caddy 没有运行,则启动它
echo "$(date): Caddy is not running. Starting Caddy now..."
cd /etc/caddy
caddy start
else
# echo "$(date): Caddy is running."
fi