我有一个 .Net Core 3 应用程序,我想将其作为系统服务运行:
[Unit]
Description=app-prod
[Service]
WorkingDirectory=/var/www/app-prod
ExecStart=/usr/bin/dotnet /var/www/app-prod/app
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-app-prod
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
正如您在我使用的服务配置中看到的User=www-data
,应用程序路径的权限已由该用户拥有。但是当我启动该服务时,它会检查文件夹并尝试创建它们,但出现异常:
mar 07 14:15:14 void dotnet-app-prod[8004]: System.UnauthorizedAccessException: Access to the path '/var/www/.
mar 07 14:15:14 void dotnet-app-prod[8004]: ---> System.IO.IOException: Permission denied
mar 07 14:15:14 void dotnet-app-prod[8004]: --- End of inner exception stack trace ---
mar 07 14:15:14 void dotnet-app-prod[8004]: at System.IO.FileSystem.CreateDirectory(String fullPath)
正如您所看到的,用于运行该服务的用户void
只是登录环境的普通用户。
我可能做错了什么让错误的用户运行该服务而不是所需的服务www-data
?