我有一个dotnet API运行在我的raspberry上,当我手动启动可执行文件时,它监听我的appsettings.json
上配置的http://<raspberry_ip>:<custom-port>
,但当我在raspberry Boot 上使用它作为服务时,它在http://localhost:5000
上启动。
我知道我的/lib/systemd/system/<app>.service
中一定缺少了什么,但我没有看到什么。
我的服务配置:
[Unit]
Description=Lauches API on boot
After=multi-user.target
[Service]
ExecStart=/home/<user>/Dev/<app_executable>
User=<user>
[Install]
WantedBy=multi-user.target
这似乎很奇怪,这是因为服务启动的那一刻(太快了?)还是我的配置中缺少了其他东西?
非常感谢.
Ps:我也试着改变ExecStart
,并提供我的dotnet路径如下:ExecStart = /<dotnet_path> /<app_path>.dll
,但也没有用。
1条答案
按热度按时间sbtkgmzw1#
您需要设置
WorkingDirectory
参数。根据docs:
工作目录=
采用相对于RootDirectory=或特殊值“~"指定的服务根目录的目录路径。设置已执行进程的工作目录。如果设置为“~",则使用User=中指定的用户的主目录。如果未设置,则systemd作为系统示例运行时默认为根目录,如果作为用户运行,则默认为相应用户的主目录。如果设置以“-”字符为前缀,则缺少工作目录不会被视为致命。如果未设置RootDirectory=/RootImage=,则WorkingDirectory=相对于运行服务管理器的系统的根。请注意,设置此参数可能会导致将额外的依赖项添加到单元中(见上文)。