.NET Core跨平台部署

.NET Core跨平台部署

1. Windows-IIS

大家对于在IIS上部署.NET站点已经驾轻就熟了,部署.NET Core也没有什么本质区别,但是这其中仍然有一些细节是不同的,下面记录了一些我在部署时遇到的问题

1.1 安装.NET Core Windows Server Hosting

要在IIS上运行ASP.NET Core,必须安装.NET Core Windows Server Hosting

安装完成后最好重启IIS

如果没有安装该组件就直接打开部署的网站会出现 500.19 相关的配置数据无效

1.2 配置应用程序池

Core的IIS站点应用程序池的.NET CLR版本要选择 无托管代码

1.3 使用发布文件

我最开始测试的时候,仍然使用Web根目录作为网站的物理路径,但是网站无法访问,报HTTP403错误——Web 服务器被配置为不列出此目录的内容,也是就是这个文件夹下没有可以访问的文件,在查阅网上的资料后发现其他人都是使用了发布文件夹作为物理路径,生成发布版本设置相应路径后.NET Core的示例站点即可正常访问

发布文件夹结构

成功访问

2 Linux

微软官方给出了不同系统的部署方法Tutorial Guide,由于Linux有不同的版本,所以这里选择CentOS作为示例,有以下几个步骤

2.1 添加.NET产品依赖

在安装.NET之前,你需要注册微软的Key,注册产品仓库,并且安装需要的依赖,在每台机器上只需要做一次。

直接执行以下命令:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

2.2 安装.NET SDK

更新可供安装的产品,然后安装.NET SDK

输入以下命令:

sudo yum update
sudo yum install dotnet-sdk-2.2

中间有两次手动确认,然后等待安装完成即可

2.3 创建你的应用

通过输入命令就可以创建一个官方的示例.NET Core程序

dotnet new console -o myApp
cd myApp

第一条命令新建应用,第二条进入应用文件夹

通过 ls 命令我们可以看到该文件夹下只有两个文件,obj是文件夹

默认的主文件Program.cs的内容如下:

using System;

namespace myApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

2.4 运行应用

dotnet run

2.5 创建web应用

使用mkdir命令新建一个文件夹mvc,然后进入目录

创建网站

dotnet new mvc

然后发布这个网站程序

dotnet restore
dotnet publish -c release

默认的发布目录是在/bin/release/netcoreapp2.x/publish/里,可以新建一个目录拷贝进去

