CentOS安装 .NET Core 运行环境 并运行 .NET Core 程序

版权申明:本文为原创文章,转载请注明原文出处

原文链接:http://blog.pp6f.com/2022/03/29/Dev/netcore/

索引

CentOS7安装.Net Core

安装前准备

  1. 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令

     sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    
  2. 首先运行 升级所有包同时也升级软件和系统内核

     sudo yum update
    

安装

  • 如果你只是运行asp.net core的web程序 执行下面安装指令 只安装aspnetcore-runtime运行时

      sudo yum install aspnetcore-runtime-3.1
    
  • 如果你运行.net core应用程序 安装dotnet-runtime运行时

      sudo yum install dotnet-runtime-3.1
    
  • 如果你需要在centos上编译开发.net core应用则需要安装SDK

      sudo yum install dotnet-sdk-3.1
    

注:如果是服务器,安装运行环境,只需要安装aspnetcore-runtime和dotnet-runtime就可以了

使用

查看信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# dotnet --info
It was not possible to find any installed .NET Core SDKs
Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
https://aka.ms/dotnet-download

Host (useful for support):
Version: 3.1.23
Commit: 7af614fde0

.NET Core SDKs installed:
No SDKs were found.

.NET Core runtimes installed:
Microsoft.AspNetCore.App 3.1.23 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.23 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download

运行

  • 进入项目文件夹 运行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@localhost dome2]# dotnet dome2.dll
    info: Microsoft.Hosting.Lifetime[0]
    Now listening on: http://localhost:5000
    info: Microsoft.Hosting.Lifetime[0]
    Application started. Press Ctrl+C to shut down.
    info: Microsoft.Hosting.Lifetime[0]
    Hosting environment: Production
    info: Microsoft.Hosting.Lifetime[0]
    Content root path: /root/dome2
    ^Cinfo: Microsoft.Hosting.Lifetime[0]
    Application is shutting down...

    进入上传的asp.net core程序所在文件夹
    注意:运行dll程序是必须在当前文件夹运行 否者 会影响站点根目录路径 造成不可预计错误 如静态文件404

  • 可以在后面增加参数来修改默认的5000端口 如:

      dotnet xxx.dll --urls http://localhost:4000
    

    上面的指令表示:启动后监听所有可访问 域名或IP 的4000端口

  • 增加参数来实现后台运行 如:

      nohup dotnet /路径/xxx.dll --urls http://localhost:4000 &
    

    简单说明 nohup 表示不挂断的运行命令 后面的 & 表示这个命令放在后台执行

创建服务 实现开机启动

  • 创建服务文件

      vim /usr/lib/systemd/system/testApp.service
    
  • 文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=testApp for centos7

[Service]
WorkingDirectory=/home/testApp/Release
ExecStart=/usr/bin/dotnet /home/testApp/Release/testApp.dll
Restart=always
RestartSec=10 # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-testApp
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
  • 常用命令

      //设置开机启动testApp.service服务
      systemctl enable testApp.service
      //开启服务
      systemctl start testApp.service
      //查询服务状态
      systemctl status testApp.service
      //停止服务
      systemctl stop testApp.service
      //重启服务
      systemctl restart testApp.service
      //修改service文件后 执行重载命令
      systemctl daemon-reload
    

配置 nginx 反向代理到 asp.net core 程序

  • 在命令行输入whereis nginx 找到nginx的安装目录 通常为:/usr/local/nginx/

  • 配置文件 找到配置文件/usr/local/nginx/conf/nginx.conf

  • 编辑修改 可以使用vi 或则使用sftp工具编辑修改

  • 找到需要配置反向代理的server块 添加下面反向代理参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    server {
    listen 80; #此配置的是80端口 也可以配置443 ssl端口的HTTPS
    server_name 192.168.1.2;
    access_log /usr/local/nginx/localhost/logs/access.log; #自定义日志路径
    error_log /usr/local/nginx/localhost/logs/error.log; #自定义日志路径

    location / {
    # root abc.com;
    # index index.html index.htm;
    proxy_pass http://127.0.0.1:4000; #反向代理目标服务器
    proxy_http_version 1.1; #版本
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root localhost;
    }
    }

    修改后保存

  • 返回到/usr/local/nginx/目录 执行指令:

      ./sbin/nginx -s reload
    

    加载修改后到 新配置

  • 外网现在可以访问了 http://api.test.net 或 https:// api.test.net

注意问题

在linux上运行asp.net core时需要注意 静态文件404看次文档

  1. wwwroot是放静态文件的,Startup的配置里面要app.UseStaticFiles();

  2. 在不同的目录下donet xxx.dll,其目录就作为基目录。
    也就是说假如你在/root文件夹内执行dotnet MySite.dll,你站点就会把/root作为基目录,
    而你的wwwroot是放在其他目录的 如:/usr/mysite/wwwroot 那你所有静态文件就404了。
    正确的操作姿势是,需要cd 进入站点目录启动站点,再启动站点

  3. 更新站点的时候也要注意。与IIS不同,在Linux上dotnet不占用dll,更新站点可以直接删除/替换所有文件。但是站点需要重启,不然运行的还是更新前的

CentOS安装 .NET Core 运行环境 并运行 .NET Core 程序

http://blog.pp6f.com/2022/03/29/Dev/netcore/

发布于

2022-03-29

更新于

2023-03-10

许可协议

评论