NetCore2.x 跨平台开发 三 web项目创建与发布

.Net Core 跨平台开发 三 web项目创建与发布

此内容将分为四部分(环境搭建、项目之间的引用与Nuget引用、web项目创建与发布、ef core 使用)

本章为第三部分web项目创建与发布。

目前NetCore项目虽然有各种类型,总的来说就是控制台程序或Web程序,所以本章主要介绍如何创建一个 Asp.net core mvc 项目,实现NetCore Web项目打包发布。

1、 创建Asp.Net Core MVC

创建MVC项目估计大家会都会其实很简单就是一个命令行。

dotnet new mvc -o HelloWorldWeb

创建完成后我们可以进入HelloWorldWeb项目路径并且运行项目

cd HelloWorldWeb
dotnet run

如果看到类似以下内容就表示项目已经成功运行,可直接通过浏览器访问。

Now listening on: http://localhost:49712
Application started. Press Ctrl+C to shut down.

这里我的本地浏览地址为:http://localhost:49712

2、项目打包

项目打包前最好能明确要发布到什么的系统环境中,因为NetCore是跨平台所以可以在Windows\Linux\MaxOS都可以运行。

虽然我是在Linux上编写的代码如果我要求需要让我发布到Server2008系统的IIS中,那么就可以使用一下命令

dotnet publish -r win7-x64

这样即可生成一个Server2008系统上可用的发布包

完整的运行时标识(RID)可在微软官方文档中查看:https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog

还有一个重要的内容是目标框架,生成发布包时可选择最终NetCore框架版本。

dotnet publish -r win7-x64 -f netcoreapp2.0

这样表示使用Net Core2.0

完整的目标框架版本:https://docs.microsoft.com/zh-cn/dotnet/standard/frameworks

在dotnet publish中还有几个命令行参数,我个人觉得其他的不重要只有运行时标识和目标框架比较重要。

完整的publish命令说明:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore2x

3、IIS、Nginx 运行发布包

接下来我们将生成后的发布包发布至Web容器中,执行publish命令行后会想项目bin目录中出现相应的publish文件夹

比如dotnet publish -r win7-x64 -f netcoreapp2.0,生成的发布包路径为

 /bin/Debug/netcoreapp2.0/win7-x64/publish

将整个publish文件夹拷贝至需要发布的服务器即可

因为上面使用的命令行生成的发布包是在Server2008中运行的,所以我们先介绍在IIS中新建NetCore网站。

首先需要先下载Windows Server Hosting安装至服务器

下载地址:https://www.microsoft.com/net/download/core#/runtime

安装完成后就是正常的IIS创建步骤,我默认大家知道什么建立哈。中间有疑问的同学可以加QQ群。
在创建完成后要注意在应用程序连接池中对应对应连接池版本。

Net版本:无托管代码
托管管道模式:集成

这样就发布完成可以在浏览器访问。

如果是Linux系统这里以OpenSUSE系统为例

dotnet publish -r opensuse-x64 -f netcoreapp2.0

拷贝对应publish文件夹去opensuse系统中,请确保服务器中已经能正常使用nginx。首先在publish文件夹中使用

dotnet run

运行项目,运行成功后5000端口将被占用,之后我们只需要修改nginx配置文件
/etc/nginx/conf.d/*.conf;

server {
    listen 80;

    #root /usr/share/nginx/html;
    #index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name helloworldweb;

    location / {
        proxy_pass http://localhost:5000;//重要的是这一句,配置文件夹中的其他内容可不用改动。

    }
}