.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
此处引用微软官方给出的命令进行安装:
https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
输入 dotnet --info 来查看是否安装成功

如果可以执行则表明.NET Core SDK安装成功。
4.部署ASP.NET Core应用程序
在home 里面新建 test 文件夹,用来保存上传的core
上传之前发布的文件夹至/home/test/


检查是否能够运行
cd进入test 文件,执行Linux.dll

这里可以新建一个连接,
# curl http://localhost:5000
出现如下图所示

如果出现这些信息则表示成功运行。
这时候我们只能在本地进行访问,无法使用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 ;
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
再次尝试访问。

至此基本完成了部署。
其他参考链接:http://www.cnblogs.com/ants/p/5732337.html
Linux下禁用、启用SeLinux: https://www.cnblogs.com/tdcqma/p/5671299.html
DotNet Core 2.0部署后外网IP访问: https://www.cnblogs.com/chenyangsocool/p/7707495.html
.net Core 部署到 Linux的更多相关文章
- Asp.Net Core部署到Linux服务器
从2016年7月, .NET Core1.0 正式发布开始,由于时间问题,我没怎么关注过.NET Core,最近刚抽出点时间研究了下,先讲下如何把ASP.NET Core部署到Linux上吧.这里我用 ...
- .NET Core部署到linux(CentOS)最全解决方案,常规篇
本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装.Xshell,Xftp的使用方法.git在linux下的交互使用以及.net core ...
- .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
在.NET Core部署到linux(CentOS)最全解决方案,常规篇一文,我们详细讲解了传统的.NET Core部署到Linux服务器的方法,学到了Linux在虚拟机下的安装.Xshell,Xft ...
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...
- .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)
通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .N ...
- 从零开始,将ASP.NET Core部署到Linux生产环境
研究.NET Core已经一段时间了,一直都是在Windows上开发,这2天尝试着将公司一个很简单的内部Web项目改造成了ASP.NET Core,并且部署到Linux上.生产环境如下: Linux ...
- ASP.NET CORE部署到Linux
ASP.NET CORE部署到CentOS中 在Linux上安装.NET Core 参考:https://www.microsoft.com/net/core#linuxcentos 配置Nginx ...
- .net core部署到linux可能碰到的问题
缺少icu库以独立部署 (SCD)的方式发包,运行时报错错误信息:FailFast: Couldn't find a valid ICU package installed on the system ...
- 记录.NET Core部署到Linux之发布项目到Linux(2)
1.选择文件夹发布项目到本地,通过Xftp上传文件到/home/wwwroot下:下面具体介绍下 2.通过Xftp直接拖拽压缩包到linux下,通过命令cd /home/wwwroot目录下;然后输入 ...
随机推荐
- Matlab中函数句柄@的作用及介绍
问:f=@(x)acos(x)表示什么意思?其中@代表什么?答:表示f为函数句柄,@是定义句柄的运算符.f=@(x)acos(x) 相当于建立了一个函数文件:% f.mfunction y=f(x) ...
- CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU
CAS的核心就是其Ticket,及其在Ticket之上的一系列处理操作.CAS的主要票据有TGT.ST.PGT.PGTIOU.PT,其中TGT.ST是CAS1.0协议中就有的票据,PGT.PGTIOU ...
- 《AngularJS深度剖析与最佳实践》笔记: 第二章 概念介绍
第二章 概念介绍 2.1 什么是UI? 用户界面包括内容(静态信息+动态信息), 外观, 交互. 在前端技术栈中分别由HTML, CSS和JS负责. 进一步抽象, 分别对应于MVC三个主要部分: Mo ...
- Android 四大组件之" ContentProvider "
前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...
- cad2020卸载/安装失败/如何彻底卸载清除干净cad2020注册表和文件的方法
cad2020提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2020失败提示cad2020安装未完成,某些产品无法安装,也有时候想重新安装cad2020 ...
- iOS-发送短信验证码倒计时
/** 发送手机验证码 */ -(void)startSenderYzmMessage{ __block ; //倒计时时间 dispatch_queue_t queue = dispatch_get ...
- Cesium Vue开发环境搭建
最近被问到如何在 vuejs 中集成 cesium,首先想到的官网应该有教程.官网有专门讲 Cesium and Webpack(有坑),按照官网的说明,动手建了一个Demo,在这记录下踩坑过程. 一 ...
- IQueryable与IEnumerable
IEnumerable: 从服务器处取回所有数据,在客户端根据过滤条件进行过滤再返回结果. IQueryable: 从服务器处进行过滤,直接返回过滤后的结果.
- (转)WebSphere的web工程中怎么获取数据源
原文:http://aguu125.iteye.com/blog/1694313 https://blog.csdn.net/bigtree_3721/article/details/44900325 ...
- C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)
常规的调用ToString()方法,存在两个问题. (1).调用者无法控制字符串的格式 (2).调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前 ...