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的更多相关文章

  1. CentOS 7 部署 ASP.NET Core 应用程序

    原文:CentOS 7 部署 ASP.NET Core 应用程序 看了几篇大牛写的关于 Linux 部署 ASP.NET Core 程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大 ...

  2. CentOS 7部署ASP.NET Core应用程序

    看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...

  3. 【转载】CentOS 7部署ASP.NET Core应用程序

    看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...

  4. 【转】CentOS 7部署ASP.NET Core应用程序

    很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...

  5. 【详细】【转】CentOS 7部署ASP.NET Core应用程序

    很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...

  6. 部署ASP.NET Core最简单的办法,使用IIS部署ASP.NET Core应用

    本文迁移自Panda666原博客,原发布时间:2021年3月28日.写原文的时候.NET的最新版本是5.0,现在7的preview出来了,时间真快啊.抽空再写个在Windows Server Core ...

  7. 在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.总结 ...

  8. Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

    1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...

  9. CentOS 下部署 ASP.NET Core环境

    一.安装dotnet 1.下载运行环境 https://www.microsoft.com/net/download/linux 下载Runtime:https://go.microsoft.com/ ...

随机推荐

  1. Java集合【7】--List接口超级详细解析

    目录 1.List接口的特性 2.List接口的源码解析 3.相关子类介绍 3.1 ArrayList 3.1.1 成员变量 3.1.2 构造方法 3.1.3 常用增删改查方法 添加元素 查询元素 更 ...

  2. GitHub 访问不顺怎么办?在线等,急

    在日常的工作生活学习中 经常会遇到无法访问 GitHub.访问不稳定等等突发情况 这不,今天群里的朋友们又双叒叕遇到了问题-- 为方便用户从 GitHub 快速备份开源仓库,稳定访问,CODING 现 ...

  3. Visual Studio 连接 SQL Server 关键代码

    首先先把Visual Studio 上面工具打开-->连接数据库-->选择Microsoft SQL Server进入(有两种验证方式:1.windows验证方式[就是本机验证]:2.SQ ...

  4. D. Numbers on Tree(构造)【CF 1287】

    传送门 思路: 我们需要抓住唯一的重要信息点"ci",我的做法也是在猜想和尝试中得出的,之后再验证算法的正确性. 我们在构造中发现,如果树上出现了相同的数字,则会让树的构造变得不清 ...

  5. Java 基础之 String 类

    String String 被声明为 final,因此不能被继承.(Integer 等包装类也不能被继承) 在 java8 中,String 内部使用 char 数组 来存储数据 public fin ...

  6. 20201101_Python的虚拟环境问题

    虚拟环境使用总结: 1. 安装创建虚拟环境要使用的工具virtualenv  pip install virtualenv -i https://pypi.douban.com/simple/ #使用 ...

  7. ES6简单理解基本使用

    let const 原来的var声明标识符:可以重复声明,编译不报错. let,const声明标识符:不能重复声明,再声明编译报错. var声明的标识符作用域是当前函数,let和const是当前{块} ...

  8. Hbase的基本原理(与HIVE的区别、数据结构模型、拓扑结构、水平分区原理、场景)

    重点:HBase的基本数据模型.拓扑结构.部署配置方法,并介绍通过命令行和编程方式使用HBase的基本方法. HBase:一种列存储模式与键值对相结合的NoSQL软件,但更多的是使用列存储模式,底层的 ...

  9. Power BI八年回望记

    本人从事BI,数据仓库领域相关工作15个年头,这15年目睹了这个方向从火爆到逐渐被大数据领域不断吞食.中间零散关注Power BI好长时间,也算目睹了它的成长. 那天在网络上搜索power bi,无意 ...

  10. java试用静态图片制作gif

    参考博客:https://www.cnblogs.com/dreammyle/p/4843365.html 代码中需要的依赖: <!-- gif --> <dependency> ...