【问题标题】:.NET Core bin path changes randomly on Amazon Linux 2.NET Core bin 路径在 Amazon Linux 2 上随机更改
【发布时间】:2022-08-15 23:33:48
【问题描述】:

我们使用 AWS Auto Scaling 在 Amazon Linux 2 中部署我们的 ASP.NET Core 应用程序

创建 linux 服务时,dotnet 二进制文件的路径配置为:ExecStart=/usr/bin/dotnet ...

该路径一直运行良好,直到几个月前,在新的自动缩放实例上,dotnet 二进制路径随机更改为/usr/bin/local/dotnet,从而强制使用新路径更新 systemd 服务文件。

今天我们的一个实例被 AWS 更新为一个新实例,但服务没有启动,因为 bin 路径再次更改为 /usr/bin/dotnet

我无法在文档或更改日志中找到有关更改此二进制路径的原因。

作为参考,ASP.NET Core 正在通过安装脚本自动安装在实例上,其中包含:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install -y aspnetcore-runtime-5.0

我们正在将我们的应用程序更新到 .NET 6,因为 .NET 5 将不再获得支持,但我认为这不会是导致此问题的原因。

关于为什么这条路径被随机改变的任何见解?

如果这无法阻止,有什么方法可以在 .service 文件中指定在它找到的任何路径上使用 dotnet?我认为设置ExecStart=dotnet ... 不会找到二进制文件。

    标签: .net linux amazon-web-services amazon-linux-2 .net-runtime


    【解决方案1】:

    你能在安装脚本中弄清楚吗? 比如用--DOTNET_PATH-- 填充路径。 以正常方式安装 dotnet,然后使用 which dotnet 并替换它。

    服务文件

    ExecStart=--DOTNET_PATH--
    

    安装脚本

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    sudo yum install -y aspnetcore-runtime-5.0
    sed -i "s/--DOTNET_PATH--/$(which dotnet)/" /path/to/servicefile
    

    或者,找出存在哪个文件,然后将一个文件符号链接到另一个文件也可以。

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 2020-07-13
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多