Apache 代替IIS,Apache下运行 ASP.NET,并且打包,实现一键安装

西安河豚软件科技有限公司             Apache代替IIS运行ASP.net,并实现一键安装

 
前言

  众所周知Asp.net运行,是仰仗IIS的。但是IIS有很大的弊端,安装维护太麻烦,不太稳定经常出一些奇奇怪怪的

误,对于经常用的开发人员来讲尚有难度,更何况是刚入门的新手那就更难了。而且IIS能不能实现和工程一键安

这个博主目前没有研究过也不知道。所以博主准备使用Apache来运行ASP.NET ,并且实现一键安装。

 

准备工作

  首先要准备好一个发布后的ASP.NET工程,然后下载Apache,博主使用的是Apache2.2,一下都是以Apache2.2为例说

的。

 

第一步:实现在Apache下运行APS.NET
1、配置Apache文件

  在 “Apache\Apache Software Foundation\Apache2.2\conf\httpd.conf”下增加ASP.NET模块,代码如下:

 

</pre><pre class="html" name="code"><span style="font-size:14px;">#asp.net
LoadModule aspdotnet_module modules/mod_aspdotnet.so
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule mod_aspdotnet.cpp>    
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"       
    <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">        
	Options FollowSymlinks        
	Order allow,deny        
	Allow from all    
    </Directory>
</IfModule>

# 配置虚拟主机
<VirtualHost *:80>    
    ServerName 127.0.0.1
    DocumentRoot "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/"
    AspNetMount / "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/"
    <Directory "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/">
        Options Indexes FollowSymLinks Includes ExecCGI
        Order allow,deny
        AllowOverride All
        Allow from all
        DirectoryIndex index.html default.aspx
    </Directory>
</VirtualHost></span>
</pre>

 

上面的代码是段,第一段是增加ASP.net的运行模块,这里解释下第二段代码,
<VirtualHost *:80> :意思是配置端口为80端口;
ServerName 127.0.0.1:这个很明显服务名称
DocumentRoot htdocs/aspweb/:这里应该写的是你ASP.net工程方的路径,这里红色的是博主自己加的,后面有用处。
如果不是想一键安装可以直接去掉,此处的主要目地是后面打包的时候,用来代替客户选择的安装路径。
2、运行ASP.NET 拷贝你发布后的ASP.NET工程到文件夹 "Apache\Apache Software Foundation\Apache2.2\htdocs\" 下,
在浏览器直接输入http://127.0.0.1就可以看到你的工程了。这样就实现了Apache代替IIS的工作

第二步:实现Apache打包一键安装(这里安装博主在解决遇到的问题以及思路顺序写)
1、博主使用的打包工具是Inno Setup 其实这个和使用什么打包工具没有任何关系,方法是直接打包Apache文件和
ASP.NET 文件,文件存放的位置按照上面提到的位置放,打包完成后发生无法自动启动Apache服务。所以...
2、博主写了2个bat文件在安装Apache的时候直接启动Apache服务,一个为停止服务。代码如下
加载、启动Apache服务 


 

按道理说,这样就可以实现了,但是在安装的时候出现问题了。所以...

    3、具体报的什么错,忘记了,总体的意思就是没有在windows注册成功Apache.web,下来怎么解决问题呢?

博主发现为什么用Apache官方的exe安装后把工程拷贝的路径下,就可以运行,而我们只是打包进去为什么就不行

了呢?于是博主发现问题在官方安装的时候在你的计

算机 【C:\Windows\assembly】下有一个叫做Apache.web,而我安装后没有这个东西,于是博主想用DOS命令写

一个拷贝进去不就行了吗?所以...

  4、博主准备写拷贝的时候发现,我要把什么文件给拷贝进去?博主想把

C:\Windows\assembly\Apache.web】给拷贝出来,结果是不行的,这里面的文件是不

能拷贝的只有一个卸载和查看和属性。这次我们最急切的就是要在windows下注册Apache.web简单的说就是要

在【C:\Windows\assembly\】文件夹下出现Apache.web,博主不知道怎么能注册进去,于是就行拷贝,但是

这个文件夹不能拷贝,那么DOS有个命令【Subst】直接把它虚拟成一个驱动器B盘不就能操作了吗?

下来博主先写一个bat把【C:\Windows\assembly\】个虚拟成一个驱动器,然后手动进去把Apache.web给拷

