저는 Rust 학습의 일환으로 임베디드 Linux 시스템에서 호스팅되는 작은 웹 서버를 만드는 방법을 배우고 있습니다. 랩톱에서 소프트웨어를 컴파일하고 바이너리 및 기타 파일을 임베디드 시스템으로 scp한 다음 웹 서버를 시작하는 서비스를 다시 시작합니다.
그러나 웹서버의 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