作为系统服务运行¶
在生产环境中,将 Load Ants 作为系统服务 (Daemon) 运行是保证其稳定性和可靠性的关键一步。这能确保应用在服务器重启后能自动启动,并由系统的服务管理器来监控其状态。
在现代 Linux 发行版中,systemd
是标准的服务管理器。本指南将以 systemd
为例,介绍如何将 Load Ants 设置为系统服务。
先决条件¶
- 二进制文件: 你已经拥有了编译好的
load-ants
二进制文件。 - 配置文件: 你的
config.yaml
文件已经配置完毕。 - 权限: 你拥有
sudo
或root
权限来创建服务文件和管理服务。
步骤一:准备文件和目录¶
首先,我们需要将二进制文件和配置文件放置在标准化的位置。
-
创建程序目录:
sudo mkdir -p /usr/local/bin/load-ants
-
复制二进制文件: 假设你的二进制文件名为
load-ants
,位于当前目录。sudo cp ./load-ants /usr/local/bin/load-ants/
-
创建配置目录:
sudo mkdir -p /etc/load-ants
-
复制配置文件: 假设你的配置文件名为
config.yaml
。sudo cp ./config.yaml /etc/load-ants/
步骤二:创建 systemd
服务单元文件¶
systemd
使用 .service
文件来定义如何管理一个服务。
-
创建服务文件: 使用你喜欢的文本编辑器(如
nano
或vim
)创建一个新的服务文件。sudo nano /etc/systemd/system/load-ants.service
-
填充服务文件内容: 将以下内容复制并粘贴到文件中。
[Unit] Description=Load Ants DNS Proxy Documentation=https://eyas-ran.github.io/load-ants/ After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/load-ants/load-ants -c /etc/load-ants/config.yaml Restart=on-failure RestartSec=5s LimitNOFILE=65535 [Install] WantedBy=multi-user.target
参数解释:
Description
: 服务的简单描述。After=network.target
: 表示此服务应该在网络连接准备好之后启动。User
/Group
: 指定运行服务的用户和组。使用root
是因为 Load Ants 可能需要监听特权端口(如 53)。如果你的监听端口大于 1024,可以考虑使用一个非特权用户以增强安全性。更多信息请参考安全最佳实践。ExecStart
: 定义启动服务的命令。我们使用-c
参数明确指定配置文件的路径。Restart=on-failure
: 如果服务因非正常退出(例如崩溃)而停止,systemd
将尝试重启它。LimitNOFILE
: 增加进程可以打开的文件描述符数量的上限,这对于高并发的 DNS 服务很重要。WantedBy=multi-user.target
: 将服务安装到多用户运行级别,使其能在系统启动时自动运行。
步骤三:管理服务¶
现在,你可以使用 systemctl
命令来控制 load-ants
服务了。
-
重新加载
systemd
配置: 每次创建或修改服务文件后,都需要运行此命令来让systemd
识别更改。sudo systemctl daemon-reload
-
启动服务:
sudo systemctl start load-ants
-
检查服务状态: 这是验证服务是否成功运行的最重要一步。
sudo systemctl status load-ants
如果一切正常,你应该会看到
active (running)
的绿色状态提示。 -
查看服务日志: 如果服务启动失败,或者你想查看应用的实时输出,可以使用
journalctl
。sudo journalctl -u load-ants -f
(按
Ctrl+C
退出日志查看) -
设置开机自启: 要让服务在服务器重启后自动运行,你需要"启用"它。
sudo systemctl enable load-ants
服务管理备忘单¶
- 停止服务:
sudo systemctl stop load-ants
- 重启服务:
sudo systemctl restart load-ants
- 禁用开机自启:
sudo systemctl disable load-ants