• 三、ASP.NET Core 部署Linux


    预备工作

    1、删除dotnet core sdk

    sudo yum erase libunwind libicu

    2、删除链接

    sudo rm -rf /usr/local/bin 

    3、更新yum

    sudo yum update

    4、注册 Microsoft 签名密钥 

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

    5、添加 Microsoft 产品源(添加 Microsoft 产品源,不然就没有可用的包dotnet-sdk-2.0.0)

    sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

    上面的操作目的 1、从系统中删除 .NET Core 的所有旧预览版本。 2、要开始安装 .NET,您需要注册 Microsoft 签名密钥并添加 Microsoft 产品提要。每台机器只需要做一次

    一、准备条件

    1、系统CentOS 7.5

    2、使用捷径操作-Linux面板6.8安装命令 (默认创建WWW站点目录)

     或者

    3、最终的一步 : 然后依次安装依赖库和dotnet core  

    sudo yum install libunwind libicu 
    sudo yum install dotnet-sdk-2.0.0    

     

     我当前是7.3

     上面是我7.5的时候成功过的

    一、RPM方式

    1、导入rpm源

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

    3、安装基础依赖

    sudo yum -y install libunwind libicu

    4、安装SDK

    sudo yum -y install dotnet-sdk-2.0.0

    测试是否安装成功      dotnet --info可以确认是否安装成功

    二、操作步骤

    1、找到宝塔为你的网站创建号的WWW站点目录然后你在里面创建一个存放Core项目的站点目录 比如(Pulish文件夹-意味发布)

    (在顶级目录www/wwwroot    具体 1、cd  ../    2、ls查看是否有www目录     3、cd  www/wwwroot  4、mkdir Pulish -创建文件夹里面就是最终放入Core项目源码)

    2、压缩Core项目源码为rar格式, Pulish.rar 上传到wwwroot 内(之前创建的Pulish文件夹就可以删除,直接解压就替换掉了)

    3、运行命令: dotnet  FirstCoreWeb.dll

    访问测试结果

    # curl http://127.0.0.1:8001

    现在我们需要转发  需要修改ngin新配置文件

     

    location / {
    proxy_pass http://localhost:8001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $http_host;
    proxy_cache_bypass $http_upgrade;
    }

     重启 Nginx 

    输入ip地址即

    如果是bt创建的站点,则需要在新创站的配置文件加入请求该监听端口的转发配置,然后重启Nginx

     守护进程: 比如 dotnet xxx.dll 运行一个dotnetcore网站。你ctr+c 或者关闭命令窗口  dotnet进程就会被关闭掉  你无法访问网站。你就只能打开窗口一直放着,这样肯定有问题的。所以就用进程守护软件守护一下dotnet进程 

     (亲测:1、Vs2017  写的程序不需要,Vscode则关闭窗口或者Ctr+c进程就会关掉,所以Vscode的程序需要守护进程。2、阿里云服务器不需要配置入口5000或者8001。3、默认端口5000不行,更改的8001才成功。)

    创建一个 webapi 项目

    # 创建项目
    dotnet new webapi --no-https -o testwebapi
    # 发布项目
    cd testwebapi/
    dotnet publish -c Release
    cd bin/Release/netcoreapp2.1/publish
    # 运行项目
    dotnet testwebapi.dll
    

      

    使用 pm2 守护 ASP.NET Core 应用程序

    1、使用pm2需要安装nodejs

    2、安装pm2

    npm install pm2 -g     #安装 pm2
    

    3、结束我们刚刚运行的程序,就在我们刚刚的目录执行下面的命令:

    pm2 start "dotnet testwebapi.dll" --name testwebapi
    

    4、查看日志

    pm2 logs testwebapi
    

    5、查看应用程序信息

    pm2 info testwebapi
    

      

    6、监控应用程序

    pm2 monit testwebapi
    

    7、重启策略

    pm2 会在你的应用程序异常退出时,自动帮你重启,所谓异常退出,指退出代码非0。

    发布,并使用 pm2 启动(此处略)。

    通过 pm2 list查询应用程序重启次数为0:

    访问 api 触发异常退出:

    curl http://localhost:5000/api/values
    

    再次通过 pm2 list命令查询可以发现重启了:

      

    pm2 这个工具相对于 Supervisor 和 nohup 来说,对于Supervisor,没有配置,不用输很长的命令;对于 nohup 管理进程方便。

    pm2官方文档

    注意:依赖问题

    如果验证出现如下错误

    Failed to load /opt/dotnet/shared/Microsoft.NETCore.App/1.1.0/libcoreclr.so, error: libunwind.so.8: cannot open shared object file: No such file or directory

    Failed to bind to CoreCLR at '/opt/dotnet/shared/Microsoft.NETCore.App/1.1.0/libcoreclr.so'

    则安装:yum install libunwind

    如果验证出现如下错误

    Failed to initialize CoreCLR, HRESULT: 0x80131500

    则安装:yum install icu

    端口的问题

    其他:将 dotnet 添加到 PATH:   export PATH=$PATH:$HOME/dotnet

  • 相关阅读:
    【攻防世界】beginners-luck
    Virtual Judge 20210601 日常训练 AB题解
    20210419 Vj 组队练习赛 CDIHEB 题解
    20210415 日常组队练习赛 EGJACI题解
    20210412 组队赛 BCEFGH题解
    20210408 Codeforces Round #372 (Div. 2) ABC 题解
    Codeforces Round #280 (Div. 2) BC题解
    QLU 日常训练 20210311 (Codeforces )
    QLU ACM-ICPC 2020 Training Contest 12 @2014 ICPC Anshan [Cloned]
    Virtual Judge 20210219 日常赛
  • 原文地址:https://www.cnblogs.com/fger/p/10291876.html
Copyright © 2020-2023  润新知