.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;//重要的是这一句,配置文件夹中的其他内容可不用改动。
}
}