博文背景:
最近想用.Net Core进行做毕业设计,于是在73ic去上云买了一台云服务器,,博主觉得逐浪云最好的在于服务器可以随时更换镜像(0成本快速更换window->Linux),而且服务器网速超级快,基本滿足日常的使用。
---------------------
配置前提
Window服务器
Windows Server 2008 R2及以上版本
注意事项: 服务器千万不要选择window server 2008 SP2 !
Windows server 2008 是基于Windows vista 的服务器系统,有32位和64位两个版本.
Windows server 2008 R2是基于Windows 7的服务器操作系统只有64位版.
Windows Server 2008 SP2表示是在Windows server 2008基础上添加了SP2的补丁,全称是:Windows Server 2008 Service Pack (SP) 2。
步骤一 : 首先配置IIS
1 . 低版本window server(如2008R2)
打开控制面板 -> 程序 -> 程序和功能 -> 打开或关闭Windows功能 -> 角色 -> 添加角色 -> 选择web服务器 -> 按需勾选需要的服务
2 . 高版本window server(如2016版本)
按window -> 服务器管理器 ->添加角色 ->选择web服务器 -> 按需勾选需要的服务
然后点击下一步进行安装即可。
然后进入 控制面板 > 管理工具 > Internet 信息服务(IIS)管理器
便可看到IIS管理器,为了方便以后使用,win10的话可以固定到开始桌面,其余window操作系统可以选择发送到桌面快捷方式。
步骤二: 安装.NET Core Windows Server Hosting软件包
1 . 在安裝.NET Core Windows Server Hosting软件包之前获取并安装Microsoft Visual C ++ 2015 Redistributable
2 . 在服务器上安装.NET Core Windows Server Hosting软件包。该软件包安装了.NET Core Runtime,.NET Core Library和ASP.NET Core Module。该模块在IIS和Kestrel服务器之间创建反向代理(点击可查看Kestrel原理)。
3 . 重新启动系统或cmd 执行net stop was / y,然后从命令提示符处启动net start w3svc,以更改系统环境变量的Path,操作完以后我们打开IIS管理工具,可以在处理程序映射看到aspNetCore。
4 . 安装.NET Core 2.0 SDK
注意事项:
1 : 如果安装.NET Core Windows Server Hosting不成功的话查看服务器版本是否是window server2008R2以上
2 : 安装完一定要重新启动系统或cmd执行net stop was / y,然后从命令提示符处启动net start w3svc
3 : 环境变量存在dotnet(如下图)才可以在web.config中这样使用
<aspNetCore processPath="dotnet" arguments=".\core.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
步骤三: 部署.NetCore程序
1 . 在IIS管理器中,创建一个新的网站,写上站点名称,并将物理路径设置为部署的应用程序文件夹(或者直接将DefaultAppPool改为无托管代码,将程序部署在此)
2 . 将应用程序池设置为无托管代码。
步骤四: 部署完可能遇到的问题
这里仅记录博主折腾半天才解决的问题:
1 . 出现任何无法运行的问题都应该去查看事件查看器
低版本server(如2008R2):
控制面板 > 管理工具 ->事件查看器
高版本(如2016): 直接按window ->事件查看器
2 . 查看发现报这个错误
Application ‘MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/CORE’ with physical root ‘C:\core\’ failed to start process with commandline ‘.\dotnet.exe .\core.dll’, ErrorCode = ‘0x80070002 : 0.(如下图)
出现问题思考:
1.1 一开始以为是系统变量没有dotnet.exe,查看发现有。
1.2 折腾了半天Github和Google,看了官方文档博主都已进行尝试依旧无效(文章下面有Micorsoft官方文档)。
1.3 怀疑或许是本地的.net core版本及服务器配置的版本不同导致,尝试改变配置文件,无奈失败。
1.4 CMD管理员进入自己部署上去的应用程序目录,直接执行报错的内容的程序,尝试希望报个没权限的错误什么的,惊喜的是出现了想要的结果(如下图)。
1.5 发现果然是版本的问题呀啊啊啊,开心又生气,更改版本重新部署了一遍,果然成功了,开心的写下这篇博文。
最后引言
过程确实令人苦恼又期待,结果却总是让人觉得这一切探索的过程都是值的的,如果读者在部署过程中遇到了任何问题或者发现文章有错误,可以在评论区留言,期待更多的交流。
附上Microsoft官方查阅文档:
[1]https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#supported-operating-systems
[2]https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/aspnet-core-module?tabs=aspnetcore2x
[3]https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x