zoukankan      html  css  js  c++  java
  • 三、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

  • 相关阅读:
    BestCoder17 1001.Chessboard(hdu 5100) 解题报告
    codeforces 485A.Factory 解题报告
    codeforces 485B Valuable Resources 解题报告
    BestCoder16 1002.Revenge of LIS II(hdu 5087) 解题报告
    codeforces 374A Inna and Pink Pony 解题报告
    codeforces 483B Friends and Presents 解题报告
    BestCoder15 1002.Instruction(hdu 5083) 解题报告
    codeforces 483C.Diverse Permutation 解题报告
    codeforces 483A. Counterexample 解题报告
    NSArray中地内存管理 理解
  • 原文地址:https://www.cnblogs.com/fger/p/10291876.html
Copyright © 2011-2022 走看看