CentOS 8 部署 ASP.NET Core 3.1 应用程序 kestrel+Nginx IIS+kestrel
vs2019发布到IIS 下载文档https://files.cnblogs.com/files/netlock/%E4%BD%BF%E7%94%A8VS2019%E5%8F%91%E5%B8%83NETCore%E7%A8%8B%E5%BA%8F%E5%B9%B6%E9%83%A8%E7%BD%B2%E5%88%B0IIS.zip
服务器安装IIS
选择完点击下一步,从互联网选择更新等待安装,安装好了最好重启一下。重启好了。打开控制面板----管理工具--------IIS管理器 看图是下一个不是上一个 建议右击保存到开始屏幕后面好找
打开右击网站,添加网站,如下图所示,网站名字就是一个命名,应用程序可以共用一个也可以新建,后面还要配置应用程序池,一般选择集成的类型,.Net 项目(除了Core)选择.NET CLR v4.xxx的版本,如果没有,就是安装功能的时候你没有添加。
运行起来就算只有一个Index.html文件都能访问。如果没有出来考虑一下错误
1、网站没有权限,你要点击网站下面你建立的那个网站授权。授予IIS的权利;
2、.Net CRL版本过低了现在有的.Netfarnwork都用了4.8了IIS上面不支持了那么高的,还要自行安装;
3、端口没有开放,远程服务器的端口要去控制台自己开的,我的是阿里云,就要上控制台管理出站入站规则里面添加出站、进站规则;
4、防火墙的问题,关了试试;
5、目录浏览打开了,需要关闭
.Net Core3.1发布IIS
Net Core3.1 发布到IIS要安装两个工具 aspnetcore-runtime 跟 dotnet-hosing
最好本地vs发布环境和服务器上的core环境相一致。vs 发布环境安装 SDK3.1.2。IIS服务器上安装 core Runtime 3.1.2和Hosting Bundle 3.1.2 这2个安装包。(注意,如果iis服务器环境安装了以前版本的core,比如说3.0,发布后可能会有500错误。本人发布遇到这个问题,删除旧版本统一新版本解决。)
core 3.1下载地址 https://dotnet.microsoft.com/download/dotnet-core/3.1
发布之后 运行dotnet xxx.dll 成功继续下一步
注意:
1、这里的应用程序池要改为.NET CLR版本选择无托管代码;
2、如果安装了dotnet-hosing其他的项目启动503 就安装这个 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
安装IIS和Windows Server Hosing之后 ,重启IIS服务,检查IIS"模块"中是否有 “AspNetCoreModule2”
创建网站,选择Asp.Net Core的发布目录,设置IIS应用程序池为“无托管 代码”
如果是64位,注意要设置,如下图
坑
注意:如果是RazorPage项目,可能需要设置下面的属性为true。
首先是你的服务器需要有core 的运行环境,安装前先关闭iis
dotnet-hosting-3.1.4-win.exe 可以去微软的官网找最新的版本(去微软的官网找你要的版本就好了)
安装成功后,第一个坑出现了,启动iis,发现原来在iis上的网站都报503错误了。
直接玩大了,最后发现就是这个东西搞的鬼,你卸载它iis之前的网站就正常了。一度让我都要放弃发布到iis上去了。
但是因为公司需要还是硬着头皮继续上。
网上找了半天终于有说的
C:\Windows\System32\inetsrv\config\applicationHost.config 修改此文件下的两处地方
<add name="AspNetCoreModuleV2" image="%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll" preCondition="bitness64" />
<add name="AspNetCoreModuleV2" preCondition="bitness64" />
终于ok
安装成功,iis上的其它网站也不报503的错误了
但是core的网站报503,去它大爷啊,在iis上core竟然有这么多问题,关键报503错误又不晓得是什么问题
后来直接运行发布的core 的exe文件竟然没办法正常运行
终于找到问题
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145 下载安装搞定
CentOS安装 .NET Core SDK
SDK 安装:请参照微软官方文档 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
CentOS 7则需要先 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
.NET Core 3.1 在 CentOS 8 的默认包存储库中有提供,直接使用下面命令安装 SDK:
sudo dnf install dotnet-sdk-3.1
安装完成后,使用 dotnet --info 命令查看是否能正确输出当前 SDK 信息
建立目录存放net项目
mkdir dotnet
cd dotnet
发布项目
将发布文件夹(Publish)目录文件复制至新建的目录
首先压缩打包好的部署文件上传到刚才创建的目录 netlock
可以在这设置端口 *代表所有 配置一个HTTP就行 把HTTPS删了 因为没有SSL
启动站点
dotnet NetLock.Presentation.Api.dll 或者指定端口 dotnet NetLock.Presentation.Api.dll --urls http://*:1031
ctrl+z可以退出至命令行 此时项目已运行成功 有防火墙记得开端口
防火墙命令
firewall-cmd --zone=public --add-port=1031/tcp --permanent # 开放1031端口 firewall-cmd --zone=public --list-ports #查看防火墙所有开放的端口 firewall-cmd --reload # 配置立即生效 sudo systemctl start firewalld #打开防火墙 systemctl stop firewalld.service #关闭防火墙 firewall-cmd --state #查看防火墙状态
firewall-cmd --reload 重启防火墙
shutdown -r now #立刻重启(root用户使用)
添加nginx做反向代理
上面我们是使用的控制台的方式启动的,这种方式不能处理反向代理,负载均衡等,所以我们建议在Linux上面使用Nginx作为反向代理服务器。我们安装Nginx。
1 使用命令 sudo yum install epel-release
添加nginx包存储库
2 使用命令 sudo yum install nginx
安装nginx
3 使用命令 sudo systemctl start nginx
启动nginx
4 使用命令 ps -ef |grep nginx
验证nginx是否启动成功
5 可以使用命令 sudo systemctl enable nginx
设置nginx开机启动
6 使用命令 sudo systemctl start nginx重启nginx
7 Nginx默认开启80端口,我们要把80端口添加到防火墙中,添加完以后重启防火墙:firewall-cmd --zone=public --add-port=80/tcp --permanent
好了之后用ip地址访问就出现45.32.15.83
配置nginx,设置代理端口
配置文件/etc/nginx nginx.conf文件
先把默认这个注释或者改也可以
然后添加一个 微软官方配置
server {
listen 80; #监听的端口 也就是网站程序将来要使用点端口 location / {
proxy_pass http://localhost:1031; #此处即asp.net core 程序真实的地址。即上边设置好的地址和端口
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
改好之后 重启Nginx
nginx -s reload sudo systemctl start nginx重启nginx
重点 配置完成之后必须执行
setsebool -P httpd_can_network_connect 1 写入配置文件的命令,重启后保留
shutdown -r now #立刻重启(root用户使用)
这就可以访问了。我们在Linux上面部署就成功了
就可以直接用80端口访问了 反向代理了1031端口
添加守护进程
为什么要添加守护进程,有以下原因
1 asp.net core程序运行在shell中,shell关闭会导致该web应用关闭
2 应用程序意外终止的话需要在shell里重新启动
3 服务器宕机或者意外重启的话,需要重新启动shell,然后重新启动web程序
使用守护进程supervisor
1)相关命令
1 使用命令 yum install epel-release 和 yum install supervisor 安装supervisor
2 使用命令 systemctl start supervisord.service
启动服务
3 使用命令 systemctl status supervisord.service 查看服务状态
4 设置开机启动 systemctl enable supervisord.service
5 重启 supervisorctl reload
2)文件配置
1 在 /etc/supervisord.d
创建文件 netlock.ini
2 配置 netlock.ini 如下
[program: NetLock.Presentation.Api] 程序的名称
command = dotnet NetLock.Presentation.Api.dll 执行的命令
directory = /root/dotnet/netlock 命令执行的目录
environment = ASPNETCORE__ENVIRONMENT=Production 环境变量
user = root 执行进程的用户
stopsignal = INT
autostart = true 是否自动启动
autorestart = true 是否自动重启
startsecs = 2 自动重启间隔
stderr_logfile = /root/dotnet/log/netlock.err.log 标准错误日志自己建文件夹
stdout_logfile = /root/dotnet/log/netlock.log 标准输出日志自己建文件夹
把后面汉字删除 复制上去 重启就行了。
这样就可以服务器开机自动启动Coreweb网站
坑:
1、域名无法访问,502错误,解决方法
可以关闭防火墙。systemctl stop firewalld.service。但是这种方法太彻底。
可以只开通对应的端口即可
firewall-cmd --query-port=80/tcp查询端口是否开放
firewall-cmd --zone=public --add-port=80/tcp --permanent 开放指定的端口,这里需要开放的端口包括:80,Core网站对应的端口,
systemctl restart firewalld.service 重启防火墙,使之生效。
2、一切都无误,但是还是无法访问域名,但是ip地址可以访问,这里需要设置linux服务器的网络访问配置
setsebool -P httpd_can_network_connect 1 写入配置文件的命令,重启后保留
3、检查windows端的网络防火墙,要么关闭,要么在入站、出站规则中允许指定的端口。网卡的dns要设置成linux服务器的ip地址,用nslookup www.sjj.com检查一下是否正常即可。用tracert 跟踪一下,如果没有走指定的dns,可以到windows/system32/driver/etc/hosts文件指定一下。
4、遇到Coreweb访问都正常,但是涉及到访问数据库就不正常的情况(数据库不在linux服务器上),此时需要:
1、设置数据库可以远程访问
2、linux打开指定的端口可以允许通过,例如1433。
综上,就可以实现通过域名可以反向代理到指定的Coreweb网站上。
参考博客https://www.cnblogs.com/w5942066/p/13411646.html
CentOS 8 部署 ASP.NET Core 3.1 应用程序 kestrel+Nginx IIS+kestrel的更多相关文章
- CentOS 7 部署 ASP.NET Core 应用程序
原文:CentOS 7 部署 ASP.NET Core 应用程序 看了几篇大牛写的关于 Linux 部署 ASP.NET Core 程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大 ...
- CentOS 7部署ASP.NET Core应用程序
看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...
- 【转载】CentOS 7部署ASP.NET Core应用程序
看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...
- 【转】CentOS 7部署ASP.NET Core应用程序
很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...
- 【详细】【转】CentOS 7部署ASP.NET Core应用程序
很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...
- 部署ASP.NET Core最简单的办法,使用IIS部署ASP.NET Core应用
本文迁移自Panda666原博客,原发布时间:2021年3月28日.写原文的时候.NET的最新版本是5.0,现在7的preview出来了,时间真快啊.抽空再写个在Windows Server Core ...
- 在Linux CentOS上部署Asp.Net Core项目(Tengine、Asp.Net Core、Centos、MySql)
一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...
- Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...
- CentOS 下部署 ASP.NET Core环境
一.安装dotnet 1.下载运行环境 https://www.microsoft.com/net/download/linux 下载Runtime:https://go.microsoft.com/ ...
随机推荐
- Java集合【7】--List接口超级详细解析
目录 1.List接口的特性 2.List接口的源码解析 3.相关子类介绍 3.1 ArrayList 3.1.1 成员变量 3.1.2 构造方法 3.1.3 常用增删改查方法 添加元素 查询元素 更 ...
- GitHub 访问不顺怎么办?在线等,急
在日常的工作生活学习中 经常会遇到无法访问 GitHub.访问不稳定等等突发情况 这不,今天群里的朋友们又双叒叕遇到了问题-- 为方便用户从 GitHub 快速备份开源仓库,稳定访问,CODING 现 ...
- Visual Studio 连接 SQL Server 关键代码
首先先把Visual Studio 上面工具打开-->连接数据库-->选择Microsoft SQL Server进入(有两种验证方式:1.windows验证方式[就是本机验证]:2.SQ ...
- D. Numbers on Tree(构造)【CF 1287】
传送门 思路: 我们需要抓住唯一的重要信息点"ci",我的做法也是在猜想和尝试中得出的,之后再验证算法的正确性. 我们在构造中发现,如果树上出现了相同的数字,则会让树的构造变得不清 ...
- Java 基础之 String 类
String String 被声明为 final,因此不能被继承.(Integer 等包装类也不能被继承) 在 java8 中,String 内部使用 char 数组 来存储数据 public fin ...
- 20201101_Python的虚拟环境问题
虚拟环境使用总结: 1. 安装创建虚拟环境要使用的工具virtualenv pip install virtualenv -i https://pypi.douban.com/simple/ #使用 ...
- ES6简单理解基本使用
let const 原来的var声明标识符:可以重复声明,编译不报错. let,const声明标识符:不能重复声明,再声明编译报错. var声明的标识符作用域是当前函数,let和const是当前{块} ...
- Hbase的基本原理(与HIVE的区别、数据结构模型、拓扑结构、水平分区原理、场景)
重点:HBase的基本数据模型.拓扑结构.部署配置方法,并介绍通过命令行和编程方式使用HBase的基本方法. HBase:一种列存储模式与键值对相结合的NoSQL软件,但更多的是使用列存储模式,底层的 ...
- Power BI八年回望记
本人从事BI,数据仓库领域相关工作15个年头,这15年目睹了这个方向从火爆到逐渐被大数据领域不断吞食.中间零散关注Power BI好长时间,也算目睹了它的成长. 那天在网络上搜索power bi,无意 ...
- java试用静态图片制作gif
参考博客:https://www.cnblogs.com/dreammyle/p/4843365.html 代码中需要的依赖: <!-- gif --> <dependency> ...