scp -r /root/mvc/bin/release/netcoreapp2.2/publish/* /root/www/firstapp

2.6 从外网访问web应用

完成发布后,已经可以通过执行dotnet命令来启动网站了,但是只能在内网访问,显然这不是我们想要的,要想从外网访问,我们需要反向代理服务器,这里选择Nginx

使用yum命令远程安装

sudo yum install epel-release
yum install nginx

启动

systemctl start nginx #启用Nginx
systemctl enable nginx #设置开机启动

这时候已经可以直接通过服务器的IP地址的80端口访问Nginx的测试页了,需要注意的是如果使用阿里云服务器,需要在安全组配置中开放80端口才能够访问

接下来根据需要进行一些端口的配置,dotnet默认的访问端口为5000,但是我测试的时候好像是在linux上被占用了,所以对 Program.cs 进行修改,使其可以通过其他端口访问,这里使用8080

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseUrls("http://*:8080")
        .UseStartup<Startup>();
}

改完之后需要重新生成发布,开始我使用的是微软官方的示例程序,这里为了对比端口,我在自己Windows系统下新建了一个2.1的示例程序,使用VS2017进行程序修改,发布后通过xftp再上传到Linux服务器上

然后去修改Nginx的配置,默认的路径应该是/etc/nginx/nginx.conf,在server节点下的location节点加一句 proxy_pass http://localhost:8080; 就可以

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
            proxy_pass http://localhost:8080;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

修改完成后测试并重启Nginx服务

sudo nginx -t         #测试配置
sudo nginx -s reload  #重新加载配置

配置完成之后,启动网站访问服务器IP地址的8080端口即可

但是启动网站这里存在一个问题,如果像上面那样没有使用cd命令进入网站目录启动,样式和脚本等文件的路径就会出现错误,导致页面显示不正常所以要在网站目录启动

基本的网站部署就到这里,下一次讲讲用Docker如何进行.NET Core的部署与开发

原文地址:https://www.cnblogs.com/LFeather/p/10094196.html

时间: 2024-10-11 00:54:28

.NET Core跨平台部署的相关文章

.NET Core跨平台部署于Docker(Centos)- 视频教程

(双击全屏播放) 往期教程: .NET开发框架(一)-框架介绍与视频演示 .NET开发框架(二)-框架功能简述 .NET开发框架(三)-高可用服务器端设计 .NET开发框架(四)-服务器IIS实践教程 .NET开发框架(五)-IIS上部署ASP.NET Core项目教程 .NET开发框架(六)-架构设计之IIS负载均衡(视频) .NET开发框架(七)-技术栈学习目录 .NET开发框架(八)-服务器集群之网络负载平衡(视频) .NET开发框架(九)-NLB网络负载平衡配置实战(视频) Hyper-

ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署

本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上.对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦.MSDN官方有篇文章大概讲了一下(链接),按照MSDN上面的例子用vs创建个hellomvc项目,还是踩了好多坑,将整个过程和遇到的坑说一下,希望对有需要的朋友有所帮助.(ASP.NET Core系列目录) 本文主要内容: 1.工具准备 2.CentOS 上安装.NET Core环境 3.Windows上用VS发布项目 4.项目运行测试 5.

NET Core项目部署

NET Core项目部署到linux(Centos7) 阅读目录 1.开篇说明 2.Jexus简单说明 3.Visual Studio 2015本地发布并且测试 4.配置Jexus并且部署.NET Core说明 5.其它知识点总结 回到顶部 1.开篇说明 a 上篇博客简单的说明了一下 使用.NET Core开发的一个总结,地址是:(http://www.cnblogs.com/hanyinglong/p/6442148.html),那么这篇博客我们就在上一篇博客的基础上对其代码进行部署,将其部署

.NET Core跨平台:使用.NET Core开发一个初心源商城总括

1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上,而后才能迁移出现windows上,而且效率处理方面也不再一个级别.曾经让.NET的开发者非常无奈可又不得不遵循,随着时间的推移,后来第三方公司开发了.NET可以依赖跨平台的技术Mono,我们可以简单地对其开发的程序实现跨平台.关于Mono部署ASP.NET跨平台的技术我曾经写过

在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起来非常不错,不是吗?那么,如果我们希望真正在实际的生产环境去部署和运行这个应用程序,应该怎么做呢? 通常来说,有两种方案可以选择 1. 在目标运行环境(可以是本地的服务器,也可以是云端)申请虚拟机,然后启用docker运行这些应用程序,所有的细节都可以(也必须)由你自己控制. 2. 使用

NET Core站点部署到Linux服务器

.NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上 今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemcached(memcached客户端)的问题之后,.NET 跨平台之旅迈出的重要一步.这个 ASP.NET Core 站点,既用了缓存,也有数据库访问操作,是一个典型的 Web 站点,如果它能持续稳定运

.NET Core跨平台的奥秘[上篇]:历史的枷锁

微软推出的第一个版本的.NET Framework是一个面向Windows桌面和服务器的基础框架,在此之后,为此微软根据设备自身的需求对.NET Framework进行裁剪,不断推出了针对具体设备类型的.NET Framework版本以实现针对移动.平板和嵌入式设备提供支持.除此之外,在Windows平台之外一致游荡着一只特立独行的猴子(Mono)..NET平台看起来欣欣向荣,而实际上却日薄西山,就在这个时候微软走了一条唯一正确的道路,那就是基于跨平台理念重新设计的.NET Core,以及由此驱

实战Asp.Net Core:部署应用

原文:实战Asp.Net Core:部署应用 1.前言 某一刻,你已经把 .Net Core 的程序写好了.接下来,还可以做什么呢?那就是部署了. 作为一名开发工程师,如果不会部署自己开发的应用,那么这也是不完整的.接下来,我们就来说说,如何部署我们的 .Net Core 应用程序(主要是 Asp.Net Core 应用). 2.Asp.Net Core 的部署方式 对于虚拟机中执行的语言来说,大都会有 SDK(Software Development Kit) 以及 XRE(X Runtime

.Net Core跨平台应用研究-HelloDDNS(动态域名篇)

.Net Core跨平台应用研究-HelloDDNS -玩转DDNS 摘要 为解决自己搭建的内网服务器需要域名而因没有超级用户密码不能开启光猫内置DDNS功能的问题,自己动手,基于.net core,实现动态域名的自助解析更新功能. 起因 最近学习ABP开源项目框架,因测试和展示需求,需要部署基于asp.net core的web应用.手上有一个闲置了两年的35互联基于windows IIS的虚拟主机空间,联系服务商升级支持.net core运行时,增加无托管应用程序池,等了两天,技术支持回复不能