.net Core 部署到 Linux
1.环境说明
服务器系统:centos 7.4 64位
相关工具:xshel、xftp
.net core版本:2.2
vs版本:2017
服务器软件软件:.netcore、nginx、supervisor、policycoreutils-python
2.asp.net core应用程序准备
这边我使用一个空的web项目来进行演示,因为本篇主要介绍生产环境的部署,与应用无关。
首先发布到本地iis文件夹进行测试无误
具体iis部署.net core 见 :
https://www.cnblogs.com/liyuting/p/10310444.html
3.安装.net core sdk for centos7
此处引用微软官方给出的命令进行安装:
输入 dotnet --info 来查看是否安装成功
如果可以执行则表明.net core sdk安装成功。
4.部署asp.net core应用程序
在home 里面新建 test 文件夹,用来保存上传的core
上传之前发布的文件夹至/home/test/
检查是否能够运行
cd进入test 文件,执行linux.dll
这里可以新建一个连接,
# curl
出现如下图所示
如果出现这些信息则表示成功运行。
这时候我们只能在本地进行访问,无法使用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
rpm -ivh nginx.rpm
yum install nginx
安装成功!
输入: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是否可以访问。
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 使其即时生效
这时候再次尝试访问。
这个问题是由于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
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
再次尝试访问。
至此基本完成了部署。
其他参考链接:
linux下禁用、启用selinux:
dotnet core 2.0部署后外网ip访问:
推荐阅读
-
详解ASP.NET Core部署项目到Ubuntu Server
-
.Net Core 之 Ubuntu 14.04 部署过程(图文详解)
-
.net 4.5部署到docker容器的完整步骤
-
详解.net core webapi 前后端开发分离后的配置和部署
-
浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题
-
从.NET CORE2.2升级到3.0过程及遇到的一些问题
-
详解ASP.NET Core部署项目到Ubuntu Server
-
docker部署Asp.net core应用的完整步骤
-
.net core3.0部署Linux服务器 使用Docker容器和Nginx反代理教程
-
树莓派(4B)Linux + .Net Core嵌入式-HelloWorld(二)