linux 布署Asp.net Core 6.0 应用 (宝塔面板)

Posted 圆滚滚的胖狸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 布署Asp.net Core 6.0 应用 (宝塔面板)相关的知识,希望对你有一定的参考价值。

云服采用阿里云的操作系统镜像

  • Alibaba Cloud Linux 3选择Linux kernel 5.10 LTS,同时默认搭载GCC 10.2、binutils 2.35、glibc 2.32等基础软件。

1。设置服务器远程连接密码,并远程连接服务器(浏览器连接即可)

2。注册登录宝塔,获取安装链接。注意不要选择在线安装,会有失败的几率

 

虽然 宝塔说明是只能安装于CentOs7.x。但实测在号称兼容CentOs8.x 的 Alibaba Cloud Linux下可以正常安装和使用。

安装成功出现以下内容,此时默认端口为8888,注意服务器的防火墙或者安全组,要做端口开放

 

 登录宝塔面板,用给定的用户名密码,绑定宝塔的账号。这个是自己在宝塔注册的账号密码

3。安装nginx第一次登录,会跳出安装推荐。可以根据需要安装。这里我只需要nginx,所以只安装nginx

 开始安装

 安装完毕 

 更改默认端口。宝塔面板左侧,面板设置

 

 

提交修改后,重新登录面板。注意,修改的端口要在服务器的防火墙(安全组)中放行

4。安装dotnet 运行时sdk。

  

更换端口后第一次登录终端,会要求重新输入密码,注意,此处密码是服务器的ssh密码,就是最开始重置的那一个

在终端中执行以下几个命令

sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm。这一步很重要,没有这一步,下一步不给执行

sudo yum install aspnetcore-runtime-6.0,如果只是发布,这个就够了

sudo yum install dotnet-sdk-6.0

安装完成后查看一下dotnet位置

which dotnet

 

dotnet 6.0默认是装在这里的,/usr/bin这个路径已经在path中,所以我们不需要再添加

上传打包好的程序文件。宝塔面板支持目录上传

 

特别要注意文件夹名,centos大小写敏感

6。再次打开终端,新建service文件,dotnet发布在linux上的原理是,先由sdk将dll文件解析并运行,然后由nginx反向代理来访问。所以要将dotnet程序运行起来,并将它注册为系统的service。

运行 vim /etc/systemd/system/myweb.service

文件内容:

[Unit]

Description=MyWeb



[Service]

WorkingDirectory=/www/myWeb

ExecStart=/usr/bin/dotnet /www/myweb/myweb.Web.dll --urls=http://localhost:3000

Restart=always

RestartSec=10

SyslogIdentifier=myweb

User=root

Environment=ASPNETCORE_ENVIRONMENT=Production

Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false



[Install]

WantedBy=multi-user.target

然后按ESC,然后输入:wq退出

注意:第一是大小写敏感,第二是dotnet 6.0安装时会默认路径,并且会将dotnet加入到/usr/bin,而这个路径已经加入到path,无需再添加了。

注意,ExecStart一行,/app/myweb/myweb.Web.dll换成你自己项目的dll文件

执行systemctl enable myweb.service

执行systemctl start myweb.service

执行systemctl status myweb.service,若看到绿色的active(running)字样说明服务正常启动了。

7。配置Nginx站点

 

 这里要注意,如果监听端口不是80,那么要在域名一栏里写上:xxx.com:xxxx(端口号),网站建立后,端口号无法修改。如果需要改,只能删除重建

添加站点后,点击设置

 可以将原本的内容删除掉。如果你对配置文件很熟悉,或者有特殊的东西要设置,也可以增加内容。这里我直接复制了MSDN上提供的模板

server 
    listen        80;
    server_name   localhost;//域名
    location / 
        proxy_pass         http://127.0.0.1:3000; //自定义端口号,需要在云服安全组或防火墙中添加规则(放开)
        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;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    

存盘退出

 

执行nginx -s reload 以刷新设置

此时网站可以正常访问

我发布的程序是asp.net core api 。发布过程与发布网站相似,但发布完成后发现swagger无法访问,但api的功能是可以使用的。

这里要注意:

服务端口号与监听端口号要不同才可以,防火墙(安全组)放行的是监听端口号。

至此宝塔面板下dotnet6.0布署完成。

补充说明:非宝塔面板下,可以用dnf代替yum

以上是关于linux 布署Asp.net Core 6.0 应用 (宝塔面板)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 6.0 Core 迁移 ASP.NET Core 7.0

在 ASP.NET Core 6.0 中使用 Serilog

在 ASP.NET Core 6.0 中获取参数错误

ASP.NET Core 6.0 本地化

ASP.NET Core 6.0 本地化

ASP.NET Core 6.0 本地化