贝出来放在一个文件夹 【file】面去 这个下面的路径给大家看看

Apache\Apache Software Foundation\Apache2.2

\regasmnet\file\Apache.Web\2.2.0.2006__9b9b842f49b86351】这个文件

夹下有3个文件分别是 【 __AssemblyInfo__.ini】 、【Apache.Web.dll】 、

【Apache.Web.Helpers.netmodule】这样我们有了这个文件了 ,下来继续打包..

 

      5、写一个DOS命令,意思就是先把【C:\Windows\assembly\】虚拟成一个驱动器【B】,然后把刚才 【file】直

接拷贝进去,然后把驱动器B删除。代码如下:

<span style="font-size:18px;">Subst b: %windir%\assembly 
xcopy /e file B:\GAC
Subst b: /d</span>

这里为什么要这么费劲的虚拟成驱动器然后在拷贝在删除,原因就是这个文件夹不能操作,说白了博主不知道怎么注

册进去。这个是个歪招但是问题解决了,如果谁知道

正招记得留言或者发邮件哦。

6、这样打包就没有问题了,主要要把以上3个【Bat】和文件夹【Fiel】放进去一起打包进去

 

7、下来附上Inno setup 打包脚本,有注释的

 

<span style="font-size:14px;">; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.</span>
<span style="font-size:14px;">[Setup]
AppName=XXX系统
AppVerName=XXX系统 1.0
DefaultDirName={pf}\Training
DefaultGroupName=XXX系统
UninstallDisplayIcon={app}\SetUp.exe
Compression=none
SolidCompression=yes
OutputDir=c:\output

[Files]
Source: "E:\Apache\Apache Software Foundation\Apache2.2\*"; DestDir: "{app}"; Excludes: "*\conf\httpd.conf"; Flags:recursesubdirs createallsubdirs;
Source: "E:\Apache\mod_aspdotnet-2.2.0.2006-setup-r2.msi.msi"; DestDir: "{app}"
Source: "F:\httpd.conf"; DestDir: "{app}\conf\";AfterInstall: AfterMyProgInstall('httpd.conf');
Source: "E:\Apache\register.bat"; DestDir: "{app}" ;
Source: "E:\Apache\register.bat"; DestDir: "{app}";AfterInstall: AfterMyProgInstall('register.bat');
Source: "E:\Apache\unregister.bat"; DestDir: "{app}" ;
Source: "E:\Apache\unregister.bat"; DestDir: "{app}";AfterInstall: AfterMyProgInstall('unregister.bat');

;安装完成后执行bat文件启动服务
[Run]
Filename: "{app}\regasmnet\regestAspnet.bat";
Filename: "{app}\register.bat";

;卸载完成后执行bat文件停止并且卸载服务
[UninstallRun]
Filename: "{app}\unregister.bat";
  
[Icons]
Name: "{group}\在线培训系统"; Filename: "{app}\在线培训系统"

; -- 替换<novesoftAppPath>为用户安装时选择的路径的方法
[Code]
var
  sFn: String;
  sConfig: String;
procedure AfterMyProgInstall(S: String);
begin
  sFn := ExpandConstant(CurrentFileName);
  LoadStringFromFile(sFn, sConfig);
  StringChange(sConfig, '<AppPath>', ExpandConstant('{app}'));
  SaveStringToFile(sFn, sConfig, false);
end;</span>

 

 

8、说明

使用Inno Setup 5 打包工具打包,“安装配置.txt”是打包使用的脚本。

regestAspnet.bat 是注册Asp.net运行必要文件脚本,在“安装配置.txt”中使用,路径要根据情况修改。

register.bat 是Apache服务注册以及服务启动的命令脚本,在“安装配置.txt”中使用

unregister.bat 是Apache服务卸载已经服务停止的命令脚本,在安装配置.txt”中使用.

Apache Software Foundation\Apache2.2\ 下的文件时Apache的安装后的文件。

Apache Software Foundation\Apache2.2\htdocs\aspweb\ 放置的是 “在线学习系统”的发布文件。

regasmnet文件夹下的文件时Asp.net运行Apache的必要文件不可缺少。

Apache Software Foundation\Apache2.2\conf\httpd.conf 是Apache的配置文件,要在Apahce下运行Asp.net

 

注释:以上为本博主一个字一个字敲出来的,如果有什么不对的地方还请大家指正,博主最希望的就是有人用

