【问题标题】:Failed at step CHDIR spawning "/usr/bin/dotnet": No such file or directory在步骤 CHDIR 产生“/usr/bin/dotnet”时失败:没有这样的文件或目录
【发布时间】:2019-01-21 19:37:12
【问题描述】:

我尝试按照https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.1&tabs=aspnetcore2x 将 ASP.NET Core 2 网站部署到 Ubuntu。

但是,它会抛出一个异常:

Failed at step CHDIR spawning "/usr/bin/dotnet": No such file or directory from the file

错误来自这个文件

 [Unit]
 Description=Example .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

但是/usr/bin/dotnet这个命令是存在的,我跑的时候就没事了

/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll

我用谷歌搜索了它,但我发现的最佳答案表明它与用户 www-data 有关。我仍然无法弄清楚出了什么问题。任何帮助将不胜感激。

【问题讨论】:

  • 您是否确保用户www-data 具有/var/aspnetcore/hellomvc 的读取权限?
  • @Evk。谢谢你!似乎这就是问题所在。在 www-data 被授予权限后,它就起作用了!

标签: linux asp.net-core deployment


【解决方案1】:

查看WorkingDirectory路径,直接cd到路径。 就我而言,WorkingDirectory 路径文件夹丢失了,当我手动创建它时它开始工作。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    安装dotnet核心

    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
    sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
    wget -q https://packages.microsoft.com/config/ubuntu/18.04/prod.list
    sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
    sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
    sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
    sudo apt-get update
    sudo apt-get install apt-transport-https
    sudo apt-get install dotnet-sdk-2.1
    

    sudo nano /etc/systemd/system/api.service

    [Unit]
    Description=Api
    
    [Service]
    WorkingDirectory=/media/data/Services/Api
    ExecStart=/usr/bin/dotnet /media/data/Services/Api/Api.dll --sever.urls=http://*:7034
    Restart=always
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=Api
    User=www-data
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    TimeoutStopSec=90
    
    [Install]
    WantedBy=multi-user.target
    

    创建文件后运行这些命令

    systemd-escape "<value-to-escape>"
    sudo systemctl enable api.service
    sudo systemctl start api.service
    sudo systemctl status api.service
    

    注意 始终验证文件和文件夹的位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 2023-04-04
      • 2016-03-28
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多