本篇文章主要讲解的是如何在Linux CentOS7操做系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理服务器。由于公司的项目一直都是托管在Window服务器IIS上,对于Linux服务器上托管.NET Core项目十分好奇。由于好奇,所以就有了这篇文章关于如何在Linux CentOS7系统中配置.NET Core运行环境,部署项目和反向代理服务器的配置。linux
是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 经过互联网到远程主机的安全链接以及它创新性的设计和特点帮助用户在复杂的网络环境中享受他们的工做。nginx
是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 之后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的须要。它采用了标准的 Windows 风格的向导,它简单的界面能与其余 Windows 应用程序紧密地协同工做,此外它还为高级用户提供了众多强劲的功能特性。redis
固然这两个工具提供了非商业用途的无偿使用权限,你只须要填写对应的信息便可。shell
下载地址:https://www.netsarang.com/en/free-for-home-school/vim
环境下载地址:https://dotnet.microsoft.com/downloadcentos
lsb_release -a
概述:.NET Core SDK 是一组库和工具,开发人员可用其建立 .NET Core 应用程序和库。浏览器
它包含如下用于构建和运行应用程序的组件:缓存
.NET Core CLI 工具。
.NET Core 库和运行时。
DotNet 驱动程序(https://docs.microsoft.com/zh-cn/dotnet/core/tools/index?tabs=netcore2x#driver)。安全
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum install dotnet-sdk-2.2
官网最新安装教程:服务器
https://dotnet.microsoft.com/download/linux-package-manager/centos7/sdk-current
dotnet --info
部署方式选择框架依赖
缘由:由于前面咱们已经安装好了.Net Core应用程序运行所须要的运行环境和对应的SDK了。
目标运行时选中可移植的
缘由:能够适用全部操做系统。
首先要进入项目目录:
cd MyDotNetApplication/
运行项目:
dotnet FirstCore.dll -d &
wget http://localhost:5000
或者
curl http://localhost:5000
warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.
出现这个警告的话,IPV6s回送的时候不可达,也就是说你只可以在服务器内部经过本地访问,可是没法经过外网ip对网站进行访问。
解决方法:
首先中止网站: 查看运行程序端口:jobs -l 结束当前程序:kill 端口号 从新运行程序,最后设置以下访问方式【固然这样子作只是为了看运行效果,下面咱们须要配置Nginx以及守护服务】: dotnet FirstCore.dll --server.urls="http://*:5000"
而后在输入外网ip+5000端口号进行访问,访问成功,页面以下图所示:
Kestrel 很是适合从 ASP.NET Core 提供动态内容。 可是,Web 服务功能不像服务器(如 IIS、Apache 或 Nginx)那样功能丰富。 反向代理服务器能够卸载 HTTP 服务器的工做负载,如提供静态内容、缓存请求、
压缩请求和 HTTPS 终端。 反向代理服务器可能驻留在专用计算机上,也可能与 HTTP 服务器一块儿部署。
反向代理服务器接收来自网络的 HTTP 请求,并将这些请求转发到 (边缘服务器)Kestrel,请求流程图以下所示:
sudo yum install epel-release
EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社区打造的、为 RHEL 及其衍生发行版(如 CentOS 等)提供高质量软件包的项目。安装了 EPEL 源以后,就像在 Fedora 上同样,经过“yum install 软件包名”,便可安装不少以前须要编译安装的软件、经常使用的软件以及一些比较流行的软件,好比如今流行的 nginx、redis 等。安装了EPEL源以后,均可以使用 EPEL 很方便的安装更新。
sudo yum install nginx
sudo service nginx start
或者:
sudo systemctl start nginx
查看Nginx的运行状态:
systemctl status nginx
用ps -ef列出进程列表,而后经过grep过滤nginx:
ps -ef | grep nginx
sudo systemctl enable nginx
service iptables status
以下图所示个人防火墙是关闭的:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
以下图所示能看到 Nginx 的默认转发网页则说明Nginx运行成功了:
若要将 Nginx 配置为反向代理服务器用来将请求转接到 ASP.NET Core 应用,请修改Nginx的默认配置文件 /etc/nginx/nginx.conf 在文本编辑器中打开它,并将内容替换为如下内容:
vim /etc/nginx/nginx.conf
替换的内容:
server { listen 80; server_name example.com *.example.com; 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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
esc+:wq 保存修改并退出vim编辑器
nginx -t
netstat -an | grep 80
nginx -s reload
提示502 Bad Gateway:
缘由:Linux CentOs中的项目没有运行!
到对应的项目目录,运行项目,输入如下命令: 进入项目目录: cd MyDotNetApplication/ 运行项目: dotnet FirstCore.dll -d &
再次访问服务器Ip,项目成功运行: