.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目录下;然后输入 ...
随机推荐
- 如何把jar包发布到maven私服
1.格式 mvn deploy:deploy-file -DgroupId=com.qiyi -DartifactId=sphinx -Dversion=1.0 -Dpackaging=jar -Df ...
- Markdown中怎么上传图片
在网站中使用了Markdown编辑器,但是不能支持图片的直接粘贴
- C# 开源仪表盘库—Agauge App
1.简介 有个叫A.J.Bauer 的大神在System.Windows.Forms.Control类的基础上建立了一个显示各种仪表盘的类. 英文版简介:C# Tu ...
- Asp .Net core 2 学习笔记(2) —— 中间件
这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...
- unity2D 船只型物体驱动的实现
船只向前行驶的驱动力 假设在水中没有摩擦阻力,船只有惯性,船只可以转弯,按下前进键时船只会在力的作用下使得自身的物理运动方向变化到自身的前方方向,从而向前行进. 上图中 V:船当前物理速度 V1,V2 ...
- supervisor错误记录
今天在使用supervisor配置多个程序时遇到了问题如下 FATAL Exited too quickly (process log may have details) 然后就找到了日志文件 ...
- “全栈2019”Java多线程第三十三章:await与signal/signalAll
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- [HTML] css3 输入框input类型为number时,去掉上下箭头方式
<input type="number" ...> <style> input::-webkit-outer-spin-button, input::-we ...
- JSONP是什么
摘自:https://segmentfault.com/a/1190000007935557 一.JSONP的诞生 首先,因为ajax无法跨域,然后开发者就有所思考 其次,开发者发现, <scr ...
- Redis学习系列四Hash(字典)
一.简介 Redis中的Hash字典相当于C#中的Hashtable,是一种无序字典,内存存储了很对的键值对,实现上和Hashtable一样,都是"数组+链表"二维结构,都是对关键 ...