一、背景描述
業務服務器操作系統為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
至此,問題完美解決。如有更好方案.......,請指教。