欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net Core 部署到 Linux

程序员文章站 2022-04-08 21:25:10
1.环境说明 服务器系统:CentOS 7.4 64位 相关工具:Xshel、Xftp .net Core版本:2.2 VS版本:2017 服务器软件软件:.netcore、nginx、supervisor、policycoreutils-python 2.ASP.NET Core应用程序准备 这边 ......

1.环境说明

服务器系统:centos 7.4  64位

相关工具:xshel、xftp

.net core版本:2.2

vs版本:2017

服务器软件软件:.netcore、nginx、supervisor、policycoreutils-python

2.asp.net core应用程序准备

这边我使用一个空的web项目来进行演示,因为本篇主要介绍生产环境的部署,与应用无关。

.net Core 部署到 Linux

首先发布到本地iis文件夹进行测试无误

具体iis部署.net core 见 :

 https://www.cnblogs.com/liyuting/p/10310444.html

3.安装.net core sdk for centos7

此处引用微软官方给出的命令进行安装:

输入 dotnet --info 来查看是否安装成功

.net Core 部署到 Linux

 

如果可以执行则表明.net core sdk安装成功。

4.部署asp.net core应用程序

在home 里面新建 test 文件夹,用来保存上传的core

上传之前发布的文件夹至/home/test/

.net Core 部署到 Linux

.net Core 部署到 Linux

检查是否能够运行

 cd进入test 文件,执行linux.dll

.net Core 部署到 Linux

这里可以新建一个连接,

# curl 

出现如下图所示

.net Core 部署到 Linux

如果出现这些信息则表示成功运行。

这时候我们只能在本地进行访问,无法使用ip访问,这时候我们需要部署一个web容器来进行转发。

 

5.配置nginx

5.1 安装nginx

curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm

.net Core 部署到 Linux

rpm -ivh nginx.rpm

yum install nginx

.net Core 部署到 Linux

安装成功!

输入:systemctl start nginx 来启动nginx。

输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。

5.2配置防火墙

命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口)

命令:systemctl restart firewalld(重启防火墙以使配置即时生效)

ps:此处如果出现错误,请检查防火墙的开启状态。

直接输入ip测试nginx是否可以访问。

 .net Core 部署到 Linux

5.3 配置nginx对asp.net core应用的转发

修改 /etc/nginx/conf.d/default.conf 文件。

将文件内容替换为

server {
    listen 80;
    location / {
        proxy_pass http://localhost:5000;
        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;
    }
}

上传至centos进行覆盖。 

执行:sudo nginx -s reload 使其即时生效 

这时候再次尝试访问。

.net Core 部署到 Linux

这个问题是由于selinux保护机制所导致,我们需要将nginx添加至selinux的白名单。

接下来我们通过一些命令解决这个问题。。

yum install policycoreutils-python

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -m mynginx

sudo semodule -i mynginx.pp

.net Core 部署到 Linux

ps:如果执行命令时出现下列情况:

执行 sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -m mynginx
时出现:you must specify the -p option with the path to the policy file

请先检查selinux是否被禁用掉了

在/etc/sysconf下有一个selinux文件,使用记事本打开,更改其中的selinux项的值就可以了。

  • selinux=disable  禁用selinux
  • selinux=enforcing  使用selinux

再次尝试访问。

.net Core 部署到 Linux

 

至此基本完成了部署。

 

 

 

 其他参考链接:

                         linux下禁用、启用selinux: 

                         dotnet core 2.0部署后外网ip访问: