作为服务运行时可执行文件找不到文件

作为服务运行时可执行文件找不到文件

我正在学习制作一个小型 Web 服务器,作为学习 rust 的一部分,该服务器托管在嵌入式 Linux 系统上。我在笔记本电脑上编译软件,将二进制文件和其他文件 scp 到嵌入式系统,然后重新启动启动 Web 服务器的服务。

但是,当我导航到网络服务器的 IP 时,尝试获取第一个没有此类文件或目录错误的 HTML 文件时,它会崩溃。

当我通过 ssh 连接手动执行服务器时,它工作正常并且页面加载完美。

我猜测这与可执行文件从 systemd 获取的根目录有关,但我找不到任何有效的文件路径,无论是相对还是绝对。

有人可以解释一下发生了什么事以及我如何让它发挥作用。我不想每次进行更改时都必须手动执行文件,我只想在本地执行上传脚本。

当前文件如下所示 /home/web_server 是可执行文件, /home/index.html 是我的 HTML 文件,它应该发送到客户端。

我什至无法让它工作:

use std::{
    env,
    path::Path,
}
let root = Path::new("/home/");
assert!(env::set_current_dir(&root).is_ok());

.服务文件:

[Unit]
Description=Web server service
DefaultDependencies=no

[Service]
ExecStart=/home/web_server
Type=simple
RemainAfterExit=yes

[Install]
WantedBy=sysinit.target

嵌入式系统在内核 5.10.72 上运行 debian 11

答案1

我必须输入WorkingDirectory=/home 文件[service]字段.service来修复执行文件的工作目录。

相关内容