caddy保持运行
虽然可以直接通过命令行界面运行 Caddy,但使用服务管理器来保持其运行有许多好处,例如确保系统重启时自动启动以及捕获 stdout/stderr 日志。
-
Linux 服务
-
环境变量
-
run
和 reload
覆盖 -
崩溃时重启
-
单元文件
-
手动安装
-
使用服务
-
本地 HTTPS
-
覆盖
-
SELinux 考虑事项
-
Windows 服务
-
sc.exe
-
WinSW
-
Docker Compose
-
设置
-
使用
-
本地 HTTPS
Linux 服务
在带有 systemd 的 Linux 发行版上运行 Caddy 的推荐方式是使用我们提供的官方 systemd 单元文件。
单元文件
我们提供了两种不同的 systemd 单元文件,你可以根据你的使用场景选择:
-
caddy.service
:如果你使用 Caddyfile 配置 Caddy。如果你更喜欢使用其他配置适配器或 JSON 配置文件,你可以覆盖 ExecStart
和 ExecReload
命令。 -
caddy-api.service
:如果你仅通过 Caddy 的 API 配置 Caddy。此服务使用 --resume
选项,将通过默认持久化的 autosave.json
启动 Caddy。
它们非常相似,但 ExecStart
和 ExecReload
命令有所不同,以适应不同的工作流程。
如果你需要在服务之间切换,你应该先禁用并停止之前的服务,然后再启用并启动另一个服务。例如,从 caddy
服务切换到 caddy-api
服务:
1 | sudo systemctl disable --now caddy |
sudo mv caddy /usr/bin/
1 |
|
caddy version
1 |
|
sudo groupadd --system caddy
1 |
|
sudo useradd --system
--gid caddy
--create-home
--home-dir /var/lib/caddy
--shell /usr/sbin/nologin
--comment “Caddy web server”
caddy
1 |
|
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
1 |
|
systemctl status caddy
1 |
|
sudo nano /etc/caddy/Caddyfile
1 |
|
systemctl status caddy
1 |
|
journalctl -u caddy --no-pager | less +G
1 |
|
sudo systemctl reload caddy
1 |
|
sudo systemctl stop caddy
1 |
|
sudo systemctl edit caddy
1 |
|
[Service]
Environment=“CF_API_TOKEN=super-secret-cloudflare-tokenvalue”
1 |
|
[Service]
EnvironmentFile=/etc/caddy/.env
1 |
|
CF_API_TOKEN=super-secret-cloudflare-tokenvalue
1 | #### run 和 reload 覆盖 |
[Service]
ExecStart=
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/caddy.json
ExecReload=
ExecReload=/usr/bin/caddy reload --config /etc/caddy/caddy.json
1 | #### 崩溃时重启 |
[Service]
自动重启 Caddy,除非退出代码为 1
RestartPreventExitStatus=1
Restart=on-failure
RestartSec=5s
1 |
|
sudo systemctl restart caddy
1 | ### SELinux 考虑事项 |
semanage fcontext -a -t bin_t /usr/bin/caddy && restorecon -Rv /usr/bin/caddy
1 | ## Windows 服务 |
sc.exe create caddy start= auto binPath= "YOURPATH