其他的办法也实现了该功,希望您不要吝啬,发布出来博主学习学习。博主认为技术是为商业服务的,但是

术人员应该Open的,这样大家才能相互学习,一起提高!

博主邮箱Lia_77@163.com

博主网址http://www.hetunsoft.com/
 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
让你的apache支持asp,服务器架设必备   1下载iasp的win32版:iASP2.1.01.exe,10M左右。   2 安装apache。   3 双击iASP2.1.01.exe,开始安装。安提示做即可。   我的安装路径为:c:\IASP2101   4 安装完毕后,提示是否现在配置iasp。当然选择:是。   5 配置:   第一步:代理服务(proxy)选择:instant asp native servlet support   第二步:WEB SERVER选择:apache。(可以不管它提示)   第三步:选择apache的配置文件:httpd.conf的位置。我的为:c:\apache\conf\httpd.conf   版本选择1.3.2X(根据您的apache版本选择)。   proxy:如果您有固定ip,添入您的固定ip。如果没有,那就添:127.0.0.1。   port: 这是apache与iasp之间的代理接口。使用默认(9098)即可。   server manager port:远程管理端口,选择默认(9095)即可。   6 说明: iaspapache的配置文件httpd.conf最后加入了以下语句:   # iASP Setting   LoadModule iasp_module "C:/IASP2101/bin/apache/win32/1.3.20/iasp.dll"   Alias /iasp "C:/IASP2101"   IaspConfig server "C:/IASP2101/properties/server.properties"   IaspConfig rules "C:/IASP2101/properties/rules.properties"   更改完毕后,保存,重启apache   7 执行:开始->程序->Instant ASP 2.1.01->Install iASP as NT Service   这样,iasp就被加到了win2000 server的服务中。   执行:开始->程序->Instant ASP 2.1.01->Start Instant ASP   这样,iasp就被立即打开。apache可以支持asp了!   忙了一个小时,我终于装上了win32版的iasp。下面就说一下我的安装步骤。   1 去百度找个iasp的win32版:iASP2.1.01.exe,10M左右。   2 确定您的win2000 server 已经安装了jdk,apache。我装的为:   apache_1.3.27-win32-x86-no_src.exe   jdk140.exe   3 双击iASP2.1.01.exe,开始安装。安提示做即可。我的安装路径为:c:\IASP2101   4 安装完毕后,提示是否现在配置iasp。当然选择:是。   5 配置:   第一步:代理服务(proxy)选择:instant asp native servlet support   第二步:WEB SERVER选择:apache。(可以不管它提示)   第三步:选择apache的配置文件:httpd.conf的位置。本人的为:c:\apache\conf\httpd.conf   版本选择1.3.2X,根据您的apache版本选择(注意最后一个选项为:“1.3.2X”)。   proxy:如果您有固定ip,添入您的固定ip。如果没有,那就添:127.0.0.1。   port: 这是apache与iasp之间的代理接口。使用默认(9098)即可。   server manager port:远程管理端口,选择默认(9095)即可。   第四步:配置完成。   6 说明: iaspapache的配置文件httpd.conf最后加入了以下语句:   # iASP Setting   LoadModule iasp_module "C:/IASP2101/bin/apache/win32/1.3.20/iasp.dll"   Alias /iasp "C:/IASP2101"   IaspConfig server "C:/IASP2101/properties/server.properties"   IaspConfig rules "C:/IASP2101/properties/rules.properties"   7 通过更改httpd.conf更改apache的默认首页:   DirectoryIndex index.htm   DirectoryIndex index.php   DirectoryIndex index.asp   更改完毕后,保存,重启apache   8 执行:开始->程序->Instant ASP 2.1.01->Install iASP as NT Service   这样,iasp就被加到了win2000 server的服务中。   执行:开始->程序->Instant ASP 2.1.01->Start Instant ASP   这样,iasp就被立即打开。apache可以支持asp了!   例子:index.asp中写入此句:〈%response.write("我成功了!"%〉 ,保存到apache的网页根目录。   在浏览器中写:http://您的ip:apache端口号/ 回车,看到 “我成功了!” 您的iasp安装成功了!   执行:开始->程序->Instant ASP 2.1.01->Start admin   您还可以通过http://您的ip:9095登录远程管理来管理iasp。默认用户名密码:admin。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值