三、ASP.NET Core 部署Linux

时间:2023-03-09 04:34:51
三、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站点目录)

三、ASP.NET Core 部署Linux

或者

三、ASP.NET Core 部署Linux

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

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

三、ASP.NET Core 部署Linux

三、ASP.NET Core 部署Linux

我当前是7.3

三、ASP.NET Core 部署Linux

上面是我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

三、ASP.NET Core 部署Linux

三、ASP.NET Core 部署Linux

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

三、ASP.NET Core 部署Linux

二、操作步骤

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

三、ASP.NET Core 部署Linux

访问测试结果

# curl http://127.0.0.1:8001

三、ASP.NET Core 部署Linux

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

三、ASP.NET Core 部署Linux

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地址即

三、ASP.NET Core 部署Linux

如果是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

三、ASP.NET Core 部署Linux  

使用 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

三、ASP.NET Core 部署Linux

5、查看应用程序信息

pm2 info testwebapi

三、ASP.NET Core 部署Linux  

6、监控应用程序

pm2 monit testwebapi

7、重启策略

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

三、ASP.NET Core 部署Linux

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

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

三、ASP.NET Core 部署Linux

访问 api 触发异常退出:

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

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

三、ASP.NET Core 部署Linux  

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

端口的问题

三、ASP.NET Core 部署Linux

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