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

 

至此,问题完美解决。如有更好方案.......,请指教。

posted @ 2017-08-30 16:32  shw0099  阅读(11498)  评论(0编辑  收藏  举报