一、.NetCore网站准备与发布

  首先准备好一个ASP.NET Core Web应用程序,我这里就使用新建的示例站点作为demo演示,使用dotnet publish 命令发布网站。

  或者使用VS的发布工具进行发布,选中网站右键选择发布,然后选择文件夹形式发布

二、.net core + centos环境准备

2.1 安装centos:这里我选择的版本是CentOS-7,虚拟机选择VMware Workstation Pro,安装步骤可以到网上搜索,这里不作演示。

2.2 安装netcore:到微软.netcore官网可以找到不同系统安装.netcore的执行命令,执行下面三行命令,在centos7上安装.netcore-runtime2.1

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install aspnetcore-runtime-2.1

安装完毕之后,输入命令  dotnet  如果出现提示信息,表示安装.net core 成功,可以继续下一步操作。

包括可以查看.netcore版本号

  

2.3 安装Nginx:

第一步:sudo yum install epel-release
第二步:sudo yum install nginx
第三步:启动 sudo systemctl start nginx

在浏览器上输入Nginx所在服务器的IP地址,可以看到欢迎页表示安装成功,如果无法访问可以检查下安装Nginx步骤或者防火墙之类的。

If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic:
如果有运行防火墙,那需要允许http和https的通道访问,运行下面三个命令:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

三、上传网站

我们的示例.netcore网站已经制作并发布好了,下一步需要借助一个FTP工具 FileZilla,将发布好的网站文件上传到CentOS的 home/netcore 文件夹下。

四、启动网站并配置Nginx作反向代理

cd进入到刚才上传的网站目录,然后输入命令: dotnet  HelloNetCore2.dll 启动网站,分配的端口是5000,localhost:5000

下一步配置Nginx,将80端口映射到示例.netcore网站的5000端口

进入到etc/nginx 目录,找到nginx.config 配置文件,首先注释掉 nginx.conf 对80端口的listen,然后 nginx.conf 文件有下面一行配置

