Ubuntu 20.04.1 LTS下Hitch 1.5.2-1服务启动失败求助
咱们一步步来定位并解决这个Hitch启动失败的问题:
1. 先获取更详细的错误日志
systemd默认的日志信息太简略,咱们用下面的命令查看Hitch启动时的完整日志,这能帮咱们找到具体的失败原因:
journalctl -u hitch.service -xe
重点关注ExecStart阶段的报错细节,比如权限问题、资源占用、证书错误等。
2. 修正/run/hitch目录的权限配置
你之前手动创建了/run/hitch目录,也尝试通过systemd配置自动创建,但这里有个小错误:你的Hitch配置里指定的运行用户是_hitch,但你设置的目录所有者是hitch:hitch(不存在的用户组)。咱们修正这个配置:
执行systemctl edit hitch.service,在打开的编辑器里输入:
[Service] ExecStartPre=-mkdir -p /run/hitch/ ExecStartPre=-chown _hitch:_hitch /run/hitch/ PIDFile=/run/hitch/hitch.pid
保存退出后,重新加载systemd配置并重启Hitch:
sudo systemctl daemon-reload sudo systemctl restart hitch.service
3. 检查证书文件的访问权限
你使用的Let's Encrypt证书路径/etc/letsencrypt/live/sunananas.com/hitch-bundle.pem默认权限是root专属,_hitch用户可能没有读取权限,这会导致Hitch启动失败。咱们给证书文件添加正确的权限:
# 给_hitch用户授予证书读取权限 sudo chown root:_hitch /etc/letsencrypt/live/sunananas.com/hitch-bundle.pem sudo chmod 640 /etc/letsencrypt/live/sunananas.com/hitch-bundle.pem # 同步archive目录下的证书权限(因为live是软链接到archive) sudo chown -R root:_hitch /etc/letsencrypt/archive/sunananas.com/ sudo chmod -R 640 /etc/letsencrypt/archive/sunananas.com/ # 或者把_hitch加入ssl-cert组(Let's Encrypt证书通常属于这个组) sudo usermod -aG ssl-cert _hitch
4. 确认后端Varnish的配置状态
你的Hitch配置里指定后端是[127.0.0.1]:6086,且开启了write-proxy-v2,需要确保Varnish已经正确监听这个端口并启用了PROXY协议:
- 检查端口是否被监听:
sudo ss -tulpn | grep 6086
- 确认Varnish的启动参数里包含
-a localhost:6086,PROXY,可以查看Varnish的配置文件(比如/etc/default/varnish)中的DAEMON_OPTS字段,确保有这个监听配置。
5. 手动启动Hitch查看实时错误
跳过systemd,直接在控制台手动启动Hitch,这样能看到最直接的错误输出:
sudo /usr/sbin/hitch --config /etc/hitch/hitch.conf
不要加--daemon参数,启动后会在控制台打印所有错误信息,比如端口被占用、证书无效等问题。
6. 检查443端口是否被占用
Hitch需要绑定443端口,如果这个端口被Nginx、Apache等其他服务占用,也会启动失败。检查端口占用情况:
sudo ss -tulpn | grep 443
如果有其他服务占用,需要停止该服务或者修改Hitch的监听端口。
先试试以上步骤,应该能定位到问题所在。
内容的提问来源于stack exchange,提问作者Nikos Klavdianos

