Windows Server 2003 无法布署.NET Framework4.5 应用解决方案
一、背景描述
业务服务器操作系统为Windows Server 2003,已运行几套业务系统,均基于.NET Framework3.0,4.0,近期新开发项目是基于.NET Framework 4.5,但Win2003无法安装.NET Framework4.5框架,新项目框架又不能降级。服务器只有一个对外IP,IP再不能新增。在不影响原有系统的运行,又能让新项目正常上线,问题该如何解决???
二、解决方案
在Windows 2003服务器安装虚拟机,虚拟机安装Win2008(X86)(因服务器是32位操作系统,虚拟机也只能安装32位Win2008),将新项目布署至虚拟机,外部通过win2003物理机访问win2008虚拟机。
详细解决方法如下
三、技术步骤:
1、下载免费虚拟机软件Oracle VM VirtualBox 5.1.8,并增加虚拟机“Win2008R2”,具体安装过程略过(网上大把资料)。
2、虚拟机网络设置,重点,其中win2003物理机IP:192.168.56.1,win2008虚拟机IP:10.0.2.15,
网卡连接方式:网络地址转换(NAT),并设置端口转发规则(新项目使用服务器80端口,可根据实际情况设置),至此,物理机可正常访问虚拟机80端口,如图
3、将新项目布署至win2008R2虚拟机,项目占用80端口,在虚拟机测试项目运行正常。
4、在win2003物理机安装Nginx,做为请求转发,将win2003服务器80端口的请求转发至win2008R2虚拟机80端口,具体Nginx安装及配置略过。
转发过程:外网请求-----win2003外网IP(x.x.x.x)--------win2003内网IP(192.168.56.1)-----win2008R2(10.0.2.15)
四、优化
1、Nginx 设置为Windows服务,开机启动:
借助"Windows Service Wrapper"小工具,项目地址: https://github.com/kohsuke/winsw
下载地址: http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/1.18/winsw-1.18-bin.exe
下载该工具后,将其放在 Nginx安装目录下,并重命名为nginx-service.exe,创建配置文件nginx-service.xml(名字要和工具名一样),
创建nginx-service.exe.config(为支持NET 4.0 runtime,默认只支持NET 2.0 runtime),结构如下:
nginx-service.xml 内容如下:
1 <service> 2 <id>nginx</id> 3 <name>Nginx Service</name> 4 <description>High Performance Nginx Service</description> 5 <logpath>C:\nginx\nginx-1.8.1\logs</logpath> 6 <log mode="roll-by-size"> 7 <sizeThreshold>10240</sizeThreshold> 8 <keepFiles>8</keepFiles> 9 </log> 10 <executable>C:\nginx\nginx-1.8.1\nginx.exe</executable> 11 <startarguments>-p C:\nginx\nginx-1.8.1</startarguments> 12 <stopexecutable>C:\nginx\nginx-1.8.1\nginx.exe</stopexecutable> 13 <stoparguments>-p C:\nginx\nginx-1.8.1 -s stop</stoparguments> 14 </service>
nginx-service.exe.config 内容如下:
1 <configuration> 2 <startup> 3 <supportedRuntime version="v2.0.50727" /> 4 <supportedRuntime version="v4.0" /> 5 </startup> 6 <runtime> 7 <generatePublisherEvidence enabled="false"/> 8 </runtime> 9 </configuration>
在cmd中运行如下命令安装windows服务:c:\xxx\nginx-service.exe install (卸载c:\xxx\nginx-service.exe uninstall)
2、将Win2008R2虚拟机设置为开机启动,通过服务方式报错,无法实现。通过“程序---启动”实现,启动脚本如下:
1 @echo off 2 cd D:\Program Files\Oracle\VirtualBox 3 VBoxManage startvm Win2008R2 -type headless 4 pause 5 exit
至此,问题完美解决。如有更好方案.......,请指教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2019-04-03 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作