部署ASP.NET Core程序到Linux系统

 

https://www.cnblogs.com/ants/p/5732337.html 

https://www.jb51.net/article/241514.htm

https://www.cnblogs.com/wyy1234/p/10542815.html 

一、前言

这篇文章我们将讲解如何将asp.net core 程序部署到linux。这里我们使用的是虚拟机里面安装的centos7。这里的asp.net core程序,以上篇文章中发布的框架依赖文件为例进行讲解。

 

二、安装运行时环境

 

1、在线安装

我们只是在linux上面部署应用程序,所以只需要安装asp.net core runtime即可。在安装.net之前,我们需要先注册microsoft密钥和源,在终端里面执行下面的命令:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

 

 

更新可供安装的产品:

sudo yum update

如下图所示:

 

 

最后安装asp.net core 运行时

sudo yum install aspnetcore-runtime-3.1

如下图所示:

 

 

这时就比较考验网速了,如果网速比较快,安装就很快。安装完成以后查看当前环境:

 

 

参考微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

  

三、上传文件

环境安装完成以后,我们将发布好的文件上传到服务器。

在终端里面新创建一个文件夹,用来存放我们上传的文件:

sudo mkdir /NetCoreDemo

如下图所示:

 

 

创建完成以后我们在xftp里面查看新创建的文件夹:

 

 

可以看到文件夹已经创建成功了。接着我们使用xftp将文件上传到刚才创建的文件夹下面:

 

 

接下来我们就可以部署了。

 

四、部署

 

1、使用kestrel启动

我们进入文件夹里面,然后直接使用命令行启动:

 

 

可以看到服务以及启动了。我们在网页中浏览:

 

 

网页没有任何的输入,这是为什么呢?因为localhost是内网地址,这里要加上--urls参数,

dotnet AspNetCoreDeployDemo.dll --urls http://*:5000

如下图所示:

 

 

这时我们在访问网页:

 

 

发现还是不能访问,这又是什么原因呢?原来在linux中防火墙默认是开启的,所以要想外网访问,还需要关闭防火墙或者是把5000端口添加到防火墙中,查看防火墙状态命令:

service firewalld status

如下图所示:

 

 

可以看到,现在防火墙是开启的,我们把5000端口添加到防火墙中:

firewall-cmd --zone=public --add-port=5000/tcp --permanent

如下图所示:

 

 

permanent:这个参数表示永久存在,否则重启防火墙配置就丢失了。

添加了端口以后需要重启防火墙:

firewall-cmd --reload

如下图所示:

 

 

可以看到这时就可以访问了。

 

 

我们也可以关闭防火墙:

service firewalld stop

如下图所示:

 

 

在生产环境中,不建议关闭防火墙,建议是开启防火墙,然后把相应的端口号添加到防火墙里面。

 

2、使用nginx作为反向代理

上面我们是使用的控制台的方式启动的,这种方式不能处理反向代理,负载均衡等,所以我们建议在linux上面使用nginx作为反向代理服务器。我们安装nginx。

因为默认情况下,nginx不在centos的资源库中,首先要执行下面的命令将nginx添加到资源库中:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

如下图所示:

 

 

然后就可以安装nginx了:

yum install nginx

如下图所示:

 

 

安装完以后启动nginx:

systemctl start nginx

如下图所示:

 

 

将nginx设置为开机启动:

systemctl enable nginx

 

 

nginx默认开启80端口,我们要把80端口添加到防火墙中,添加完以后重启防火墙:

firewall-cmd --zone=public --add-port=80/tcp --permanent

如下图所示:

 

 

这时我们在外网访问nginx:

 

 

我们看到这时可以访问nginx了。接下来我们配置nginx的反向代理。

首先进入nginx的安装目录,然后查看所有文件:

 

 

如上图所示,nginx.conf是主配置文件,使用vim编辑器打开该文件:

 

 

在上图中可以发现:下面有一句include /etc/nginx/conf.d/*.conf,这说明还有一些配置在conf.d目录里面,而我们配置反向代理,主要就是在conf.d文件里面,使用下面的命令进入conf.d命令:

cd conf.d

然后查看所有文件:

 

 

发现里面有一个default.conf的文件,使用vim编辑器打开该文件,然后修改如下:

 

 

listen表示监听的端口,这里是80端口。proxy_pass用来设置代理的地址。注意这里不要忘记最后的“;”。

保存以后使用下面的命令检查修改是否正确:

 

 

这说明修改的文件没有错误。配置成功以后,我们需要重启nginx服务:

nginx -s reload

如下图所示:

 

重启之后我们访问:

 

这说明有错误,提示信息告诉我们查看nginx日志,我们在nginx.conf里面查看日志路径:

 

 

然后我们进入该路径,查看下面的所有文件:

 

 

发现这下面有两个日志,我们先查看error.log:

 

 

使用下面的命令解决:

setsebool -p httpd_can_network_connect 1

我们重新访问:

 

 

这就可以访问了。我们在linux上面部署就成功了。

到此这篇关于部署asp.net core程序到linux系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

 

 

后台运行 nohup dotnet xxx.dll &

 

posted on 2023-04-20 17:55  youhui  阅读(137)  评论(0编辑  收藏  举报