include /etc/nginx/conf.d/*.conf;

意思是会将所有conf.d 下面的所有*.conf配置都会引入进来,所以我们可以不必修改nginx.conf,而是在conf.d 下增加一个属于这个示例网站的自定义配置。

在conf.d目录下,新建一个空的netcore.conf 文件,然后输入下面配置,保存退出。执行:nginx –s reload 使其马上生效

如果一切正常,访问我们的centos服务IP地址,应该就能被Nginx处理访问到我们的NetCore站点。

但是也有可能出现以下我遇到的两种情况:

第一种:出现502错误

原因是由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。接下来我们通过一些命令解决这个问题。

yum install policycoreutils-pythonsudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginxsudo semodule -i mynginx.pp

第二种:访问centos服务IP地址的时候,被location重定向到5001端口,而5001端口是系统分配给这个站点的Https端口

与此同时,curl  netcore 开启的5000端口也没有任何东西返回;

为了研究为什么curl http://localhost:5000 没有任何输出,可以使用 tcpdump 来监听指定IP和指定端口

tcpdump -i lo tcp port 5000 and host 127.0.0.1

输入命令后,另外开启一个新的putty客户端进行 curl http://localhost:5000 请求测试
监听输出信息如下,具体解释可以参考网上资料,我们发现其中的过程优先选择使用HTTPS,这很可能是NetCore项目的默认配置造成的。

在net core官网文档查到Startup类默认是建议使用HTTPS的,解决方法有二、一是你在centos上安装好HTTPS证书,二是注释掉app.UseHttpsRedirection(); 重新发布。

注释掉,重新编译发布上传,重启站点即可。

现在访问80端口能成功转发到netcore站点的5000端口了

参考资料:

dotnet pulish 命令:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore21

linux安装netcore :https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current

how-to-install-nginx-on-centos-7:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

解决502问题:https://www.cnblogs.com/ants/p/5732337.html

netcore Https:https://docs.microsoft.com/zh-cn/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio

转载于:https://www.cnblogs.com/waynechan/p/9437934.html

.netcore部署Linux并结合Nginx反向代理 get started相关推荐

  1. 从0开始,在Linux中配置Nginx反向代理、负载均衡、session共享、动静分离

    写这篇文章花费了我近一周的时间,参考网上许多优秀的博客文章,我不敢说写的很好,至少很全很详细.本文先介绍原理部分,然后再进行实战操作,我认为这样才会有更深的理解,不过这也导致了文章篇幅很长.但是,如果 ...

  2. nginx反向代理加gitlab认证

    底层直接开辟了docker环境,结合opensumi得到一个持久化的在线编译环境(服务器ip地址+端口号,每个学生用不同的端口号),为了保证每个人的网址都只能自己用,需要在这个网址访问之前加上验证** ...

  3. 容器化单页面应用中Nginx反向代理与Kubernetes部署

    在<容器化单页面应用中RESTful API的访问>一文中,我介绍了一个在容器化环境中单页面应用访问后端服务的完整案例.这里我将继续使用这个案例,介绍一下容器化单页面应用部署的另一个场景: ...

  4. 云服务器,Linux上安装xampp,搭建node服务,云服务器Firewalld、iptables,nginx反向代理

    目录 写在前面的 前期准备 下载xampp: xampp安装步骤 1.首先链接远程linux服务器 2.xshell终端执行安装命令 3.启动:xampp服务 4.访问数据库,修改数据库密码 安装守护 ...

  5. docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...

    docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...

  6. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...

    Mac os开发者必备工具 brew,替代Linux系统中的 apt-get和yum工具,本文介绍Mac电脑安装Homebrew,并下载安装软件nginx反向代理过程. 1.安装Homebrew 在苹 ...

  7. linux nginx反向代理配置

    linux  nginx反向代理配置 location ^~/api/ {proxy_pass http://192.168.1.50:82/; }

  8. 精灵商场项目(五)--虚拟机Linux使用+Nginx反向代理

    文章目录 一.虚拟机Linux使用 1.1 Linux 介绍和使用 1.2 虚拟机配置 1.3 检查是否正常连接 1.4 虚拟机克隆 1.5 LinuxIP划分和链接 1.6 Xshell 1.6.1 ...

  9. .net5 Nginx 反向代理部署

    .net5 Nginx 反向代理部署 几个概念先了解一下 集群 多个服务器(或者软件)呢,都可以完整的完成一个业务 eg:一个业务呢有A,B,C三个流程,服务器甲可以完成A,B,C.服务器乙也可以完成 ...

最新文章

  1. spring显式获取bean
  2. 【BZOJ1022】小约翰的游戏(博弈论)
  3. if you buy grove
  4. java web 模型,从零构建轻量级Java Web框架
  5. WPF对决Silverlight:为项目选择最佳技术
  6. 网络邻居无法共享解决办法
  7. Spring之AOP实现
  8. obs捕获窗口没有窗口_学习工具 | 视频录制软件OBS
  9. 英特尔发布年度企业社会责任报告,首次定义“全球性挑战”
  10. 花生壳动态域名解析工具原理
  11. 服务器网站打开慢跟什么有关系吗,浏览器访问网站的速度很慢,跟服务器的好差有关系吗?跟域名有关系吗?...
  12. Spring深入学习之IOC与AOP
  13. 揭秘大家都在用的报表——帆软报表,专为数据分析而生!
  14. 6、编写应用程序,计算两个非零正整数的最大公约数和最小公倍数,要求两个非零正整数从键盘输入。
  15. 如何将Word压缩到最小,这个方法你该知道
  16. 【华人学者风采】杨鸣波 四川大学
  17. Java 中ArrayList中的重复数据
  18. 微生物组-宏基因组分析(线上/线下同时开课,2021.11)
  19. 解决 elementui中pagination显示英文问题
  20. ducter运维平台_专访运维管理开源平台负责人刁文波:Ducter能帮你!

热门文章

  1. 【OpenCV】OpenCV函数精讲之 -- 多通道图像混合
  2. 超赞思想!牛津大学提出 PSViT 让Transformer模型不在冗余!!!
  3. 十年千篇!人脸识别相关技术最全论文合辑
  4. 理解Hinton的Capsule Networks1
  5. kali linux中文乱码解决,kali-google-chrome中文乱码问题解决方法
  6. java cookie p3p_P3P script src 解决cookie存取的跨域问题 java 终极解决办法
  7. mac matlab 中文乱码,MAC让Matlab编辑器显示中文的方法
  8. synchronized()_JMM(四):浅谈synchronized锁
  9. Functional Interface JDK1.8
  10. 怎么查看oracle中sys的密码修改,oracle sys 密码修改