我以前谈到过,WebMatrix(IIS Express)搭建.net 开源CMS系统方法。使用了WebMatrix 2.0+ IIS Express 8.0建立自己的网站。
现在要把它变成虚拟主机,需要改进的部分有:
1、多个网站,以及1个网站的多个iisexpress访问(伪IIS服务器集群 )。
2、iisexpress 用管理员方式自动启动。
1、修改默认配置即可,也可以直接 WebMatrix
默认配置文件位于:[我的文档]\IISExpress\config\applicationhost.config。记事本打开找到<sites></sites >:
手工添加
<site name="程序站点名" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="程序路径" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8085:192.168.1.1" />
</bindings>
</site>
要注意的是,每个网站的名字和端口要保证完全不一样,可以用不同的网站指向同一个目录来实现伪集群。
如法炮制,完全可以做到 运行9个 iis express进程,分别侦听在8080~8089端口,这样能满足实际服务器集群。
2、 用管理员方式自动启动
如果要做虚拟主机需要开机启动,iisexpress没有服务启动的方式,解决方法很多,我使用C#制作windows服务的方式,
新建一个C#windows服务项目,写入代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; namespace WindowsServiceIISexpress { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } System.Diagnostics.Process Proc; protected override void OnStart(string[] args) { System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo(); //设置外部程序名 Info.FileName = @"C:\Program Files\IIS Express\iisexpress.exe"; //设置隐藏窗口 Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //设置外部程序的启动参数(命令行参数)为test.txt Info.Arguments = "/site:JumboTCMS.luozhuang /systray:true "; //声明一个程序类 try { // //启动外部程序 // Proc = System.Diagnostics.Process.Start(Info); } catch (System.ComponentModel.Win32Exception exc) { Console.WriteLine("系统找不到指定的程序文件。\r{0} ", exc); return; } } protected override void OnStop() { if (Proc == null) { return; } Proc.Close(); } } }
然后把这个制作成服务,人员选择系统管理员,一般来说是Administrator,要注意的是,尽量保证Administrator账户启用和设置密码,不要空密码Administrator账户启动服务。
技术要点:
1、C#创建windows服务
2、windows服务的登录身份改为系统管理员,即Administrator
3、Administrator账户启用( 我印象中win7默认停用的)
这些技术希望大家baidu 查询怎么完成,这里不再详细叙述。
大家还要注意的一点就是,上面程序默认IIS express 默认配置目录是 Administrator\[我的文档]\IISExpress\config\applicationhost.config,如果你需要修改配置,请参考IISexpress.exe 命令行
命令行介绍
iisexpress [/config:config-file] [/site:site-name] [/systray:boolean]
如:
F:/Projects/IIS Express/iisexpress.exe /config:F:/Projects/luozhuang/applicationhost.config /systray:true /site:luozhuang.web
然后对上面的程序进行修改。
本人测试系统平台:
windows server 2012
iisexpress 8.0
Visual studio 2012 express
Sql server 2008R2 express
测试web应用:
JumboTCMS
discuz!NT
通过。